Hide search feature if room is federated.
Also, for conversation list the check for federation inside isUnifiedSearchAvailable makes no sense.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Otherwise, following crash happened, as it was tried to deal with the empty url:
2024-09-24 15:10:30.719 17765-17765 WebSocketInstance com.nextcloud.talk2 D restartWebSocket: /spreed
2024-09-24 15:10:30.722 17765-17765 System.err com.nextcloud.talk2 W java.lang.IllegalArgumentException: Expected URL scheme 'http' or 'https' but no scheme was found for /spree...
2024-09-24 15:10:30.723 17765-17765 System.err com.nextcloud.talk2 W at okhttp3.HttpUrl$Builder.parse$okhttp(HttpUrl.kt:1261)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
On gplay console the following NPE was reported for the line
participantPermissions = ParticipantPermissions(spreedCapabilities, currentConversation!!)
E FATAL EXCEPTION: main
Process: com.nextcloud.talk2, PID: 6626
java.lang.NullPointerException
at com.nextcloud.talk.chat.ChatActivity.initObservers$lambda$13(ChatActivity.kt:583)
at com.nextcloud.talk.chat.ChatActivity.$r8$lambda$QKH5JCFLmCzRMlSJ-EV-m4IW5ig(Unknown Source:0)
which seems that currentConversation was null. If it would have been spreedCapabilities, then the error would have been thrown in the line before..
A reason MAY BE that the observer is triggered before setData on the ViewModel is executed.
While this fix is just not executing code when currentConversation is null, it's unsure if it will follow up problems (like an empty chat) or if the observer is triggered another time when currentConversation is available.
So it's just a hotfix.
To improve the situation in the long term, we should move more logic to viewModel and only use Flow instead to mix it with LiveData.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
reported issue on gplay console was:
Exception kotlin.UninitializedPropertyAccessException: lateinit property spreedCapabilities has not been initialized
at com.nextcloud.talk.chat.ChatActivity.getSpreedCapabilities (ChatActivity.kt:284)
at com.nextcloud.talk.chat.ChatActivity.processExpiredMessages (ChatActivity.kt:2536)
at com.nextcloud.talk.chat.ChatActivity.access$processExpiredMessages (ChatActivity.kt:204)
at com.nextcloud.talk.chat.ChatActivity$initObservers$10$1.invokeSuspend (ChatActivity.kt:820)
This is just a hotfix while hoping processExpiredMessages is executed again while spreedCapabilities are available.
To improve the situation in the long term, we should move more logic to viewModel and have better control over sequence of actions.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
After 30 seconds (when the capabilities were updated) the call buttons of federated conversations were removed (this was done back then when fed calls were not implemented).
However this happened not always because of the check
"if (this::spreedCapabilities.isInitialized) {...."
It seems this check sometimes is false when it's supposed to be true. This has be to further investigated and has to be be simplified/improved by a cleaner architecture.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
The messageInputFragment was hidden by checkShowMessageInputView(), but it was immediately shown again by checkLobbyState()
This fix will execute checkShowMessageInputView() inside checkLobbyState() in the correct order.
Additionally, the check
checkLobbyState()
has to be already executed in
GetCapabilitiesInitialLoadState
as well as
checkShowCallButtons()
Otherwise the expected behavior would only be set after 30 seconds.
An improvemnt for the future must be to improve the capabilities handling.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Otherwise the WebSocket configuration and session clashes with the one
from the CallActivity, which already uses the federated settings.
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
In dark mode, the call buttons looked like disabled otherwise.
There is still the 3-dots menu next to the call icons like disabled for dark and light mode. But this is a different bug that needs to be fixed in another branch(could not find the reason for now).
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Got join conversation to work
Unread message popup should work when entering a conversation now
"Delete All Messages" now works without breaking the initMessagePolling
linter
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This will fix to scroll to the last read message when a chat is opened.
Some refactorings were made that are not necessary for the fix (I tried to also show the "Unread messages" hint in the adapter but came to the conclusion this is not a good idea until chatkit is removed. Chatkit doesn't support to add some item in between but only at the end or start which will make it too complicated..)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
method was extracted for other purposes but was not used in the end. Anyway it made sense to use it for resumeAudioPlaybackIfNeeded.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
fix to show unreadMessagesPopup at bottom (typingIndicatorWrapper must not be gone but invisible)
align unreadMessagesPopup to not overlap typingIndicator
fix to hide scrollDown button when unreadMessagesPopup is shown
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
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>
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>