Commit Graph

327 Commits

Author SHA1 Message Date
sowjanyakch
de637871a6
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:07 +01:00
sowjanyakch
e5789c0cf6
set bundle keys in CallNotificationActivity
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:07 +01:00
sowjanyakch
a39ca256de
add const val for error code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:36 +01:00
sowjanyakch
6c4685dce5
handle errors properly
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:36 +01:00
sowjanyakch
f6489eb10d
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:36 +01:00
sowjanyakch
a07a5446be
make worker listenable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:36 +01:00
sowjanyakch
aa5fd42c59
handle workResult
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:35 +01:00
sowjanyakch
088e6fd79f
Start unique work
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:35 +01:00
sowjanyakch
e04f2362e3
remove unused imports
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:35 +01:00
sowjanyakch
f6824f94f1
Convert LeaveConversationWorker from java to Kotlin
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:35 +01:00
sowjanyakch
be55a908d5
Rename .java to .kt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-05 14:53:35 +01:00
rapterjet2004
cc717b25f6
got deleting working and added attempts logic again
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:51:06 +02:00
rapterjet2004
df2c6cfc06
impl marcel suggestions + adding deleting cache option
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:50:58 +02:00
Marcel Hibbe
da04f536f7
remove dao methods to delete data when user is removed
...will be done by foreign keys cascading. Therefore, also added foreign key to ChatBlockEntity

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
e951b3d53a
fix to load newest conversations (online first)
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>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
2408d639e4
Offline support for conversations and chats
Authors: Julius Linus and Marcel Hibbe

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:03 +02:00
Marcel Hibbe
dfe07979a9
use notification logo from separate xml file
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>
2024-05-22 14:42:23 +02:00
Marcel Hibbe
2485b14009
get room in NotificationWorker so CallNotificationActivity doesn't have to wait for it
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>
2024-04-15 14:33:27 +02:00
Marcel Hibbe
7e1ebebd5d
remove unnecessary KEY_FROM_NOTIFICATION_START_CALL handling
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>
2024-04-15 14:33:26 +02:00
Andy Scherzinger
f5a4274e54
Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-03-29 15:42:11 +01:00
Andy Scherzinger
3eabf9bb83
Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-03-29 12:55:12 +01:00
Marcel Hibbe
754b825096
pass spreedCapabilities instead user to CapabilitiesUtil
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>
2024-03-01 11:25:11 +01:00
Marcel Hibbe
8c47b89ce5
fix ktlint warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-02-27 15:15:56 +01:00
Marcel Hibbe
fde635d61b
show test notification + modify doc
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>
2024-02-26 16:52:41 +01:00
Marcel Hibbe
c13f2589ff
handle federation invitations
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-02-26 16:45:55 +01:00
parneet-guraya
d63fc58a62
remove class level notification property
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-02-16 11:30:03 +01:00
parneet-guraya
d6201cf796
use new builder for failure notification
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-02-16 11:30:03 +01:00
parneet-guraya
94a1238f28
create notification group using summary notification
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-02-16 11:30:03 +01:00
Julius Linus
d45277beaf
Impl "Add to Notes Action"
- 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>
2024-02-01 12:18:06 +01:00
parneet-guraya
6f88c8bcbd
add cancel upload functionality
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-01-17 09:21:32 +01:00
Marcel Hibbe
c7a72aaf4a
add diagnose screen and permission warnings in settings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-01-12 09:54:28 +01:00
Andy Scherzinger
67b2752360
ktlint: Expected a single space
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-12-05 16:32:21 +01:00
Andy Scherzinger
627e9d5c20
ktlint: No whitespace expected between opening parenthesis and first parameter name
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-12-05 16:17:31 +01:00
Marcel Hibbe
119310ecc7
Add fixes and changes to push handling
- 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>
2023-12-01 13:35:53 +01:00
Marcel Hibbe
cc6f3fff9a
avoid crash when NC notification could not be retrieved
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>
2023-11-30 11:44:52 +01:00
Marcel Hibbe
591d6dc3e8
remove conductor
- 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>
2023-11-23 13:26:01 +01:00
Marcel Hibbe
fce209695a
close Call notification when onError is triggered.
How to test:
add

.doOnNext {
	throw (RuntimeException("Exception!!!!!!!!!!!!!!!!!!!!!"))
}

after
.subscribeOn(Schedulers.io())

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-11-23 12:44:03 +01:00
Marcel Hibbe
423ce97b4e
Fix to delete user when unregister for notifications failed
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>
2023-11-21 10:35:30 +01:00
Marcel Hibbe
640007b421
followup changes to save file feature
- 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>
2023-11-08 11:39:19 +01:00
fariba khandani
dd9eb35e72 saveFiles to internal storage 2023-11-07 13:31:58 +01:00
Marcel Hibbe
32dbe70399
Remove EntryMenuController and OperationMenuController
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>
2023-10-10 18:25:20 +02:00
Julius Linus
79af073d5a
handling error 429 in phonebook sync
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2023-09-29 10:30:19 +02:00
Julius Linus
96437a133e
Notify me Later
- 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>
2023-08-31 10:31:21 +02:00
Marcel Hibbe
bc425bc0d3
apply changes by ktlintFormat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-08-24 09:45:57 +02:00
Smarshall
5e1cd4f718 Fixed Codacy Static Code Analysis issue 2023-08-23 17:51:12 +05:30
Smarshall
62a79fa144 Fixed Unresolved reference: ColorRole and Exceeded max line length issue 2023-08-23 17:04:28 +05:30
Smarshall
a447196257 Replaced all the Toasts with Snackbar 2023-08-19 17:38:52 +05:30
Marcel Hibbe
61ff44a643 add logging and minor refactoring
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-18 13:15:01 +02:00
Marcel Hibbe
8f3a3570e9
Add logging for websockets
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-13 13:32:43 +02:00
Marcel Hibbe
817ea1ab64 Avoid to send conversation and user via intent
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>
2023-06-30 07:30:18 +02:00