Commit Graph

670 Commits

Author SHA1 Message Date
sowjanyakch
3a6a1edad4
add short press and long press options to group conversation
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:06 +01:00
sowjanyakch
6e2fdcb255
git bundle keys for group conversation
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:05 +01:00
sowjanyakch
ca0533a686
add button for end call for everyone
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:05 +01:00
sowjanyakch
ed9fc185bf
implement long click and short click on hangup button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:05 +01:00
sowjanyakch
52fd3f9002
Add support for all parameter in leave call endpoint
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:05 +01:00
Daniel Calviño Sánchez
fdb8692b59
Remove dead code to set the call state
"IN_CONVERSATION" was set when the activity was created and "state" in
the intent extras had the value "resume". However, there is no "state"
extra set by default in Android intents, it should be explicitly set,
but as it is not set anywhere in Talk Android code that would make it
dead code and safe to remove.

Moreover, the connection to the call should be initialized again in any
case rather than resumed when "onCreate" is called, as it is likely that
any previous connection would have been ended if the previous activity
instance was destroyed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-10-22 16:51:10 +02:00
rapterjet2004
b192e0ec60
linter
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:51:08 +02:00
Marcel Hibbe
ebc2fd2702
Add test for conversation conversion
This test respects different API versions and checks if default values are set as expected.

- remove deprecated+unused methods
- remove comments
- remove unnecessary double-bang operator

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-26 13:27:44 +02:00
sowjanyakch
384ba6945f
ktlint format
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:06 +02:00
Marcel Hibbe
3f06801e59
fix to load chat for old server version
With server version 23.0.12 it happened that the chat did not load because values were null. Now default values in json model are set (because that's easier than changing the entity).
Additionally a check was added in CallActivity that a callStartTime of 0 would not be used (but it should not be used anyway if it would be 0 because then capability should also not be available).

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-16 17:29:08 +02:00
Marcel Hibbe
033e3e86c1
reformat code
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-13 16:56:46 +02:00
Daniel Calviño Sánchez
18a0394d3b
fixup! Provide federation values when joining a room in the external signaling
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:20 +02:00
Daniel Calviño Sánchez
0ff783ef0b
Show proper avatar for federated users in calls
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:20 +02:00
Daniel Calviño Sánchez
3b7c5e1d27
Store actor data from signaling messages with participant updates
Starting with Talk 20 the signaling messages that provide updates to the
participants ("participants->update" in the external signaling server,
"usersInRoom" in the internal signaling server) now include "actorType"
and "actorId" properties for each participant.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:20 +02:00
Daniel Calviño Sánchez
86b06488c3
Provide federation values when joining a room in the external signaling
The "federation" values are used by the external signaling server to
establish a connection with the remote signaling server in a federated
room.

For now this is applied only in calls; when the room is joined in the
chat view again after a call it will still join it in the old way,
without federation properties, which will cause the connection with the
remote signaling server to be closed.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:20 +02:00
Daniel Calviño Sánchez
f3c7913f16
Get signaling settings by room when starting a call
This is necessary to get the specific federation properties for the
room.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:20 +02:00
Daniel Calviño Sánchez
6706bc2790
Store federation properties in signaling settings
Starting with Talk 20 the signaling settings include a "federation"
property that provide the values needed to join a federated room in the
external signaling settings. The "federation" property is specific to
each conversation, and it will be returned although empty for
non-federated conversations.

Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
2024-09-13 15:51:19 +02:00
Marcel Hibbe
6858b32f2b
fix NPE when baseUrl is missing
no idea how this happens, however this was
reported via gplay pre launch report for 20.0.0RC1
("Detected on 10 devices during testing"):

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.nextcloud.talk.data.user.model.User.getBaseUrl()' on a null object reference
  at com.nextcloud.talk.activities.BaseActivity.startActivity (BaseActivity.kt:240)
  at com.nextcloud.talk.account.ServerSelectionActivity.showVisitProvidersInfo$lambda$5 (ServerSelectionActivity.kt:206)
  at com.nextcloud.talk.account.ServerSelectionActivity.$r8$lambda$pjpPT-LQbGLSCJPXeRE8IJvpLIE
  at com.nextcloud.talk.account.ServerSelectionActivity$$ExternalSyntheticLambda0.onClick (D8$$SyntheticClass)
  at android.view.View.performClick (View.java:7506)
  at android.view.View.performClickInternal (View.java:7483)
  at android.view.View.-$$Nest$mperformClickInternal
  at android.view.View$PerformClick.run (View.java:29335)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at androidx.test.espresso.base.Interrogator.loopAndInterrogate (Interrogator.java:10)
  at androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:7)
  at androidx.test.espresso.base.UiControllerImpl.loopUntil (UiControllerImpl.java:1)
  at androidx.test.espresso.base.UiControllerImpl.injectMotionEvent (UiControllerImpl.java:5)
  at androidx.test.espresso.action.MotionEvents.sendUp (MotionEvents.java:6)
  at androidx.test.espresso.action.MotionEvents.sendUp (MotionEvents.java:1)
  at androidx.test.espresso.action.Tap.sendSingleTap (Tap.java:5)
  at androidx.test.espresso.action.Tap.-$$Nest$smsendSingleTap
  at androidx.test.espresso.action.Tap$1.sendTap (Tap.java:1)
  at androidx.test.espresso.action.GeneralClickAction.perform (GeneralClickAction.java:4)
  at androidx.test.espresso.ViewInteraction$SingleExecutionViewAction.perform (ViewInteraction.java:2)
  at androidx.test.espresso.ViewInteraction.doPerform (ViewInteraction.java:23)
  at androidx.test.espresso.ViewInteraction.-$$Nest$mdoPerform
  at androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:6)
  at androidx.test.espresso.ViewInteraction$1.call (ViewInteraction.java:1)
  at java.util.concurrent.FutureTask.run (FutureTask.java:264)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7898)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)

If baseUrl is really missing this may lead to followup issues, however this maybe only 'happens' in gplay pre launch report without any real world scenario. A best solution may be to make baseUrl not nullable, but don't want to do this on short term before release..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-06 15:38:13 +02:00
Marcel Hibbe
a632765cce
set values to not nullable in ConversationEntity.kt wherever this makes sense
remove roomId from Conversation (deprecated. only token should be used)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-08-12 16:47:06 +02:00
Marcel Hibbe
932352b785
open talk links of same baseurl inside the app
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-05-24 15:38:53 +02:00
Marcel Hibbe
8876718677
open links for files app from any screen.
With this change, all links that target files in the same nextcloud instance will be opened in the files app, no matter on which screen the link was.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-05-24 15:38:53 +02:00
Andy Scherzinger
3e48f61632
fix(lint): Add mandatory super call
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-05-21 19:31:43 +02:00
Marcel Hibbe
831ee0cdc4
set light or dark bar colors for login screens instead primary color
especially for branded clients the primary color might not look good.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-05-07 12:37:05 +02:00
Marcel Hibbe
b870b0f208
rename classes called 'Magic*'
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-04-23 15:26:00 +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
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