Commit Graph

645 Commits

Author SHA1 Message Date
Andy Scherzinger
c2683e0ed0
Add SPDX header
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-03-23 17:18:18 +01:00
sowjanyakch
353cabc442 Fix Recents Screen
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-03-13 17:37:56 +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
a3ecd82d13
rename MagicWebRTCUtils to WebRTCUtils
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-02-27 15:23:11 +01:00
Marcel Hibbe
c13f2589ff
handle federation invitations
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-02-26 16:45:55 +01:00
Marcel Hibbe
2a856bc77a
avoid to send "speaking" data channel message when mic is muted
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-02-16 13:06:56 +01:00
Andy Scherzinger
7fe6dd066b Register ReceiverFlags when registering receivers for Android 13+
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-01-30 14:26:08 +01:00
Marcel Hibbe
8507e96bc5
Merge pull request #3502 from nextcloud/bugfix/3491/fixErrorWhenDecliningRecConsent
avoid error when declining recording consent
2023-12-05 18:57:35 +01:00
Marcel Hibbe
6ac9fa5fff
avoid error when declining recording consent
When declining recording consent, 404 might be returned when leaving the call (because the call was not joined before).
It might not be the best option to handle this via onError, but for the moment (18.0.0 release) it's the most robust/lowest-risk solution without to change some state handling to check if the call was joined).
finish was added which makes sense anyway, but for declining recording consent the error snackbar was removed.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-12-05 16:20:28 +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
Andy Scherzinger
f2b86a9d86
ktlint: Enum entry should start on a separate line
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-12-05 16:01:00 +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
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
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
68ab275efc
Avoid Npe for call with a guest without name
11-02 03:45:20.115 27450 27450 D CallActivity: initGridAdapter
11-02 03:45:20.116 27450 27450 D CallActivity: removeParticipantDisplayItem
11-02 03:45:20.116 27450 27450 D CallActivity: removeParticipantDisplayItem
11-02 03:45:20.119 27450 27450 W MagicWebRTCUtils: No payload types with name H264
11-02 03:45:20.141 27450 27450 W System.err: java.lang.NullPointerException: Parameter specified as non-null is null: method com.nextcloud.talk.activities.CallActiv
ity$OfferAnswerNickProvider$WebRtcMessageListener.onOffer, parameter nick
11-02 03:45:20.141 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity$OfferAnswerNickProvider$WebRtcMessageListener.onOffer(Unknown Source:7
)
11-02 03:45:20.141 27450 27450 W System.err:    at com.nextcloud.talk.signaling.WebRtcMessageNotifier.notifyOffer(WebRtcMessageNotifier.java:99)
11-02 03:45:20.141 27450 27450 W System.err:    at com.nextcloud.talk.signaling.SignalingMessageReceiver.processSignalingMessage(SignalingMessageReceiver.java:746)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity$InternalSignalingMessageReceiver.process(CallActivity.kt:2707)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity.receivedSignalingMessage(CallActivity.kt:1889)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity.receivedSignalingMessages(CallActivity.kt:1865)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity.access$receivedSignalingMessages(CallActivity.kt:190)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity$pullSignalingMessages$5.onNext(CallActivity.kt:1768)
11-02 03:45:20.142 27450 27450 W System.err:    at com.nextcloud.talk.activities.CallActivity$pullSignalingMessages$5.onNext(CallActivity.kt:1762)
11-02 03:45:20.142 27450 27450 W System.err:    at io.reactivex.internal.util.HalfSerializer.onNext(HalfSerializer.java:107)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableRetryWhen$RepeatWhenObserver.onNext(ObservableRetryWhen.java
:100)
11-02 03:45:20.143 27450 30048 W MagicWebRTCUtils: No payload types with name H264
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableDoOnEach$DoOnEachObserver.onNext(ObservableDoOnEach.java:101
)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableTakeWhile$TakeWhileObserver.onNext(ObservableTakeWhile.java:
88)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.util.HalfSerializer.onNext(HalfSerializer.java:107)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableRepeatWhen$RepeatWhenObserver.onNext(ObservableRepeatWhen.ja
va:100)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.
java:201)
11-02 03:45:20.143 27450 27450 W System.err:    at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255
)
11-02 03:45:20.144 27450 27450 W System.err:    at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
11-02 03:45:20.144 27450 27450 W System.err:    at android.os.Handler.handleCallback(Handler.java:938)
11-02 03:45:20.144 27450 27450 W System.err:    at android.os.Handler.dispatchMessage(Handler.java:99)
11-02 03:45:20.144 27450 27450 W System.err:    at android.os.Looper.loop(Looper.java:223)
11-02 03:45:20.144 27450 27450 W System.err:    at android.app.ActivityThread.main(ActivityThread.java:7664)
11-02 03:45:20.144 27450 27450 W System.err:    at java.lang.reflect.Method.invoke(Native Method)
11-02 03:45:20.144 27450 27450 W System.err:    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
11-02 03:45:20.144 27450 27450 W System.err:    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
11-02 03:45:20.145 27450 27450 E AndroidRuntime: FATAL EXCEPTION: main

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-11-03 10:44:39 +01:00
Marcel Hibbe
bfbc352448
Add recording consent feature
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-10-27 16:48:05 +02:00
parneet-guraya
665711afa5
fix warnings
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-10-11 16:13:28 +05:30
parneet-guraya
bb81da23a1
remove deprecated way of going in/out immersive
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-10-11 16:13:27 +05:30
Marcel Hibbe
fd248f098d
solve ktlint + detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-09-06 12:58:33 +02:00
Marcel Hibbe
a58a5df3ec
detect when user is talking and send data channel message
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-09-06 12:58:33 +02:00
parneet-guraya
5f8ef074cd
remove player listener
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-08-30 11:49:44 +02:00
parneet-guraya
3b557be58f
save media playback state
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-08-25 13:16:53 +05:30
parneet-guraya
7e07cbd12a
make player reference null after releasing
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-08-25 13:16:52 +05:30
Marcel Hibbe
bc425bc0d3
apply changes by ktlintFormat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-08-24 09:45:57 +02:00
parneet-guraya
7ea075ea13 migrate to media3
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2023-08-23 16:22:51 +02:00
Smarshall
62a79fa144 Fixed Unresolved reference: ColorRole and Exceeded max line length issue 2023-08-23 17:04:28 +05:30
Smarshall
4121f538c0
Merge branch 'master' into Snackbar
Signed-off-by: Smarshall <99678760+Smarshal21@users.noreply.github.com>
2023-08-19 17:57:28 +05:30
Smarshall
a447196257 Replaced all the Toasts with Snackbar 2023-08-19 17:38:52 +05:30
Julius Linus
31cedf0da5 Migration away from getScheme() calls
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
2023-08-10 14:47:17 +02:00
Marcel Hibbe
8dd8f745cb show 1h call duration info when screen is reopenend
+ make call duration bold for >= 1hour

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-28 18:02:37 +02:00
Marcel Hibbe
8e93a1936b show call time and hint for one-hour call
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-28 18:02:37 +02:00
Marcel Hibbe
75c154acf3
Avoid to fetchSignalingSettings in onMicrophoneClick
this led to duplicated call of fetchSignalingSettings.
because it's already called from checkDevicePermissions().
From my pov it shouldn't be triggered in onMicrophoneClick() again, at least i can not think of any scenario and while testing everything worked as expected.

