Commit Graph

4115 Commits

Author SHA1 Message Date
rapterjet2004
d46f2488a7
No longer does edit button overlap the recordAudioButton
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-17 12:25:43 +01:00
rapterjet2004
9f9fd1a82e
Added offline check in handleHttpExceptions in ConversationsListActivity
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-17 11:42:56 +01:00
Andy Scherzinger
12b52a9024
fix(lint): Use plurals string instead of simple string
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-02-16 16:20:02 +01:00
Andy Scherzinger
b0b75ca6f0
chore: remove unnecessary lint suppression
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-02-16 14:58:48 +01:00
Marcel Hibbe
5219eeb11f
replace userManager.currentUser usage by currentUserProvider usage
userManager.currentUser was called too often. I was not able to prove that a bug is related to it but i think it may fix some hidden bugs.

CurrentUserProviderImpl is now used throughout the code to access the current user.
userManager.currentUser is only used from CurrentUserProviderImpl whenever the _currentUser was null (should only happen on app startup)

To avoid multiple initialization of CurrentUserProviderImpl it was changed to be a @Singleton

The handling should soon be replaced with coroutine flows. However for the v21.0.0 release it's still done with RxJava to avoid bugs.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-07 13:13:38 +01:00
sowjanyakch
2d1c940eae
resize icons
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:47 +01:00
sowjanyakch
e40f3675c7
format code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:47 +01:00
sowjanyakch
20a8a38764
make system messages work for teams
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:47 +01:00
sowjanyakch
c08a004d39
format code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:46 +01:00
sowjanyakch
65707f2d34
add icon
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:46 +01:00
sowjanyakch
ba37c7bac0
add mention support for circles
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:46 +01:00
sowjanyakch
d927f8daa6
use proper avatar for circles
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:46 +01:00
sowjanyakch
64856ccda6
set chip avatar for team placeholder
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:46 +01:00
sowjanyakch
0de8a3e06e
add avatar for autocomplete mentions in recycler view
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:45 +01:00
sowjanyakch
f02257d5ff
add team support for mentions
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-07 09:34:45 +01:00
Marcel Hibbe
11fc9fa0d0
Merge pull request #4688 from nextcloud/bugfix/noid/avoidDuplicatedMessagesAfterSend
avoid duplicated messages after sending
2025-02-06 14:58:48 +00:00
Marcel Hibbe
69a9b9687c
lower SEARCH_MIN_CHARS to 1
same behavior for web and iOS..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-06 11:15:18 +01:00
Marcel Hibbe
f4a1b73f63
replace hardcoded number for 1:1 roomtype
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-06 11:15:17 +01:00
rapterjet2004
b707cebf6f
Added intent handling on item click
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-06 11:15:16 +01:00
rapterjet2004
93fa89fb81
linter -_-
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-06 09:39:41 +01:00
rapterjet2004
4425f8249a
Improved Search
- Uncommented out fetchOpenConversations
- Added fetchUsers to conversationList
- Made the messages appear first

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-06 09:39:40 +01:00
Marcel Hibbe
09a6cfb68b
avoid duplicated messages after sending
It could happen that when sending a message it was received on server but if the servers response is not received, the retry was triggered in the talk app.
This sometimes happened when internet connection was not the best.

Best would be that messages with the same referenceId would be refused on server side, but this won't be the case for now. So messages with the same referenceId are NOT refused as this would be too much overhead as there would be additional queries on server for every received message)

For now, the automatic retry logic is just removed so duplicated messages won't be created automatically.
However it's still possible to manually trigger the retry via button. In this case it is not guaranteed that there won't be duplicates.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-05 15:56:42 +01:00
rapterjet2004
2b30988514
Added character counter to xml
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-02-05 13:53:32 +01:00
sowjanyakch
1663fcafda
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:31 +01:00
sowjanyakch
ef7831472f
set limit on description
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:31 +01:00
sowjanyakch
fdcff12bd9
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:31 +01:00
sowjanyakch
bbedbf569d
rename variable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:31 +01:00
sowjanyakch
b7074c5412
set limit on conversation description
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:30 +01:00
sowjanyakch
39391c8bca
calculate conversation description length
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-05 13:53:29 +01:00
Marcel Hibbe
b69f21580a
self heal if multiple current users exist
usersDao.getActiveUser() will return only one current users even if multiple exist for whatever reason.
By executing setUserAsActiveWithId(it.id) with the same user, it is made sure all other users current status is set to 0.

This change won't fix the root cause if multiple users are set to current, but it will make sure the state is fixed as soon as there is a query to get the active user.

In fact, this change might also make it harder to find the root cause because debugging may be more difficult! When searching for the root cause, always keep this in mind and maybe revert the change.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-28 15:57:41 +01:00
Marcel Hibbe
22b8b59fb3
fix to not execute getAnyUserAndSetAsActive() until userRepository.getActiveUser() is empty
To make sure getAnyUserAndSetAsActive() is invoked lazily and avoid any side effects, it's explicitly wrapped it in a lambda.

