Before, old conversations that were left still occurred in the list (only adding+updating was done, but never deleting)
also, the list is up to date when coming back from chat. Otherwise there may be unread messages shown for a short moment which were already read.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
ic_notification.xml was not existing/not used in android talk app, but on brander there is code to replace ic_notification.xml with a custom icon.
ic_notification.xml is now created with the same icon as for ic_logo.xml and used for notifications. So from now on branded versions have the ability to overwrite the icon.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
The get-room request in CallNotificationActivity was sometimes too slow which caused the activity to be unresponsive.
With this commit, the room is first loaded before the user gets a notification.
For now all necessary values are passed as intent extras. In the future with offline support, there might be reasons to load it from DB in CallNotificationActivity.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
this seems to be a relict caused by conductor back then.
CallNotificationActivity is opened directly.
There shouldn't have been any scenario anymore when it would be opened by MainActivity.
Back then with conductor, this was done because there must have been an activity to open which then opened a controller.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
To support federated rooms, capabilities have to be checked from the room which now also has capabilities.
If room is not federated, capabilities fromuser are still checked.
This is why CapabilitiesUtil had to be refactored to accept SpreedCapabilities which can come from room or user.
Other than that, many other changes were made as a result of this change.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
show test notification from
occ notification:test-push --talk username
This will directly show the push notification without to fetch any data from nextcloud instance.
Additionally some additions to documentation were made
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- Note to self option should only appear if conversation is available
- Added ic_edit_note_24_xml
- Implemented MVVM functions for cleaner data flow
- Added the option to the XML
- Works for Voice Messages
- Works for Files(and Gifs) + captions
- Works for GeoLocation Messages
- Added SnackBar
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
- Fix injection in GetFirebasePushTokenWorker.
injection was not setup correctly in GetFirebasePushTokenWorker so the appPreferences were null. This resulted in the invinite loading screen during account setup if somehow onNewToken did not set the token.
- avoid to register push on every load of ConversationList.
- call GetFirebasePushTokenWorker instead of PushRegistrationWorker to make sure the firebase token is set(if onNewToken somehow fails to set it). Other than that, only call PushRegistrationWorker directly in NCFirebaseMessagingService as there the token is set.
- add logging
- trigger GetFirebasePushTokenWorker daily with periodical worker (instead monthly), and combine this with PushRegistrationWorker as this is defined inside GetFirebasePushTokenWorker
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
crash:
E Failed to get NC notification
retrofit2.adapter.rxjava2.HttpException: HTTP 404
at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:57)
at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(BodyObservable.java:38)
at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(CallExecuteObservable.java:48)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(BodyObservable.java:35)
at io.reactivex.Observable.subscribe(Observable.java:12284)
at io.reactivex.internal.operators.observable.ObservableSubscribeOn$SubscribeTask.run(ObservableSubscribeOn.java:96)
at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:608)
at io.reactivex.internal.schedulers.ScheduledRunnable.run(ScheduledRunnable.java:66)
at io.reactivex.internal.schedulers.ScheduledRunnable.call(ScheduledRunnable.java:57)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)
2023-11-30 10:48:11.049 5352-5597 WM-WorkerWrapper com.nextcloud.talk2 I Worker result SUCCESS for Work [ id=f899eadb-9fd0-4bdf-8cdf-a1ea4a1aa11b, tags={ com.nextcloud.talk.jobs.NotificationWorker } ]
2023-11-30 10:48:11.056 5352-5352 AndroidRuntime com.nextcloud.talk2 D Shutting down VM
2023-11-30 10:48:11.058 5352-5352 AndroidRuntime com.nextcloud.talk2 E FATAL EXCEPTION: main
Process: com.nextcloud.talk2, PID: 5352
java.lang.IllegalArgumentException: No suitable parent found from the given view. Please provide a valid view.
at com.google.android.material.snackbar.Snackbar.makeInternal(Snackbar.java:200)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- replace remaining controllers with activities
- remove conductor lib
- modify some code related to account management and conductor
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
How to test:
add
.doOnNext {
throw (RuntimeException("Exception!!!!!!!!!!!!!!!!!!!!!"))
}
after
.subscribeOn(Schedulers.io())
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Whenever there was an error when unregistering from notifications, the user was not deleted.
This could lead to multiple bugs.
Furthermore, external signaling server connection and arbitrary storage is now always handled for user deletion, which was not the case before.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- extract dialog to SaveToStorageDialogFragment
- add ability to save files of other mimetypes than images
- use MaterialAlertDialogBuilder
- save files to matching folders depending on mimeType
- show toast
- change download icon
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
The "operation view" at the bottom is replaced by snackbars.
I have removed the join via public link feature for now. This was buggy, complex and incomplete. This feature must be reimplemented in a more useful place (login screen, so you can use it as a guest without using an existing instance).
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- Added new Dialog Fragment
- Added API functions for handling reminders
- Added JSON Models for those reminders
- Implemented the reminder functions using MVVM
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
sending too much data via intent always is a bad pattern which can lead to TransactionTooLargeException.
When OpenAI translation is enabled, the capabilities contain a ton of translation combinations. These capabilities are contained in 'currentUser' as well in 'selectedConversation'. So, TransactionTooLargeException was thrown.
this PR:
- avoids passing too much data as parcelables in intents (esp. conversation and user)
- introduces MVVM patterns to load required data (esp conversation) from backend (for now via requests, in the future from database first)
- introduces ConversationModel which is created out of the Conversation json model
- loads user data via injection when possible
- creates some quickfixes in ConversationBottomDialog, EntryMenuController and OperationsMenuController.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>