Exception java.lang.NullPointerException:
at com.nextcloud.talk.conversationinfo.ConversationInfoActivity.handleConversation (ConversationInfoActivity.kt:686)
at com.nextcloud.talk.conversationinfo.ConversationInfoActivity.access$handleConversation (ConversationInfoActivity.kt:94)
at com.nextcloud.talk.conversationinfo.ConversationInfoActivity$initObservers$2.invoke (ConversationInfoActivity.kt:232)
at com.nextcloud.talk.conversationinfo.ConversationInfoActivity$initObservers$2.invoke (ConversationInfoActivity.kt:227)
at com.nextcloud.talk.conversationinfo.ConversationInfoActivity$sam$androidx_lifecycle_Observer$0.onChanged
Handle conversation is called when capabilities are retrieved, which can occur before databaseStorageModule is created. The fix was to call initObservers after the module was created.
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
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>
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>
initMessageInputView() is called repeatedly when capabilities are received. This is not a good solution but was done because capabilities are needed inside initMessageInputView().
As sharedText is set inside initMessageInputView(), this caused the bug that text was repeatedly inserted in to the message input field.
All in all, there is only the need to initialize initMessageInputView() once. With this fix, it is for now done when there is no filter set yet. As a long term solution, the architecture must be changed so that initMessageInputView() is not called repeatedly, but all UI elements that need capabilities etc are updated by livedata.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Large enough to prevent onLoadMore from calling refresh on a few messages, but small enough to refresh when needed.
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
without this fix, the text when editing a message was lost after pulling chat messages (30sec), because inputEditText was initialized again with the initial text
As a fix, message editing is only initialized once when the edit button was clicked.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Before this fix, KEY_CALL_VOICE_ONLY was not included in the intent extras so call always started as videocall
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Fix to check if a conversation is "Note to self" by checking the ConversationType instead to check conversation name by hardcoded string
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>
without this, there would be http 404 error (nothing was shown to user):
2024-04-11 15:34:30.612 18641-18641 ProfileBottomSheet com.nextcloud.talk2 E Failed to get hover card for user user@yourfereatedserver.dev
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:264)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
at java.lang.Thread.run(Thread.java:1012)
With this fix, nothing happens when clicking on a federated user avatar, just like in web and iOS.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
without this, there would be the common error message shown because of a http 404 error.
With this fix, nothing happens when clicking on a federated user mention chip, just like in web and iOS.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
bug was introduced with commit 754b8250
As a result, for example the delete conversation option was not shown.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
checkbox was cut off to the left. probably some material design update changed this. Now there is no need to modify the margin anymore.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Sometimes the polls dialog seemed to not load the content.
This was caused by the showLoadingScreen logic using binding.root.post which overwrote the content depending on if the showResultsScreen or showVoteScreen already set the content. So it was a race conditions that sometimes it worked and sometimes not.
Additionally, calculating the height failed in showLoadingScreen, so in the end there was only the headline visible and even not loading spinner. This is now replaced by a fixed height.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
NPE without this fix:
Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
at android.content.ComponentName.<init> (ComponentName.java:132)
at android.content.Intent.<init> (Intent.java:8269)
at com.nextcloud.talk.conversation.CreateConversationDialogFragment.initiateConversation (CreateConversationDialogFragment.kt:276)
at com.nextcloud.talk.conversation.CreateConversationDialogFragment.access$initiateConversation (CreateConversationDialogFragment.kt:63)
at com.nextcloud.talk.conversation.CreateConversationDialogFragment$addParticipants$1.invoke (CreateConversationDialogFragment.kt:257)
at com.nextcloud.talk.conversation.CreateConversationDialogFragment$addParticipants$1.invoke (CreateConversationDialogFragment.kt:248)
at com.nextcloud.talk.conversation.CreateConversationDialogFragment$sam$androidx_lifecycle_Observer$0.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:958)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loopOnce (Looper.java:230)
at android.os.Looper.loop (Looper.java:319)
at android.app.ActivityThread.main (ActivityThread.java:8893)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:608)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1103)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
NPE without this fix:
Exception java.lang.RuntimeException:
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4975)
at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:5008)
at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:54)
at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2386)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:210)
at android.os.Looper.loop (Looper.java:299)
at android.app.ActivityThread.main (ActivityThread.java:8252)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:559)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:954)
Caused by java.lang.NullPointerException:
at com.nextcloud.talk.conversationlist.ConversationsListActivity.onResume (ConversationsListActivity.kt:287)
at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1565)
at android.app.Activity.performResume (Activity.java:8668)
at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4965)
The root cause may be that the CapabilitiesWorker is not finished so the serverVersion was not added to the user.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-03-19 15:49:38.476 15732-17089 okhttp.OkHttpClient com.nextcloud.talk2 I {"ocs":{"meta":{"status":"ok","statuscode":200,"message":"OK"},"data":[]}}
2024-03-19 15:49:38.476 15732-17089 okhttp.OkHttpClient com.nextcloud.talk2 I <-- END HTTP (74-byte body)
2024-03-19 15:49:38.571 15732-15732 ViewRootIm...tActivity] com.nextcloud.talk2 I handleAppVisibility mAppVisible = false visible = true
2024-03-19 15:49:38.571 15732-15732 ViewRootIm...tActivity] com.nextcloud.talk2 I stopped(false) old = true
2024-03-19 15:49:38.571 15732-15732 ViewRootIm...tActivity] com.nextcloud.talk2 I WindowStopped on com.nextcloud.talk2/com.nextcloud.talk.chat.ChatActivity set to false
2024-03-19 15:49:38.695 15732-16333 WebSocketInstance com.nextcloud.talk2 D Receiving : okhttp3.internal.ws.RealWebSocket@b8eb9d5 {"type":"event","event":{"target":"room","type":"leave","leave":["01s9v73eeKC5P2QUmsEqfsi_ZmY-DaDPhs3wdFTmJkB8VzVJc1FSWUV5bVZVTEtBaVpZOUYxaDVMRlpsaG95enlFc2dXMXpQY3Y3dGNGNlNfemZiLXg5cXk1ZVNyTEkzNS0wcDZJZUdnelFYbmF6ZVMwcWRDbVBTNklLYkFHNUdwRDQ2c0VZR1RoX1JObmF2Q3hSb2YtbFNJOFRONkhFLWp2cWZBZnk2d2VSb1BsbG96VE90Vm45bFhOa2NwWWZfdTA1clJ4VFoxcHpJcHwyMjEzNTgwMTcx"]}}
2024-03-19 15:49:38.697 15732-15732 AndroidRuntime com.nextcloud.talk2 D Shutting down VM
2024-03-19 15:49:38.702 15732-15732 AndroidRuntime com.nextcloud.talk2 E FATAL EXCEPTION: main
Process: com.nextcloud.talk2, PID: 15732
java.util.ConcurrentModificationException
at java.util.HashMap$HashIterator.nextNode(HashMap.java:1441)
at java.util.HashMap$EntryIterator.next(HashMap.java:1475)
at java.util.HashMap$EntryIterator.next(HashMap.java:1473)
at com.nextcloud.talk.chat.ChatActivity.sendStopTypingMessage(ChatActivity.kt:2097)
at com.nextcloud.talk.chat.ChatActivity.updateOwnTypingStatus(ChatActivity.kt:2063)
at com.nextcloud.talk.chat.ChatActivity$initMessageInputView$1.onTextChanged(ChatActivity.kt:1162)
at android.widget.TextView.sendOnTextChanged(TextView.java:11881)
at android.widget.TextView.setText(TextView.java:6968)
at android.widget.TextView.setText(TextView.java:6751)
at android.widget.EditText.setText(EditText.java:133)
at android.widget.TextView.setText(TextView.java:6703)
at com.nextcloud.talk.chat.ChatActivity.onStart(ChatActivity.kt:575)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1510)
at android.app.Activity.performStart(Activity.java:8616)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:4204)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2574)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8762)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:604)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1067)
2024-03-19 15:49:38.735 15732-15732 Process com.nextcloud.talk2 I Sending signal. PID: 15732 SIG: 9
2024-03-19 15:49:39.328 1477-1521 WindowManager system_server E win=Window{9280569 u0 com.nextcloud.talk2/com.nextcloud.talk.activities.CallActivity EXITING} destroySurfaces: appStopped=false cleanupOnResume=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.ActivityRecord.destroySurfaces:6539 com.android.server.wm.ActivityRecord.destroySurfaces:6520 com.android.server.wm.WindowState.onExitAnimationDone:5995 com.android.server.wm.ActivityRecord$$ExternalSyntheticLambda10.accept:2 java.util.ArrayList.forEach:1262 com.android.server.wm.ActivityRecord.onAnimationFinished:8607 com.android.server.wm.ActivityRecord.postApplyAnimation:6252
2024-03-19 15:49:40.075 19752-19752 nativeloader com.nextcloud.talk2 D Configuring classloader-namespace for other apk /data/app/~~7lbTYxiIqB-jrG8FI6_p4A==/com.nextcloud.talk2-0R1zH5b8yl__vfC9tvSYrg==/base.apk. target_sdk_version=34, uses_libraries=, library_path=/data/app/~~7lbTYxiIqB-jrG8FI6_p4A==/com.nextcloud.talk2-0R1zH5b8yl__vfC9tvSYrg==/lib/arm64:/data/app/~~7lbTYxiIqB-jrG8FI6_p4A==/com.nextcloud.talk2-0R1zH5b8yl__vfC9tvSYrg==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/com.nextcloud.talk2
2024-03-19 15:49:40.097 19752-19752 GraphicsEnvironment com.nextcloud.talk2 V ANGLE Developer option for 'com.nextcloud.talk2' set to: 'default'
2024-03-19 15:49:40.098 19752-19752 GraphicsEnvironment com.nextcloud.talk2 V ANGLE GameManagerService for com.nextcloud.talk2: false
2024-03-19 15:49:40.099 19752-19752 GraphicsEnvironment com.nextcloud.talk2
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
As far i could see this is identical to actorType, so 'source' was removed and actorType is now used.
This makes checks in ParticipantItem etc more clean
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
roomToken was added unnecessarily as it already exists as "token"
By using the duplicated roomToken, this also introduced a bug when that it could be empty.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
with same userId on both servers, the invitation panel could get shown also there were no invitations for the current account
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
In general it's a bad idea to use recyclerview inside scrollviews because of poor performance! So this is only a fix until everything is replaced with jetpack compose.
setHasFixedSize and isNestedScrollingEnabled were set to false. This might not be necessary for the current implementation, but it's recommended when using NestedScrollView.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Without this fix, the avatars for "normal" messages were not able to show avatars.
Only the messages that contained messageParameters with actor were able to show avatars(for example "userX invited userY")
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Before this with http 406 it threw a NPE and UI was shown as loading state.
With this commit an empty list is returned when there is a http error.
http 406 happens for federated rooms for now. So it might be that Shared items screen will be hidden by additional commits.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
As lastMessageId is not available for federatedRooms, the API on server side now allows the messageID to be optional. This is done by this commit: messageId is null when it's a federated room.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Without this commit, the read status was broken as X-Chat-Last-Common-Read was not used. It was removed by
https://github.com/nextcloud/talk-android/pull/3630
As a result all messages were marked as unread after waiting for 30 seconds.
With this commit the X-Chat-Last-Common-Read is used again.
Messages are marked as read again also after 30 seconds.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
also restores view position to that message and then resumes audio playback if was playing.
it allows to continue playing audio on screen rotation.
Signed-off-by: Giacomo Pacini <giacomopacini98@gmail.com>
so that audio continues playing when activity in background.
if backpressed, stops mediaplayer
Signed-off-by: Giacomo Pacini <giacomopacini98@gmail.com>
How to test:
pre-requirement:
There are open conversations
without this commit:
1. go to search screen
2. go back to conversation list
-> all open conversations are listed below own conversations
with this commit:
1. go to search screen
2. go back to conversation list
-> only own conversations are listed
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>
android-talk-webrtc in version 121.6167.0 doesn't allow access to
WebRtcAudioManager
WebRtcAudioUtils
anymore.
These classes were used for
HARDWARE_AEC_EXCLUDE_SET
and
OPEN_SL_ES_INCLUDE_SET
lists, which were not updated for years.
For these reasons the checks for HARDWARE_AEC_EXCLUDE_SET and OPEN_SL_ES_INCLUDE_SET are removed.
If people are complaining about different behaviour of audio performance/echoes, it's worth to have a closer look at the changes again.
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>
FOREGROUND_SERVICE_PHONE_CALL is removed because it is not necessary.
Seems it was introduced when moving to Android 14 because NCFirebaseMessagingService originally contained android:foregroundServiceType="phoneCall"
But this foregroundServiceType is not allowed/necessary for NCFirebaseMessagingService so it was removed, but it was forgotten to also remove FOREGROUND_SERVICE_PHONE_CALL permission.
This commit will remove FOREGROUND_SERVICE_PHONE_CALL permission so release process on gplay won't complain.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This will update the message when an edit was made on other devices.
So the system message will trigger that you are informed about a change. But instead to show the system message, you use it's information to immediately update the adapter.
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>
otherwise translators won't understand what this is.
As translations were already made a new key was introduced to avoid "Translated Untranslatable" warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
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>
- 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>
- Implement MediaRecorderState handling
- Fixed lifecycle bug - recording and locked UI now ends after app exits
- Saves Waveform to storage after initial loading
- Fixes File caption crashes
- A couple other bugs
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
- 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>
- Added 4 new model data classes
- Added the new API function to NcApi
- Implemented the changes in the Repository + ViewModel
- Implemented the changes in the Activity
- Added some helper functions to support impl
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
- Added dialog_file_attachment_preview.xml
- Added FileAttachmentPreviewFragment.kt
- Edited ChatActivity to add captions to uploaded files, also refactored some code
- Edited the Outgoing, Incoming, and Generic Preview holders to have a caption
- Fixed some bugs with RemoteFileBrowser
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
- 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>
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>
this is just a quickfix to get the correct context. However a better way would be to avoid using a context inside viewModel.
stacktrace:
303-13303 AndroidRuntime com.nextcloud.talk2 E FATAL EXCEPTION: main
Process: com.nextcloud.talk2, PID: 13303
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nextcloud.talk2/com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity}: android.content.res.Resources$NotFoundException: String resource ID #0x7f1301f3
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3311)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3460)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2047)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f1301f3
at android.content.res.Resources.getText(Resources.java:381)
at android.content.res.MiuiResources.getText(MiuiResources.java:97)
at android.content.res.Resources.getString(Resources.java:474)
at com.nextcloud.talk.remotefilebrowser.viewmodels.RemoteFileBrowserItemsViewModel.<init>(RemoteFileBrowserItemsViewModel.kt:99)
at com.nextcloud.talk.remotefilebrowser.viewmodels.RemoteFileBrowserItemsViewModel_Factory.newInstance(RemoteFileBrowserItemsViewModel_Factory.java:50)
at com.nextcloud.talk.remotefilebrowser.viewmodels.RemoteFileBrowserItemsViewModel_Factory.get(RemoteFileBrowserItemsViewModel_Factory.java:39)
at com.nextcloud.talk.remotefilebrowser.viewmodels.RemoteFileBrowserItemsViewModel_Factory.get(RemoteFileBrowserItemsViewModel_Factory.java:12)
at com.nextcloud.talk.dagger.modules.ViewModelFactory.create(ViewModelModule.kt:53)
at androidx.lifecycle.ViewModelProvider$Factory.create(ViewModelProvider.kt:83)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:187)
at androidx.lifecycle.ViewModelProvider.get(ViewModelProvider.kt:153)
at com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity.initViewModel(RemoteFileBrowserActivity.kt:124)
at com.nextcloud.talk.remotefilebrowser.activities.RemoteFileBrowserActivity.onCreate(RemoteFileBrowserActivity.kt:110)
at android.app.Activity.performCreate(Activity.java:7893)
at android.app.Activity.performCreate(Activity.java:7880)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3286)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3460)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2047)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7590)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
2023-10-26 14:29:28.357 13303-13303 nextcloud.talk com.nextcloud.talk2 W Attempt to remove non-JNI local reference, dumping thread
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- Can not add participants to the room
- Can not allow guests
- Can not make read-only
- Can not make listable
- Can not change permissions
- Can not set lobby
- Can not enable SIP
- Can not configure breakout rooms
- Can not call
- Custom Avatar
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
This PR reverts https://github.com/nextcloud/talk-android/pull/3225
The reason for this is that somehow Google playstore doesn't accept the app anymore when Android Auto support is enabled.
There were multiple emails exchanged with google, but there is no reason given that makes sense why the app is declined.
Some vague hint was that is is related to Android Auto, and indeed removing Android Auto support finally solved that the app was accepted again.
One reason from Google was "We could not access the in-app content with the login credentials that you have provided". But the credentials are provided and working. So it doesn't make sense why/how this is related to Android Auto.
For now i give up to understand what's going wrong with the google playstore policy checks.
Further hint might be at https://developer.android.com/docs/quality-guidelines/car-app-quality.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
- Fixes a bug with the processing taking to long
- Added a bunch of comments, to make maintaining this more easier
- Added LifeCycle Awareness
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
androidx.emoji2:emoji2:1.4.0 seems to fix the bug that emojis in markdown headlines are rendered too large.
To use v1.4.0 of emoji2 it was necessary to bump compileSdk to v34, which in turn required the minor changes to the overwritten
onDraw of View class.
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>
Without this fix, the ChatActivity would be started again in FileViewerUtils. There was an endless loop between ChatActivity and FileViewerUtils because of the wrong context.
Instead to open the browser, the app did nothing or freezed.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>