Commit Graph

285 Commits

Author SHA1 Message Date
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
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
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
6e1114d4d8
fix TooManyRequestsException
By using
networkMonitor.isOnline.first()
the function
unregisterNetworkCallback
was triggered, which sometimes causes the ConnectivityManager$TooManyRequestsException.

So each time isOnline.first() was called, the callbackFlow would:
- Register a new NetworkCallback.
- Emit a value and cancel the flow.
- Unregister the NetworkCallback.

The exception was:
Exception android.net.ConnectivityManager$TooManyRequestsException:
  at android.net.ConnectivityManager.convertServiceException (ConnectivityManager.java:3771)
  at android.net.ConnectivityManager.sendRequestForNetwork (ConnectivityManager.java:3960)
  at android.net.ConnectivityManager.sendRequestForNetwork (ConnectivityManager.java:3967)
  at android.net.ConnectivityManager.registerNetworkCallback (ConnectivityManager.java:4349)
  at android.net.ConnectivityManager.registerNetworkCallback (ConnectivityManager.java:4319)
  at com.nextcloud.talk.data.network.NetworkMonitorImpl$isOnline$1.invokeSuspend (NetworkMonitorImpl.kt:61)

To fix this, the cold flow from callbackFlow is converted to a StateFlow.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-16 13:50:51 +01:00
rapterjet2004
19aec5460a
figured it out - was an error with offline conversations not syncing. Chat permissions were updated on server, but not on device.
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-14 16:35:55 +01:00
Marcel Hibbe
3dca00bac0
resolve warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:31 +01:00
Marcel Hibbe
ab007fc444
resolve codacy/ktlint warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:30 +01:00
Marcel Hibbe
8f1f22fd54
Fix duplicate "Today"-bug
If user sent a message as a first message in today's chat, the temp message will be deleted when messages are retrieved from server, but also the date has to be deleted as it will be added again when the chat messages are added from server. Otherwise date "Today" would be shown twice.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:30 +01:00
Marcel Hibbe
0356f5ac3c
fix to not accidentally show unread messages popup
reason was that the UI was not yet loaded but isScrolledToBottom was already called, so findFirstVisibleItemPosition returned -1.

Fix for now is to return true for isScrolledToBottom when position is -1

They does not solve the root cause for now. It should be made sure the code is not executed until UI is ready.
A quick try with
repeatOnLifecycle(Lifecycle.State.STARTED)
when collecting getMessageFlow did not help.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:30 +01:00
Marcel Hibbe
29362fab4b
add logging for unread messages popup bug
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:30 +01:00
Marcel Hibbe
b529d1328a
delete roomId comments
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:30 +01:00
Marcel Hibbe
f62941f6aa
simplify "sent messages are queued" hint
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:29 +01:00
Marcel Hibbe
656be3ffce
revert ReadStatus SENDING and FAILED
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:29 +01:00
Marcel Hibbe
1bfb3ba027
WIP add options to temp messages
TODO:
check id type --> see TODO "currentTimeMillies fails as id because later on in the model it's not Long but Int!!!!" in OfflineFirstChatRepository.kt

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:27 +01:00
Marcel Hibbe
0f53244652
prepare to replace no-internet-connection message handling (sorry Julius!!)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:27 +01:00
Marcel Hibbe
3f5f2f024a
works okay (no resend logic yet, offline message mode not reworked)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:27 +01:00
Marcel Hibbe
e1c1574d6c
show x when sending failed
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:27 +01:00
Marcel Hibbe
a78c9e1c08
update temp messages also for initial pull of messages
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:26 +01:00
Marcel Hibbe
0e682ed894
WIP temp messages are replaced when same refId received from sever
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:26 +01:00
Marcel Hibbe
3597cf2085
use repository in MessageInputViewModel instead datasource
(as datasources should be only used in repositories)

use coroutines instead RxJava for api calls triggered by MessageInputViewModel

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-01-10 12:32:26 +01:00
rapterjet2004
63cb98ece7
Deleted old fragment + xml
Added string res
Fixed bug with embedded date picker boundaries, animated size change

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-01-10 11:14:35 +01:00
rapterjet2004
eae4e43ab2
Small fixes - new theming
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-01-10 11:14:35 +01:00
rapterjet2004
d114142d09
Migrating away from java.util.Date to java.time
- Also converted dialog fragment to compose

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-01-10 11:14:34 +01:00
Andy Scherzinger
62d1eeafce
fix(ktlint): correct code formatting
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-12-21 16:50:40 +01:00
Marcel Hibbe
c86769d0e3
Merge branch 'master' into master
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-20 17:14:33 +01:00
Marcel Hibbe
74da67210d
resolve detekt warnings 2024-12-20 15:44:24 +01:00
Marcel Hibbe
cd50115e06
fix detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-12-20 14:59:25 +01:00
sowjanyakch
74bf9f2e91
hide replacement view when there is no replacement set
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:53 +01:00
sowjanyakch
f7078990d9
use constants
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:53 +01:00
sowjanyakch
65cb31b1e7
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:53 +01:00
sowjanyakch
8ca769832d
use theming from server
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:53 +01:00
sowjanyakch
3eab18472f
format code and remove unused colors
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:53 +01:00
sowjanyakch
cadb12cd0f
join 1:1 conversation with replacement user
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:52 +01:00
sowjanyakch
9a481aefc8
create chip for avatar icon and name
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:52 +01:00
sowjanyakch
ca4ace687c
use proper color for out of office view
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:52 +01:00
sowjanyakch
a9168b3f9d
format code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:52 +01:00
sowjanyakch
e7c540870b
ui changes to out_of_office_view
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:52 +01:00
sowjanyakch
4bdedfbc0d
show userAbsence period
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:51 +01:00
sowjanyakch
ecd5bfdf41
apply styling
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:51 +01:00
sowjanyakch
c9d5bc68a2
show replacement only if the user set a replacement
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:51 +01:00
sowjanyakch
083f0de063
use proper naming
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:51 +01:00
sowjanyakch
07accbb2b9
Use conversation name as userId in API call
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:51 +01:00
sowjanyakch
e6e294096b
call API only when status is in DND mode
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:50 +01:00
sowjanyakch
10e88f1e17
display out of office message in ChatActivity
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-12-20 10:59:50 +01:00
Giacomo Pacini
c3aef0286a
run ./gradlew ktlintFormat
Signed-off-by: Giacomo Pacini <giacomopacini98@gmail.com>
2024-12-19 15:26:11 +01:00
Giacomo Pacini
fce785c734
spacing
Signed-off-by: Giacomo Pacini <giacomopacini98@gmail.com>
2024-12-19 14:18:21 +01:00