Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changes to enable unified push notifications in generic build. Signed… #4169

Open
wants to merge 1,182 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
1182 commits
Select commit Hold shift + click to select a range
4c7d105
remove popup bubble dependency
sowjanyakch Dec 23, 2024
9f5fa4a
Analysis: update lint results to reflect reduced error/warning count
invalid-email-address Dec 23, 2024
8d0c948
add animation to "unread mentions" button + change design
mahibi Jan 8, 2025
d8bc113
Merge pull request #4474 from nextcloud/popup_bubble
mahibi Jan 8, 2025
e5c443c
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 9, 2025
5fd966f
$s -> $d
tobiasKaminsky Jan 9, 2025
744280a
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 9, 2025
4547717
Merge pull request #4584 from nextcloud/correctTranslation
mahibi Jan 9, 2025
d89393c
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 9, 2025
47afa10
Update dependency com.android.tools.build:gradle to v8.8.0
renovate[bot] Jan 9, 2025
5887835
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 10, 2025
46c5b47
Update dependency com.github.spotbugs.snom:spotbugs-gradle-plugin to …
renovate[bot] Jan 10, 2025
0b80573
Merge pull request #4589 from nextcloud/renovate/com.github.spotbugs.…
AndyScherzinger Jan 10, 2025
cf2a597
Merge pull request #4588 from nextcloud/renovate/com.android.tools.bu…
AndyScherzinger Jan 10, 2025
2956ca9
Update dependency com.github.spotbugs.snom:spotbugs-gradle-plugin to …
renovate[bot] Jan 10, 2025
8218616
fix translation for polls_option_delete
mahibi Jan 10, 2025
5e72621
Merge pull request #4591 from nextcloud/correctTranslationPollsDelete
mahibi Jan 10, 2025
6d1ffbd
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 10, 2025
d114142
Migrating away from java.util.Date to java.time
rapterjet2004 Dec 17, 2024
eae4e43
Small fixes - new theming
rapterjet2004 Dec 18, 2024
63cb98e
Deleted old fragment + xml
rapterjet2004 Dec 19, 2024
73ed4cb
linter
rapterjet2004 Dec 20, 2024
a8f1d37
oops
rapterjet2004 Dec 20, 2024
490cd32
Impl changes, unable to replicate 1.)
rapterjet2004 Jan 7, 2025
5053c0e
fix SPDX header, remove comments
mahibi Jan 10, 2025
6a01c59
Analysis: update lint results to reflect reduced error/warning count
invalid-email-address Jan 10, 2025
a34e0c6
Merge pull request #4552 from nextcloud/issue-4274-migrate-javautil-d…
mahibi Jan 10, 2025
9cb40d4
add referenceId for "normal" sending of chat message
mahibi Nov 6, 2024
3597cf2
use repository in MessageInputViewModel instead datasource
mahibi Nov 6, 2024
c33bd99
fixes after some wrong merge after merge conflict
mahibi Nov 21, 2024
80d2e75
WIP add temporary message
mahibi Nov 22, 2024
048551e
temp message is added (values are still wrong)
mahibi Dec 4, 2024
0e682ed
WIP temp messages are replaced when same refId received from sever
mahibi Dec 4, 2024
a78c9e1
update temp messages also for initial pull of messages
mahibi Dec 9, 2024
e1c1574
show x when sending failed
mahibi Dec 10, 2024
3f5f2f0
works okay (no resend logic yet, offline message mode not reworked)
mahibi Dec 11, 2024
0f53244
prepare to replace no-internet-connection message handling (sorry Jul…
mahibi Dec 11, 2024
ec466e5
replace CharSequence with String for sendChatMessage
mahibi Dec 15, 2024
1bfb3ba
WIP add options to temp messages
mahibi Dec 20, 2024
f88b1f1
fix after merge conflicts
mahibi Dec 27, 2024
5ac130a
resend queued messages when connection gained
mahibi Dec 27, 2024
e9f3863
delete temp messages
mahibi Dec 27, 2024
2c397ad
add manual resend button
mahibi Dec 27, 2024
06c8509
add retry logic for sending messages, hide resend button when offline
mahibi Jan 2, 2025
656be3f
revert ReadStatus SENDING and FAILED
mahibi Jan 2, 2025
f62941f
simplify "sent messages are queued" hint
mahibi Jan 2, 2025
cca4e69
Skip to send message when device is offline
mahibi Jan 2, 2025
7d9c2fd
simplify to refresh message
mahibi Jan 2, 2025
a5049fb
adjust some pixels to avoid jump of message list
mahibi Jan 2, 2025
b529d13
delete roomId comments
mahibi Jan 2, 2025
29362fa
add logging for unread messages popup bug
mahibi Jan 3, 2025
0356f5a
fix to not accidentally show unread messages popup
mahibi Jan 3, 2025
8f1f22f
Fix duplicate "Today"-bug
mahibi Jan 3, 2025
ab007fc
resolve codacy/ktlint warnings
mahibi Jan 3, 2025
3dca00b
resolve warnings
mahibi Jan 3, 2025
560f955
comment in opHelperFactory
mahibi Jan 6, 2025
a58607b
resolve detekt warnings
mahibi Jan 6, 2025
4c79513
add DB migration
mahibi Jan 6, 2025
3fdaa4b
fix parent message for temp messages
mahibi Jan 6, 2025
f665b1c
save "silent" in chat messages (incl DB)
mahibi Jan 6, 2025
1731ca0
remove flickering of status icons
mahibi Jan 6, 2025
1504e51
add strings for message status icons
mahibi Jan 6, 2025
3094054
change visibility of temp message actions
mahibi Jan 6, 2025
aa5b4d0
remove click listener for failed messages (use default longclick)
mahibi Jan 6, 2025
68065d7
fix lint warning
mahibi Jan 6, 2025
cd09636
change icons for message sending and messages sending failed
mahibi Jan 10, 2025
4f4ac5e
Analysis: update lint results to reflect reduced error/warning count
invalid-email-address Jan 10, 2025
ca9b3c9
Merge pull request #4590 from nextcloud/renovate/com.github.spotbugs.…
AndyScherzinger Jan 10, 2025
6ed20f4
Update daggerVersion to v2.55
renovate[bot] Jan 10, 2025
88bb5d5
Merge pull request #4422 from nextcloud/feature/4378/addTemporaryMess…
mahibi Jan 10, 2025
60bae87
Merge pull request #4587 from nextcloud/renovate/daggerversion
github-actions[bot] Jan 10, 2025
ba29db8
Update github/codeql-action action to v3.28.1
renovate[bot] Jan 10, 2025
38018d1
Update actions/upload-artifact action to v4.6.0
renovate[bot] Jan 10, 2025
f829b8a
Merge pull request #4595 from nextcloud/renovate/actions-upload-artif…
AndyScherzinger Jan 10, 2025
85a0f08
Merge pull request #4594 from nextcloud/renovate/github-codeql-action…
AndyScherzinger Jan 10, 2025
7851de6
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 11, 2025
d3b3052
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 12, 2025
6638f44
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 13, 2025
36716fa
Weekly 21.0.0 Alpha 09
nextcloud-android-bot Jan 13, 2025
f0d7ff5
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 14, 2025
19aec54
figured it out - was an error with offline conversations not syncing.…
rapterjet2004 Dec 23, 2024
f39b1dd
Merge pull request #4567 from nextcloud/issue-4454-fix-msg-input-frag…
mahibi Jan 14, 2025
172eddb
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 15, 2025
db8c4de
fix to not cut off unread mentions bubble
mahibi Jan 15, 2025
4045f8f
🔄 synced local '.github/workflows/' with remote 'config/workflows/'
nextcloud-android-bot Jan 15, 2025
209a616
Merge pull request #4603 from nextcloud/bugfix/4599/unreadMentionCutoff
AndyScherzinger Jan 15, 2025
fdb38de
Merge pull request #4604 from nextcloud/repo-sync/android-config/master
AndyScherzinger Jan 15, 2025
6c67bf7
timeout option immediate
parneet-guraya Sep 9, 2024
6241c68
Merge pull request #4204 from nextcloud/timeout-immediate
mahibi Jan 15, 2025
13e5626
hopefully fix NPE for currentUser
mahibi Jan 15, 2025
44c84dd
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 16, 2025
ce7ed87
Merge pull request #4611 from nextcloud/bugfix/4610/fixNpeCurrentUser…
mahibi Jan 16, 2025
6e1114d
fix TooManyRequestsException
mahibi Jan 14, 2025
ed13698
Update dependency androidx.datastore:datastore-core to v1.1.2
renovate[bot] Jan 16, 2025
894c788
Merge pull request #4613 from nextcloud/renovate/androidx.datastore-d…
github-actions[bot] Jan 16, 2025
0eabff6
Update dependency androidx.datastore:datastore-preferences to v1.1.2
renovate[bot] Jan 16, 2025
6a4edc9
Update dependency com.github.spotbugs.snom:spotbugs-gradle-plugin to …
renovate[bot] Jan 16, 2025
69ddeaa
use lifecycleScope from chatActivity in OutcomingTextMessageViewHolder
mahibi Jan 16, 2025
2a4ca9f
Merge pull request #4614 from nextcloud/renovate/androidx.datastore-d…
github-actions[bot] Jan 16, 2025
35d18cc
Merge pull request #4615 from nextcloud/renovate/com.github.spotbugs.…
github-actions[bot] Jan 16, 2025
383546e
Merge pull request #4598 from nextcloud/bugfix/4503/fixTooManyRequest…
mahibi Jan 16, 2025
9e7996b
style(reaction): make reactions background rounded instead of pill-st…
AndyScherzinger Jan 16, 2025
b26b598
style(reactions): Align reactions with text for preview messages
AndyScherzinger Jan 16, 2025
a2dac5e
style(reactions): ensure correct color coding of own reaction backgro…
AndyScherzinger Jan 16, 2025
0a6a1a7
style(reactions): Add default vertical spacing at top of reactions
AndyScherzinger Jan 16, 2025
e4088d0
style(lint): Fix formatting
AndyScherzinger Jan 16, 2025
9e3840c
style(lint): replace magic number with constant
AndyScherzinger Jan 16, 2025
9fcd466
style(icons): Update pdf icon to latest server version / material sym…
AndyScherzinger Jan 16, 2025
115f5e3
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 17, 2025
c127261
Update dependency com.github.spotbugs.snom:spotbugs-gradle-plugin to …
renovate[bot] Jan 17, 2025
86db9f7
Merge pull request #4625 from nextcloud/renovate/com.github.spotbugs.…
AndyScherzinger Jan 17, 2025
35f9e33
make sure that canDeleteConversation is used to determine if "Delete …
mahibi Jan 17, 2025
779c162
Merge pull request #4620 from nextcloud/fix/4557/reactionsBackground
mahibi Jan 17, 2025
20612c8
avoid shimmer animations overlay with chat messages
mahibi Jan 17, 2025
5535bed
no "unread messages" popup for invisible messages
mahibi Jan 17, 2025
fba4e94
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 18, 2025
aa42f5c
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 20, 2025
d450c47
Weekly 21.0.0 Alpha 10
nextcloud-android-bot Jan 20, 2025
28ffb7f
enable to select authentication cert in server selection screen
mahibi Jan 20, 2025
3522ab7
Merge pull request #4634 from nextcloud/enableCertSelection
mahibi Jan 20, 2025
f9928ef
chore: switch uploadArtifact.sh to remote.php/dav
joshtrichards Jan 18, 2025
6492308
chore: use remote.php/dav in analysis-wrapper.sh
joshtrichards Jan 18, 2025
e1a0f20
Merge pull request #4633 from nextcloud/jtr/chore-1478
mahibi Jan 20, 2025
136ad56
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 21, 2025
4bf5704
chore(deps): update actions/stale action to v9.1.0
renovate[bot] Jan 21, 2025
6c5cbd5
Merge pull request #4637 from nextcloud/renovate/actions-stale-9.x
AndyScherzinger Jan 21, 2025
3da9501
chore(deps): update github/codeql-action action to v3.28.2
renovate[bot] Jan 21, 2025
e9946f6
Merge pull request #4639 from nextcloud/renovate/github-codeql-action…
github-actions[bot] Jan 21, 2025
5048465
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 22, 2025
b6e341b
cancel scope when onStop is reached
mahibi Jan 22, 2025
1f105d4
check if scope is active during long polling
mahibi Jan 22, 2025
9b6b012
remove scope cancelation for handleChatOnBackPress (replace with life…
mahibi Jan 22, 2025
d2d040d
Merge pull request #4629 from nextcloud/bugfix/4626/avoidChatLoadingS…
mahibi Jan 22, 2025
b172f68
Merge pull request #4627 from nextcloud/feature/4570/rework-can-leave…
mahibi Jan 22, 2025
4f49dea
Merge pull request #4630 from nextcloud/bugfix/4628/noUnreadMessagesB…
mahibi Jan 22, 2025
1ac537b
Merge pull request #4641 from nextcloud/bugfix/4605/fixDuplicateMessages
rapterjet2004 Jan 22, 2025
2be89d5
chore(deps): update github/codeql-action action to v3.28.3
renovate[bot] Jan 22, 2025
22e2f75
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 23, 2025
7d0c6d6
Merge pull request #4644 from nextcloud/renovate/github-codeql-action…
AndyScherzinger Jan 23, 2025
3330fc8
fix shimmer and "offlineNoMessages"-info handling
mahibi Jan 23, 2025
4c6c08b
Merge pull request #4645 from nextcloud/bugfix/4643/fixShimmerAndOffl…
mahibi Jan 23, 2025
a6055e5
Archived conversation improvements
rapterjet2004 Jan 16, 2025
71af112
change "No conversations archived" screen design
mahibi Jan 23, 2025
3427f4c
change "Archive conversation" design in conversation-info screen
mahibi Jan 23, 2025
7ac8c24
Show snackbar on archive/unarchive from bottomDialog
mahibi Jan 23, 2025
b3f32a0
Merge pull request #4624 from nextcloud/issue-4607-4608-archive-conve…
mahibi Jan 23, 2025
b44296c
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 23, 2025
f89efa1
bump version to 21.1.0 Alpha 1
mahibi Jan 23, 2025
09a5dd6
chore(deps): update github/codeql-action action to v3.28.4
renovate[bot] Jan 23, 2025
61cba43
fix(deps): update dependency androidx.compose:compose-bom to v2025
renovate[bot] Jan 23, 2025
09cb8f7
Merge pull request #4619 from nextcloud/renovate/androidx.compose-com…
github-actions[bot] Jan 23, 2025
8cbaff4
Merge pull request #4646 from nextcloud/renovate/github-codeql-action…
AndyScherzinger Jan 23, 2025
34806b6
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 24, 2025
296947d
chore(deps): update dependency gradle to v8.12.1
renovate[bot] Jan 24, 2025
f8068ac
Merge pull request #4651 from nextcloud/renovate/gradle-8.x
AndyScherzinger Jan 24, 2025
9cdb2ce
chore(deps): update github/codeql-action action to v3.28.5
renovate[bot] Jan 24, 2025
eabe3f5
Merge pull request #4653 from nextcloud/renovate/github-codeql-action…
github-actions[bot] Jan 25, 2025
be6cc85
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 25, 2025
ad572b7
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 26, 2025
97988a4
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 27, 2025
be235c8
Weekly 21.1.0 Alpha 02
nextcloud-android-bot Jan 27, 2025
296ca07
fix(deps): update dependency com.github.spotbugs.snom:spotbugs-gradle…
renovate[bot] Jan 27, 2025
28e9e90
Merge pull request #4656 from nextcloud/renovate/com.github.spotbugs.…
github-actions[bot] Jan 27, 2025
f13cc85
🔄 synced local '.github/workflows/' with remote 'config/workflows/'
nextcloud-android-bot Jan 28, 2025
61854b7
Merge pull request #4660 from nextcloud/repo-sync/android-config/master
AndyScherzinger Jan 28, 2025
c7c287a
message of type actorId = "sample" should show talk logo avatar
sowjanyakch Jan 28, 2025
bf97d93
remove duplicated dependencies
mahibi Jan 28, 2025
25df519
switched the btns in DateTimeCompose
rapterjet2004 Jan 27, 2025
0918cdd
Merge pull request #4663 from nextcloud/show_changelog_avatar
mahibi Jan 28, 2025
c58df32
Merge pull request #4659 from nextcloud/changing-btn-layout-date-time…
mahibi Jan 28, 2025
307ebd3
ensure that getAnyUserAndSetAsActive will set other users to current=…
mahibi Jan 28, 2025
22b8b59
fix to not execute getAnyUserAndSetAsActive() until userRepository.ge…
mahibi Jan 28, 2025
b69f215
self heal if multiple current users exist
mahibi Jan 28, 2025
9aa9918
Merge pull request #4664 from nextcloud/fixDuplicatedDependencies
rapterjet2004 Jan 29, 2025
4880dcf
Fix(l10n): Update translations from Transifex
nextcloud-bot Jan 30, 2025
1b6681d
🔄 synced local '.github/workflows/' with remote 'config/workflows/'
nextcloud-android-bot Jan 30, 2025
42005a3
Merge pull request #4670 from nextcloud/repo-sync/android-config/master
AndyScherzinger Jan 30, 2025
b7d4cf6
Fix(l10n): Update translations from Transifex
nextcloud-bot Feb 1, 2025
667a67b
Weekly 21.1.0 Alpha 03
nextcloud-android-bot Feb 3, 2025
a098de9
Fix(l10n): Update translations from Transifex
nextcloud-bot Feb 3, 2025
3d2f999
Merge pull request #4667 from nextcloud/bugfix/4492/fixMissingUsersInUI
rapterjet2004 Feb 3, 2025
f6415e2
chore(CI): Updating pr-feedback.yml workflow from template
nextcloud-bot Feb 4, 2025
5c32bfd
Merge pull request #4680 from nextcloud/feat/workflow-auto-update-pr-…
AndyScherzinger Feb 4, 2025
a9461ff
bump webrtc lib to 132.6834.0
mahibi Feb 4, 2025
4fcbbea
update verification metadata
mahibi Feb 4, 2025
17086d8
Merge pull request #4679 from nextcloud/updateWebRtcLibTo132.6834.0
mahibi Feb 5, 2025
b23ab8b
chore(deps): update plugin org.jetbrains.kotlin.plugin.compose to v2.…
renovate[bot] Feb 5, 2025
9e6b1b5
Merge pull request #4662 from nextcloud/renovate/org.jetbrains.kotlin…
github-actions[bot] Feb 5, 2025
6be40a3
chore(deps): update ubuntu:noble docker digest to 7229784
renovate[bot] Feb 5, 2025
f981a56
Merge pull request #4682 from nextcloud/renovate/ubuntu-noble
github-actions[bot] Feb 5, 2025
6f09598
chore(deps): update plugin com.google.devtools.ksp to v2.1.10-1.0.29
renovate[bot] Feb 5, 2025
f41e552
Merge pull request #4683 from nextcloud/renovate/com.google.devtools.…
github-actions[bot] Feb 5, 2025
cef7075
fix(deps): update dependency androidx.compose.runtime:runtime to v1.7.7
renovate[bot] Feb 5, 2025
905d97d
Merge pull request #4684 from nextcloud/renovate/androidx.compose.run…
github-actions[bot] Feb 5, 2025
39391c8
calculate conversation description length
sowjanyakch Jan 27, 2025
b7074c5
set limit on conversation description
sowjanyakch Jan 27, 2025
bbedbf5
rename variable
sowjanyakch Jan 27, 2025
fdcff12
ktlintFormat
sowjanyakch Jan 27, 2025
ef78314
set limit on description
sowjanyakch Jan 29, 2025
1663fca
ktlintFormat
sowjanyakch Jan 30, 2025
2b30988
Added character counter to xml
rapterjet2004 Feb 3, 2025
c49a8f1
fix(deps): update dependency androidx.compose.ui:ui-test-junit4 to v1…
renovate[bot] Feb 5, 2025
c3fc9da
Merge pull request #4685 from nextcloud/renovate/androidx.compose.ui-…
github-actions[bot] Feb 5, 2025
cb7c3f5
fix(deps): update dependency androidx.compose:compose-bom to v2025.01.01
renovate[bot] Feb 5, 2025
0e4e2f3
Merge pull request #4658 from nextcloud/conversation_description_length
mahibi Feb 5, 2025
e5b5a81
Merge pull request #4686 from nextcloud/renovate/androidx.compose-com…
github-actions[bot] Feb 5, 2025
09a6cfb
avoid duplicated messages after sending
mahibi Feb 5, 2025
43064a7
fix(deps): update dependency joda-time:joda-time to v2.13.1
renovate[bot] Feb 5, 2025
31c194a
Merge pull request #4689 from nextcloud/renovate/joda-time-joda-time-2.x
github-actions[bot] Feb 5, 2025
ac9b7fe
chore(deps): update actions/setup-java action to v4.7.0
renovate[bot] Feb 5, 2025
872446f
Merge pull request #4691 from nextcloud/renovate/actions-setup-java-4.x
github-actions[bot] Feb 5, 2025
6a872a5
chore(deps): update gradle/actions action to v4.3.0
renovate[bot] Feb 5, 2025
221a77b
Merge pull request #4692 from nextcloud/renovate/gradle-actions-4.x
github-actions[bot] Feb 5, 2025
4632d20
Fix(l10n): Update translations from Transifex
nextcloud-bot Feb 6, 2025
4425f82
Improved Search
rapterjet2004 Jan 31, 2025
93fa89f
linter -_-
rapterjet2004 Feb 4, 2025
b707ceb
Added intent handling on item click
rapterjet2004 Feb 5, 2025
f4a1b73
replace hardcoded number for 1:1 roomtype
mahibi Feb 6, 2025
423fbbe
fix nullable createRoom param for FakeRepository classes
mahibi Feb 6, 2025
69a9b96
lower SEARCH_MIN_CHARS to 1
mahibi Feb 6, 2025
b747765
Merge pull request #4674 from nextcloud/issue-4453-4657-improve-main-…
mahibi Feb 6, 2025
34a8ca6
fix(deps): update dependency com.google.code.gson:gson to v2.12.1
renovate[bot] Feb 6, 2025
02a9498
Merge pull request #4694 from nextcloud/renovate/com.google.code.gson…
github-actions[bot] Feb 6, 2025
11fc9fa
Merge pull request #4688 from nextcloud/bugfix/noid/avoidDuplicatedMe…
mahibi Feb 6, 2025
6d22fcb
changes to enable unified push notifications in generic build. Signed…
Sep 7, 2024
f78ec24
added wakelock when unified push messages received to allow notificat…
Dec 19, 2024
c6bb690
rebased onto remote master
Feb 6, 2025
f8eb01c
Merge remote-tracking branch 'origin/unified_push_nextcloud_notificat…
Feb 6, 2025
f02257d
add team support for mentions
sowjanyakch Jan 31, 2025
0de8a3e
add avatar for autocomplete mentions in recycler view
sowjanyakch Feb 3, 2025
64856cc
set chip avatar for team placeholder
sowjanyakch Feb 3, 2025
d927f8d
use proper avatar for circles
sowjanyakch Feb 3, 2025
ba37c7b
add mention support for circles
sowjanyakch Feb 4, 2025
65707f2
add icon
sowjanyakch Feb 4, 2025
c08a004
format code
sowjanyakch Feb 4, 2025
20a8a38
make system messages work for teams
sowjanyakch Feb 4, 2025
e40f367
format code
sowjanyakch Feb 5, 2025
2d1c940
resize icons
sowjanyakch Feb 7, 2025
13fe915
bump detekt issues by 2
mahibi Feb 7, 2025
c72c83b
add license headers
mahibi Feb 7, 2025
798c024
Merge pull request #4678 from nextcloud/team_support
mahibi Feb 7, 2025
de9eb22
chore(deps): update github/codeql-action action to v3.28.9
renovate[bot] Feb 7, 2025
4c26c2f
Merge pull request #4698 from nextcloud/renovate/github-codeql-action…
github-actions[bot] Feb 7, 2025
5219eeb
replace userManager.currentUser usage by currentUserProvider usage
mahibi Feb 6, 2025
40bcf74
Merge pull request #4695 from nextcloud/accessCurrentUserOnlyByCurren…
sowjanyakch Feb 7, 2025
1dd0b7d
changes to enable unified push notifications in generic build. Signed…
Sep 7, 2024
d03a97c
added wakelock when unified push messages received to allow notificat…
Dec 19, 2024
7c01825
rebased onto remote master
Feb 6, 2025
9c442b9
changes to enable unified push notifications in generic build. Signed…
Sep 7, 2024
736fe47
Merge remote-tracking branch 'origin/unified_push_nextcloud_notificat…
Feb 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
alt="Get it on F-Droid"
height="80">](https://f-droid.org/packages/com.nextcloud.talk2/)

Please note that Notifications won't work with the F-Droid version due to missing Google Play Services.
Please note that the F-Droid version uses UnifiedPush notifications and the Play Store version uses Google Play
Services notifications.

|||||||
|---|---|---|---|---|---|
Expand Down Expand Up @@ -63,7 +64,8 @@ Easy starting points are also reviewing [pull requests](https://github.com/nextc
So you would like to contribute by testing? Awesome, we appreciate that very much.

To report a bug for the alpha or beta version, just create an issue on github like you would for the stable version and
provide the version number. Please remember that Google Services are necessary to receive push notifications.
provide the version number. Please remember that Google Services are necessary to receive push notifications in the
Play Store version whereas the F-Droid version uses UnifiedPush notifications.

#### Beta versions (Release Candidates) :package:

Expand Down
5 changes: 4 additions & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,9 @@ dependencies {
implementation 'com.github.nextcloud.android-common:ui:0.23.0'
implementation 'com.github.nextcloud-deps:android-talk-webrtc:121.6167.0'

// unified push library for generic flavour
genericImplementation 'org.codeberg.UnifiedPush:android-connector:2.4.0'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
genericImplementation 'org.codeberg.UnifiedPush:android-connector:2.4.0'
genericImplementation 'org.unifiedpush.android:connector:2.5.0'


gplayImplementation 'com.google.android.gms:play-services-base:18.5.0'
gplayImplementation "com.google.firebase:firebase-messaging:24.0.1"

Expand Down Expand Up @@ -418,4 +421,4 @@ detekt {

ksp {
arg('room.schemaLocation', "$projectDir/schemas")
}
}
22 changes: 22 additions & 0 deletions app/src/generic/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!--
~ Nextcloud Talk - Android Client
~
~ SPDX-FileCopyrightText: 2017-2024 Nextcloud GmbH and Nextcloud contributors
~ SPDX-FileCopyrightText: 2021-2023 Marcel Hibbe <[email protected]>
~ SPDX-FileCopyrightText: 2017-2019 Mario Danic <[email protected]>
~ SPDX-License-Identifier: GPL-3.0-or-later
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<application>
<receiver android:exported="true" android:enabled="true" android:name=".receivers.UnifiedPush">
<intent-filter>
<action android:name="org.unifiedpush.android.connector.MESSAGE"/>
<action android:name="org.unifiedpush.android.connector.UNREGISTERED"/>
<action android:name="org.unifiedpush.android.connector.NEW_ENDPOINT"/>
<action android:name="org.unifiedpush.android.connector.REGISTRATION_FAILED"/>
</intent-filter>
</receiver>
</application>
</manifest>
163 changes: 163 additions & 0 deletions app/src/generic/java/com/nextcloud/talk/receivers/UnifiedPush.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
/*
* Nextcloud Talk - Android Client
*
* SPDX-FileCopyrightText: 2024 Your Name <[email protected]>
* SPDX-License-Identifier: GPL-3.0-or-later
*/

package com.nextcloud.talk.receivers

import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.text.SpannableString
import android.text.method.LinkMovementMethod
import android.text.util.Linkify
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import androidx.work.Data
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.MainActivity
import com.nextcloud.talk.jobs.NotificationWorker
import com.nextcloud.talk.utils.bundle.BundleKeys
import org.greenrobot.eventbus.EventBus
import org.unifiedpush.android.connector.MessagingReceiver
import org.unifiedpush.android.connector.PREF_MASTER
import org.unifiedpush.android.connector.PREF_MASTER_NO_DISTRIB_DIALOG_ACK
import org.unifiedpush.android.connector.UnifiedPush

class UnifiedPush : MessagingReceiver() {
private val TAG: String? = UnifiedPush::class.java.simpleName

companion object {
fun getNumberOfDistributorsAvailable(context: Context) : Int {
return UnifiedPush.getDistributors(context).size
}

private fun resetSeenNoDistributorsInfo(context: Context) {
context.getSharedPreferences(PREF_MASTER, Context.MODE_PRIVATE)
.edit().putBoolean(PREF_MASTER_NO_DISTRIB_DIALOG_ACK, false).apply()
}

fun registerForPushMessaging(context: Context, accountName: String): Boolean {
// if a distributor is registered and available, re-register to ensure in sync
if (UnifiedPush.getSavedDistributor(context) !== null) {
UnifiedPush.registerApp(context, accountName)
return false
}

val distributors = UnifiedPush.getDistributors(context)

// if no distributors available
if (distributors.isEmpty()) {
// if user has already been shown the info dialog, return
val preferences = context.getSharedPreferences(PREF_MASTER, Context.MODE_PRIVATE)
if (preferences.getBoolean(PREF_MASTER_NO_DISTRIB_DIALOG_ACK, false) == true) {
return false
}

// show user some info about unified push
val message = TextView(context)
val s = SpannableString(context.getString(R.string.unified_push_no_distributors_dialog_text))
Linkify.addLinks(s, Linkify.WEB_URLS)
message.text = s
message.movementMethod = LinkMovementMethod.getInstance()
message.setPadding(32, 32, 32, 32)
AlertDialog.Builder(context)
.setTitle(context.getString(R.string.unified_push_no_distributors_dialog_title))
.setView(message)
.setPositiveButton(context.getString(R.string.nc_ok)) {
_, _ -> preferences.edit().putBoolean(PREF_MASTER_NO_DISTRIB_DIALOG_ACK, true).apply()
}.setOnDismissListener {
// send message to main activity that it can move on to it's next default activity
EventBus.getDefault().post(MainActivity.ProceedToConversationsListMessageEvent())
}.show()

return true // have a dialog to show, need main activity to wait
}

// 1 distributor available
if (distributors.size == 1) {
UnifiedPush.saveDistributor(context, distributors.first())
UnifiedPush.registerApp(context, accountName)
return false
}

// multiple distributors available, show dialog for user to choose
val distributorsArray = distributors.toTypedArray()
val distributorsNameArray = distributorsArray.map {
try {
val ai = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
context.packageManager.getApplicationInfo(
it,
PackageManager.ApplicationInfoFlags.of(PackageManager.GET_META_DATA.toLong())
)
} else {
context.packageManager.getApplicationInfo(it, 0)
}
context.packageManager.getApplicationLabel(ai)
} catch (e: PackageManager.NameNotFoundException) {
it
} as String
}.toTypedArray()

AlertDialog.Builder(context)
.setTitle(context.getString(R.string.unified_push_choose_distributor_title))
.setItems(distributorsNameArray) { _, which ->
val distributor = distributorsArray[which]
UnifiedPush.saveDistributor(context, distributor)
UnifiedPush.registerApp(context, accountName)
}.setOnDismissListener {
// send message to main activity that it can move on to it's next default activity
EventBus.getDefault().post(MainActivity.ProceedToConversationsListMessageEvent())
}.show()

return true // have a dialog to show, need main activity to wait
}

fun unregisterForPushMessaging(context: Context, accountName: String) {
// try and unregister with unified push distributor
UnifiedPush.unregisterApp(context, instance = accountName)
resetSeenNoDistributorsInfo(context)
}
}

override fun onMessage(context: Context, message: ByteArray, instance: String) {
Log.d(TAG, "UP onMessage")

val messageString = message.toString(Charsets.UTF_8)

if (messageString.isNotEmpty() && instance.isNotEmpty()) {
val messageData = Data.Builder()
.putString(BundleKeys.KEY_NOTIFICATION_SUBJECT, messageString)
.putString(BundleKeys.KEY_NOTIFICATION_SIGNATURE, instance)
.putInt(
BundleKeys.KEY_NOTIFICATION_BACKEND_TYPE, NotificationWorker.Companion.BackendType.UNIFIED_PUSH.value)
.build()
val notificationWork =
OneTimeWorkRequest.Builder(NotificationWorker::class.java).setInputData(messageData)
.build()
WorkManager.getInstance().enqueue(notificationWork)
}
}

override fun onNewEndpoint(context: Context, endpoint: String, instance: String) {
// called when a new endpoint is to be used for sending push messages
// do nothing
}

override fun onRegistrationFailed(context: Context, instance: String) {
// called when the registration is not possible, eg. no network
// just dump the registration to make sure it is cleaned up. re-register will be auto-reattempted
unregisterForPushMessaging(context, instance)

}

override fun onUnregistered(context: Context, instance: String) {
// called when this application is remotely unregistered from receiving push messages
unregisterForPushMessaging(context, instance)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
package com.nextcloud.talk.utils;


import android.content.Context;
import com.nextcloud.talk.interfaces.ClosedInterface;
import com.nextcloud.talk.receivers.UnifiedPush;
import androidx.annotation.NonNull;


public class ClosedInterfaceImpl implements ClosedInterface {
@Override
Expand All @@ -17,12 +21,29 @@ public void providerInstallerInstallIfNeededAsync() {
}

@Override
public boolean isGooglePlayServicesAvailable() {
return false;
public boolean isPushMessagingServiceAvailable(Context context) {
return (UnifiedPush.Companion.getNumberOfDistributorsAvailable(context) > 0);
}

@Override
public String pushMessagingProvider() {
return "unifiedpush";
}

@Override
public boolean registerWithServer(@NonNull Context context, String username) {
// unified push available in generic build
if (username == null)
return false;
return UnifiedPush.Companion.registerForPushMessaging(context, username);
}

@NonNull
@Override
public void setUpPushTokenRegistration() {
// no push notifications for generic build variant
public void unregisterWithServer(@NonNull Context context, @NonNull String username) {
// unified push available in generic build
if (username == null)
return;
UnifiedPush.Companion.unregisterForPushMessaging(context, username);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ class NCFirebaseMessagingService : FirebaseMessagingService() {
val messageData = Data.Builder()
.putString(BundleKeys.KEY_NOTIFICATION_SUBJECT, subject)
.putString(BundleKeys.KEY_NOTIFICATION_SIGNATURE, signature)
.putInt(BundleKeys.KEY_NOTIFICATION_BACKEND_TYPE, NotificationWorker.Companion.BackendType.FIREBASE_CLOUD_MESSAGING.value)
.build()
val notificationWork =
OneTimeWorkRequest.Builder(NotificationWorker::class.java).setInputData(messageData)
Expand Down
18 changes: 16 additions & 2 deletions app/src/gplay/java/com/nextcloud/talk/utils/ClosedInterfaceImpl.kt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
*/
package com.nextcloud.talk.utils

import android.content.Context
import android.content.Intent
import android.util.Log
import androidx.work.ExistingPeriodicWorkPolicy
Expand All @@ -18,6 +19,7 @@ import autodagger.AutoInjector
import com.google.android.gms.common.ConnectionResult
import com.google.android.gms.common.GoogleApiAvailability
import com.google.android.gms.security.ProviderInstaller
import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.interfaces.ClosedInterface
import com.nextcloud.talk.jobs.GetFirebasePushTokenWorker
Expand All @@ -26,7 +28,13 @@ import java.util.concurrent.TimeUnit
@AutoInjector(NextcloudTalkApplication::class)
class ClosedInterfaceImpl : ClosedInterface, ProviderInstaller.ProviderInstallListener {

override val isGooglePlayServicesAvailable: Boolean = isGPlayServicesAvailable()
override fun isPushMessagingServiceAvailable(context: Context): Boolean {
return isGPlayServicesAvailable()
}

override fun pushMessagingProvider(): String {
return "gplay"
}

override fun providerInstallerInstallIfNeededAsync() {
NextcloudTalkApplication.sharedApplication?.let {
Expand Down Expand Up @@ -59,11 +67,17 @@ class ClosedInterfaceImpl : ClosedInterface, ProviderInstaller.ProviderInstallLi
}
}

override fun setUpPushTokenRegistration() {
override fun registerWithServer(context: Context, username: String?): Boolean {
val firebasePushTokenWorker = OneTimeWorkRequest.Builder(GetFirebasePushTokenWorker::class.java).build()
WorkManager.getInstance().enqueue(firebasePushTokenWorker)

setUpPeriodicTokenRefreshFromFCM()

return false
}

override fun unregisterWithServer(context: Context, username: String?) {
// do nothing
}

private fun setUpPeriodicTokenRefreshFromFCM() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
package com.nextcloud.talk.account

import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.ActivityInfo
import android.os.Bundle
Expand Down Expand Up @@ -235,6 +236,8 @@ class AccountVerificationActivity : BaseActivity() {
}

private fun storeProfile(displayName: String?, userId: String, capabilitiesOverall: CapabilitiesOverall) {
val activityContext: Context = this // for capture by lambda used by subscribe() below

userManager.storeProfile(
username,
UserManager.UserAttributes(
Expand All @@ -260,8 +263,8 @@ class AccountVerificationActivity : BaseActivity() {
@SuppressLint("SetTextI18n")
override fun onSuccess(user: User) {
internalAccountId = user.id!!
if (ClosedInterfaceImpl().isGooglePlayServicesAvailable) {
ClosedInterfaceImpl().setUpPushTokenRegistration()
if (ClosedInterfaceImpl().isPushMessagingServiceAvailable(context)) {
ClosedInterfaceImpl().registerWithServer(activityContext, user.username)
} else {
Log.w(TAG, "Skipping push registration.")
runOnUiThread {
Expand Down
Loading