This commit only sets up the listeners, but the actual handling of the
"switchto" event still needs to be added.
Note that in CallActivity the SignalingMessageReceiver is available both
when using the internal and the external signaling server. On the other
hand, in ChatController it is available only for the external signaling
server. Right now that is not a problem, as the message notified by the
LocalParticipantMessageListener is currently sent only by the external
signaling server, but this may need to be adjusted in the future.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
Exception java.lang.NullPointerException:
at com.nextcloud.talk.controllers.ChatController.startPlayback (ChatController.kt:985)
at com.nextcloud.talk.controllers.ChatController.access$startPlayback (ChatController.kt:219)
at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1130)
at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1128)
at com.nextcloud.talk.controllers.ChatController.downloadFileToCache$lambda$19 (ChatController.kt:1128)
at com.nextcloud.talk.controllers.ChatController.$r8$lambda$oLS0bGL_zLma74VfkfStO_mReb4
at com.nextcloud.talk.controllers.ChatController$$ExternalSyntheticLambda10.onChanged
at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151)
at androidx.lifecycle.LiveData.setValue (LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run (LiveData.java:93)
at android.os.Handler.handleCallback (Handler.java:942)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:226)
at android.os.Looper.loop (Looper.java:313)
at android.app.ActivityThread.main (ActivityThread.java:8775)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Exception java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:558)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:936)
Caused by java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
Caused by java.io.IOException: Prepare failed.: status=0x1
at android.media.MediaPlayer._prepare
at android.media.MediaPlayer.prepare (MediaPlayer.java:1309)
at com.nextcloud.talk.controllers.ChatController.initMediaPlayer (ChatController.kt:1023)
at com.nextcloud.talk.controllers.ChatController.startPlayback (ChatController.kt:981)
at com.nextcloud.talk.controllers.ChatController.access$startPlayback (ChatController.kt:219)
at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1111)
at com.nextcloud.talk.controllers.ChatController$downloadFileToCache$1.invoke (ChatController.kt:1109)
at com.nextcloud.talk.controllers.ChatController.downloadFileToCache$lambda$18 (ChatController.kt:1109)
at com.nextcloud.talk.controllers.ChatController.$r8$lambda$6crsUAwqqfwhlukFd40yEwEwluI
at com.nextcloud.talk.controllers.ChatController$$ExternalSyntheticLambda9.onChanged
at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151)
at androidx.lifecycle.LiveData.setValue (LiveData.java:309)
at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run (LiveData.java:93)
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:7872)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
W/System.err: java.lang.NullPointerException
W/System.err: at com.nextcloud.talk.controllers.ChatController.determinePreviousMessageIds(ChatController.kt:2498)
W/System.err: at com.nextcloud.talk.controllers.ChatController.processMessagesNotFromTheFuture(ChatController.kt:2463)
W/System.err: at com.nextcloud.talk.controllers.ChatController.processMessages(ChatController.kt:2355)
W/System.err: at com.nextcloud.talk.controllers.ChatController.processMessagesResponse(ChatController.kt:2314)
W/System.err: at com.nextcloud.talk.controllers.ChatController.access$processMessagesResponse(ChatController.kt:219)
W/System.err: at com.nextcloud.talk.controllers.ChatController$pullChatMessages$3.onNext(ChatController.kt:2260)
W/System.err: at com.nextcloud.talk.controllers.ChatController$pullChatMessages$3.onNext(ChatController.kt:2248)
W/System.err: at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:201)
W/System.err: at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:255)
W/System.err: at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:124)
W/System.err: at android.os.Handler.handleCallback(Handler.java:883)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:100)
W/System.err: at android.os.Looper.loop(Looper.java:224)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:7590)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Exception java.lang.NullPointerException:
at com.nextcloud.talk.controllers.ChatController$onViewBound$11.onTouch (ChatController.kt:858)
at android.view.View.dispatchTouchEvent (View.java:15072)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at android.view.ViewGroup.dispatchTransformedTouchEvent (ViewGroup.java:3923)
at android.view.ViewGroup.dispatchTouchEvent (ViewGroup.java:3597)
at com.android.internal.policy.DecorView.superDispatchTouchEvent (DecorView.java:1016)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent (PhoneWindow.java:1962)
at android.app.Activity.dispatchTouchEvent (Activity.java:4265)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent (WindowCallbackWrapper.java:70)
at com.android.internal.policy.DecorView.dispatchTouchEvent (DecorView.java:974)
at android.view.View.dispatchPointerEvent (View.java:15335)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent (ViewRootImpl.java:7820)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess (ViewRootImpl.java:7593)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6927)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6984)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6950)
at android.view.ViewRootImpl$AsyncInputStage.forward (ViewRootImpl.java:7148)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6958)
at android.view.ViewRootImpl$AsyncInputStage.apply (ViewRootImpl.java:7205)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6931)
at android.view.ViewRootImpl$InputStage.onDeliverToNext (ViewRootImpl.java:6984)
at android.view.ViewRootImpl$InputStage.forward (ViewRootImpl.java:6950)
at android.view.ViewRootImpl$InputStage.apply (ViewRootImpl.java:6958)
at android.view.ViewRootImpl$InputStage.deliver (ViewRootImpl.java:6931)
at android.view.ViewRootImpl.deliverInputEvent (ViewRootImpl.java:10422)
at android.view.ViewRootImpl.doProcessInputEvents (ViewRootImpl.java:10270)
at android.view.ViewRootImpl.enqueueInputEvent (ViewRootImpl.java:10226)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent (ViewRootImpl.java:10554)
at android.view.InputEventReceiver.dispatchInputEvent (InputEventReceiver.java:259)
at android.os.MessageQueue.nativePollOnce
at android.os.MessageQueue.next (MessageQueue.java:335)
at android.os.Looper.loopOnce (Looper.java:186)
at android.os.Looper.loop (Looper.java:313)
at android.app.ActivityThread.main (ActivityThread.java:8751)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1135)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
first it was tried with sampling rate 44100 but this showed an error on safari when try to playback.
by direct comparison to 44100, 22050 has lower quality but it's totally okay compared to the quality before when no sampling rate was set. I'm not sure why it failed on safari, because the iOS app also uses 44100.
see https://github.com/nextcloud/talk-android/pull/2714
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
since null checks are done for the nullable bindings by PR #2694, the try-catch blocks arent necessary anymore.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
it seems async calls are not cancelled reliable so it was decided to always check for null bindings to avoid NPEs
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
-> add callback methods to ConductorRemapping to execute after chat room was left. Whenever there is a ChatController on top, it's room is now left, before replacing the controller or pushing another one on top.
this avoids problems where entering a chat before the old one was left led to sessionId="0" for the new chat.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
# reproduce:
1. click in chat where someone is mentioned.
2. click on the mention
3. go back to first chat
# result:
validSessionId() can be false in onDetach for the second chat when going back to first chat
-> leaveRoom is not executed
-> disposable is not disposed
-> getRoomInfo() continues to execute for old controller
-> e.g. appbar infos can be wrong (wrong avatar/title)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Fresco is replaced with Coil everywhere to make it possible to set 'minSdkVersion'
to 23. But Coil is not used directly to avoid splintering the dependency
everywhere in the code. Coil is wrapped by extension functions for 'ImageView'.
Some shared functionality is moved from 'DisplayUtils' into the
'ImageViewExtensions'.
The exisiting initialization of Coil has also be changed. The usage of the self
initialized OKHttp client is removed. If this one is added the
caching of the http client is used by Coil additionally to memory and
disk cache.
Resolves: #2227, #2376
Signed-off-by: Tim Krüger <t@timkrueger.me>