Maybe.defer ensures that getAnyUserAndSetAsActive() is not invoked until switchIfEmpty decides it’s needed.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-28 15:15:06 +01:00
Marcel Hibbe
307ebd384d
ensure that getAnyUserAndSetAsActive will set other users to current=false
Before, getAnyUserAndSetAsActive did only set a random first user to current=true without to check if there is any other current user.

So it was up to the calling function of getAnyUserAndSetAsActive to check this.

I did not identify a scenario where the getAnyUserAndSetAsActive could cause to set multiple users to current, but anyway the new implementation might fix some scenario that i could not reproduce.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-28 15:11:07 +01:00
Marcel Hibbe
c58df32c87
Merge pull request #4659 from nextcloud/changing-btn-layout-date-time-fragment
Switched the "Close" and "Set" Buttons in the remind-me-later dialog
2025-01-28 11:42:34 +01:00
rapterjet2004
25df5197e5
switched the btns in DateTimeCompose
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-01-28 11:29:23 +01:00
sowjanyakch
c7c287a7d5
message of type actorId = "sample" should show talk logo avatar
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-01-28 11:00:37 +01:00
Marcel Hibbe
7ac8c2483e
Show snackbar on archive/unarchive from bottomDialog
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-23 12:21:31 +01:00
rapterjet2004
a6055e52e8
Archived conversation improvements
- First commit - Made options yellow
- Now possible to archive/unarchive conversations from dialog
- Now possible to archive and unarchive conversations in settings without leaving the screen
- Better UX
- Unread message bubble fix - no longer shows up when archive filter is set

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-01-23 12:11:49 +01:00
Marcel Hibbe
3330fc8210
fix shimmer and "offlineNoMessages"-info handling
when being offline and no messages are set -> hide shimmer

when messages are received -> hide shimmer and "offlineNoMessages"-info

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-23 09:45:02 +01:00
Julius Linus
1ac537be94
Merge pull request #4641 from nextcloud/bugfix/4605/fixDuplicateMessages
Bugfix/4605/fix duplicate messages
2025-01-22 11:29:15 -06:00
Marcel Hibbe
4f49deadf2
Merge pull request #4630 from nextcloud/bugfix/4628/noUnreadMessagesBubbleForInvisibleMessages
no "unread messages" popup for invisible messages
2025-01-22 16:57:08 +00:00
Marcel Hibbe
b172f68cd3
Merge pull request #4627 from nextcloud/feature/4570/rework-can-leave-delete-conversation
Rework can leave/delete conversation
2025-01-22 16:49:31 +00:00
Marcel Hibbe
9b6b01254a
remove scope cancelation for handleChatOnBackPress (replace with lifecyle event)
handleOnStop will handle this (and more scenarios than just backpress)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-22 13:59:03 +01:00
Marcel Hibbe
1f105d44d3
check if scope is active during long polling
Because long polling may have to be informed that the scopep was cancelled, the isActive checks are added so it can't happen that messages are added when they shouldn't.

I could not reproduce the scenario, anyway the checks should make sense in my opinion.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-22 13:54:31 +01:00
Marcel Hibbe
b6e341bbf1
cancel scope when onStop is reached
This is necessary especially to cancel the long polling when configuration change was made, e.g. screen was rotated. Otherwise multiple long polling requests would be running after configuration changes.

Because it not possible to launch a new coroutine in a scope that was canceled, it is necessary to re-initialize the scope.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-22 13:50:30 +01:00
Marcel Hibbe
5535bed35c
no "unread messages" popup for invisible messages
if chatMessageList is empty after handleSystemMessages it makes no sense to call the following methods.
Also processMessagesFromTheFuture was executed which caused that the popup was shown.

A better solution for the future should be to handle(remove) the "to-hide" system messages already in the repo or viewmodel

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-17 14:09:58 +01:00
Marcel Hibbe
20612c8543
avoid shimmer animations overlay with chat messages
The idea to show the progress bar (aka shimmer animation) was that it show not be shown at all if loading messages happens in less than a second (this was a better UX in my opinion).

The idea was to hide the progress bar when
ChatMessageStartState was triggered.

However there can be moment when adapter is still empty after ChatMessageStartState and if in this moment the DELAY_TO_SHOW_PROGRESS_BAR is reached before the adapter is actually filled, the overlay happens.
It could be a solution to move the hiding of the progress bar, however then special cases might have to be handled.

For simplicity, the logic for DELAY_TO_SHOW_PROGRESS_BAR is removed. Progress bar is always shown without a delay so it wont be triggered on a later moment and can't overlay the chat.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-17 13:40:57 +01:00
Marcel Hibbe
35f9e339c9
make sure that canDeleteConversation is used to determine if "Delete all message" is shown.
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-17 11:55:41 +01:00
Andy Scherzinger
9e3840c3a9
style(lint): replace magic number with constant
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-01-16 16:29:39 +01:00
Andy Scherzinger
e4088d0ddc
style(lint): Fix formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-01-16 15:57:24 +01:00
Andy Scherzinger
a2dac5e0fa
style(reactions): ensure correct color coding of own reaction backgrounds
Resolves #4557

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-01-16 15:40:54 +01:00