The duplicated call was there since ever(?), but after implementing #3216 this also caused the call duration timer to be run twice.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-28 13:46:28 +02:00
Andy Scherzinger
efc8a1a2dd Fix some magic numbers, bump score
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-07-27 12:40:12 +02:00
Marcel Hibbe
a941945400 convert CallActivity to kotlin
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-27 12:40:12 +02:00
Marcel Hibbe
b5529f869a convert CallActivity to kotlin
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-27 12:40:12 +02:00
Marcel Hibbe
80af04be9a remove effortlessPermissions lib
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-25 14:35:37 +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
c3cb644558 Fix establishing of call connection when try to connect a second time on HPB
Everytime a second attempt was made to enter a call, the connection failed.
How to reproduce:

- Enter the ChatActivity
-> joins the room (so the new session is in the ApplicationWideCurrentRoomHolder)

- Start call
-> in the CallActivity we don't join again and instead execute callOrJoinRoomViaWebSocket()

- Call connection is successful

- Hangup on android
-> the ApplicationWideCurrentRoomHolder gets cleared (so also it's session)

- Staying in the chat and start the call another time
-> When we open CallActivity another time, ApplicationWideCurrentRoomHolder.sessionId is empty.Because of this, in joinRoomAndCall, joinRoom is executed again.
But as we are still in the room and have a session, joinRoom is problematic because on serverside in SignalingController - if there is still a session - it's considered as old.
So Nextcloud now sends a backend message (disinvite) to the external signaling controller that the session (of the first join) was removed.
So the External signaling server removes the session and closes the websocket. (The message for this might be improved, see https://github.com/strukturag/nextcloud-spreed-signaling/issues/512)

As the websocket is now closed, it won't be possible for the android app to send any signaling message anymore. There will just be the connecting screen and the call connection fails.

Solution for now:
ApplicationWideCurrentRoomHolder.getInstance().clear() should not be executed when hanging up, so the session won't be cleared and in the next attempt to start the call the room is not joined again mistakenly.
Instead to clear the `ApplicationWideCurrentRoomHolder`, only
setInCall(false);
setDialing(false);
are set so that the method isNotInCall() in ChatActivity remains working correctly.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-12 19:04:39 +02:00
Marcel Hibbe
b39daf4565 fix to handleActionFromContact
handleActionFromContact was not executed in onCreate of the MainActivity which is now fixed by this commit.

+ refactoring some intent handling

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-07-06 21:39:28 +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
Andy Scherzinger
c084d63944
codacy: Fields should be declared at the top of the class, before any method declarations, constructors, initializers or inner classes.
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-06-01 19:10:35 +02:00
Marcel Hibbe
d127c5401a
fix new onBackPressed handling
this commit fixes bugs from d3056ff2825e53040ca49b86b84f91f73a3eb11c and 1185dcf17a99ca62efd32f8a53c298ec4fd6c4d0

fix onBackPressed handling to use OnBackPressedCallback

remove unnecessary onBackPressedCallback's when they only finished the activity

replaced some finishAffinity methods with finish

...

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:09 +02:00
Ezhil Shanmugham
dff9ea5651
Fixed intendation Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:09 +02:00
Ezhil Shanmugham
64fa8e830b
Made suggested changes in FullScreenImageActivity.kt, ConversationsListActivity.kt and in some files Signed-off-by: Ezhil Shanmugham ezhil56x.contact@gmail.com
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:09 +02:00
Ezhil Shanmugham
7b5caf5007
fixed deprecated onBackPressed Issue-#2961
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 15:42:04 +02:00
Andy Scherzinger
c6e082c6b1
Replace any magic numbers detekt-ed
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 09:47:27 +02:00
Andy Scherzinger
5ec013143f
Migrate theme API calls - away from deprecated ones
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2023-05-24 09:08:18 +02:00
Marcel Hibbe
cafb8b649a
send call reactions
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-04 16:49:47 +02:00
Marcel Hibbe
6d735dd537
show call reactions from other participants
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2023-05-04 16:49:46 +02:00