this commit will avoid to fail to show messages in adapter. This was caused by the usage of
messagesListAdapter.deleteById("-1");
in UnreadNoticeMessageViewHolder.
The bug seems to exist in the past already but was never reported (Sometimes, when receiving a lot of messages it could happen that some message in between is not shown in UI). However with recent changes after release 20.0.2 the bug appeared more often.
The root cause was not analyzed, but the handling was modified in general as the unread marker behavior was never really good.
By not using deleteById but replace it with new unread marker logic, the bug of disappearing messages is solved and the unread messages marker behavior is improved.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
avoid NPE:
java.lang.NullPointerException
at com.nextcloud.talk.chat.data.network.OfflineFirstChatRepository.getCappedMessagesAmountOfChatBlock(OfflineFirstChatRepository.kt:186)
at com.nextcloud.talk.chat.data.network.OfflineFirstChatRepository.access$getCappedMessagesAmountOfChatBlock(OfflineFirstChatRepository.kt:43)
at com.nextcloud.talk.chat.data.network.OfflineFirstChatRepository$loadInitialMessages$1.invokeSuspend(OfflineFirstChatRepository.kt:162)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
If conversation has a newer message id than DB then an online request is necessary
If conversation has an older message id than DB then an online request is not necessary (this could happen when updating of DB is implemented for push notification, not yet done).
If conversation has the same message id like DB than request can be skipped
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Decrease message limit for retries of message loading
make it possible to add any amount (up to 100) of messages to UI for initial loading.
add logging
only make initial request for chat messages when newest message from DB is not equal the lastReadMessage that is offered by the conversation
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Otherwise, it resulted in a lot of flickering because _lastCommonReadFlow was emitted every 500ms. And anyway if we know we are offline or paused then it doesn't make sense to execute the sync method.
chain which caused the flickering was:
updateUiForLastCommonRead (_lastCommonReadFlow) -> updateReadStatusOfAllMessages - notifyDataSetChanged -> onBindViewHolder -> IncomingLinkPreviewMessageViewHolder
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>
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>
- New option to ban participant if your a moderator and not in one-2-one
- New fragment to see previous bans, unban if wanted
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
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>
- 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>
- Added new Dialog Fragment
- Added API functions for handling reminders
- Added JSON Models for those reminders
- Implemented the reminder functions using MVVM
Signed-off-by: Julius Linus <julius.linus@nextcloud.com>
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>