Commit Graph

3689 Commits

Author SHA1 Message Date
rapterjet2004
8cd0983088
WIP Editing
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:49:56 +02:00
rapterjet2004
0041fb3b71
deleting works
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:49:56 +02:00
rapterjet2004
98e0b7a270
should have fixed the UI now with lifecycle and error handling
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:49:51 +02:00
rapterjet2004
fb9a7b8e04
added ui
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:46:04 +02:00
rapterjet2004
498a1274d9
git
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-10-22 10:46:03 +02:00
Marcel Hibbe
f817c20b4e
fix to handle chats without offline messages when connection is lost
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>
2024-10-21 15:33:25 +02:00
Marcel Hibbe
7e3a4e4a83
refactoring and logging
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:55 +02:00
Marcel Hibbe
c81b1fa62f
pass newestMessageIdFromDb to initMessagePolling
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:55 +02:00
Marcel Hibbe
7eb8b9fa70
extract getCappedMessagesAmountOfChatBlock
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:55 +02:00
Marcel Hibbe
adf18020c1
Fix unintended deletion of conversations (+related messages&chatBlocks)
Mistake was, that the conversations from DB and sync could differ due to values.
E.g. when a user changed the status, the conversations from DB and sync would differ. So there were conversations (+related messages&chatBlocks) deleted sometimes.
This caused bugs that when entering a chat, all data was loaded again.

In the previous implementation (before this PR), this error was only visible in the UI when you were offline (in this case, nothing was displayed!).

To fix the bug, only the internalId's are compared.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:55 +02:00
Marcel Hibbe
3d37cc0831
only do initial request if newestMessageIdFromDb is lower than lastReadMessage from conversation
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>
2024-10-21 13:49:54 +02:00
Marcel Hibbe
dc38904d01
delay progress bar
delay progress bar for one second before showing up for slow connection

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:54 +02:00
Marcel Hibbe
b1d6086684
load conversation from DB first, then update by request if connection is available
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-21 13:49:54 +02:00
Marcel Hibbe
818a843143
check if sync succeeded
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>
2024-10-21 13:49:54 +02:00
Andy Scherzinger
47e9c71ea9
style(ktlint): Fix formatting in kotlin
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2024-10-07 16:34:59 +02:00
Marcel Hibbe
ce8143a807
center search results in chat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-10-02 14:03:11 +02:00
Marcel Hibbe
305f1732ba
fix availability of search feature.
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>
2024-10-02 14:02:04 +02:00
Sowjanya Kota
acd31ec2b5
Merge pull request #4289 from nextcloud/bugfix/4288/fixTypingIndicatorPosition
fix position and animation of typing indicator
2024-10-01 13:37:35 +02:00
sowjanyakch
d76a1d0bd9
make predefined status use custom time
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-10-01 12:45:31 +02:00
Marcel Hibbe
94d62a943f
fix position and animation of typing indicator
Without this fix, typing indicator moves up and wont go down

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-27 16:51:45 +02:00
Julius Linus
246d496024
Merge pull request #4273 from nextcloud/fix-reminder-refactor
[Bug Fix] Fix wrong value when choosing custom reminder date
2024-09-27 09:45:30 -05:00
sowjanyakch
de582f8b0b
use variable "VOICE_MESSAGE_PREFIX_MAX_LENGTH" to restrict length of voice recording file name
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-27 12:41:36 +02:00
sowjanyakch
2478aa884b
put file length value in utils
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-27 12:41:36 +02:00
sowjanyakch
ce8c4b2b84
fix file name of voice recording
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-27 12:41:36 +02:00
sowjanyakch
25846fe23f
set default emoji only when status icon is null
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-27 12:24:38 +02:00
sowjanyakch
1347ec29c4
Set empty status message and default emoji
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-27 12:13:32 +02:00
Marcel Hibbe
16c49bc430
bump versions for SERVER_VERSION_MIN_SUPPORTED + SERVER_VERSION_SUPPORT_WARNING
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-26 13:27:45 +02:00
Marcel Hibbe
ebc2fd2702
Add test for conversation conversion
This test respects different API versions and checks if default values are set as expected.

- remove deprecated+unused methods
- remove comments
- remove unnecessary double-bang operator

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-26 13:27:44 +02:00
sowjanyakch
ebace8713a
Rounded corners for change password dialog
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-26 13:13:57 +02:00
sowjanyakch
8c967c4f56
use open lock icon for set password
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-26 13:13:56 +02:00
sowjanyakch
c165e9fe0c
UI improvements
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-26 13:13:56 +02:00
sowjanyakch
31c0d74356
Add change password dialog
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-26 13:13:56 +02:00
sowjanyakch
381804c892
Add Change Password dialogue
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-26 13:13:56 +02:00
parneet-guraya
856c0761c9
Fix logic for date time retrieval
Signed-off-by: parneet-guraya <gurayaparneet@gmail.com>
2024-09-25 22:04:11 +05:30
Sowjanya Kota
2592f72039
Merge pull request #4265 from nextcloud/bugfix/noid/fixCrashWhenExtSignalingEmpty
Fix crash when externalSignalingServer is empty
2024-09-25 09:48:56 +02:00
Marcel Hibbe
7dc7051481
Fix crash when externalSignalingServer is empty
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>
2024-09-24 16:25:33 +02:00
Marcel Hibbe
b78267d96f
try to avoid NPE for currentConversation
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>
2024-09-24 15:52:49 +02:00
Marcel Hibbe
aeacfa09b6
avoid UninitializedPropertyAccessException for spreedCapabilities
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>
2024-09-24 15:25:42 +02:00
sowjanyakch
8bf9e3552e
rename variable selectedImageUri
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:06 +02:00
sowjanyakch
384ba6945f
ktlint format
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:06 +02:00
sowjanyakch
4dd22d6223
Get selectedImageUri from ViewModel
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:06 +02:00
sowjanyakch
bc02236801
Make Conversation name text limit to single line
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:06 +02:00
sowjanyakch
317f745806
Only display delete icon when user avatar is selected
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-09-23 16:40:05 +02:00
Marcel Hibbe
b080e891bb
fix to not remove call buttons for federated conversations after 30 seconds
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>
2024-09-20 13:46:21 +02:00
Marcel Hibbe
9e91bdeb1d
fix to hide messageInputFragment when user has no restriction to write
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>
2024-09-18 17:34:10 +02:00
Marcel Hibbe
28906dd999
dont show error when fetching pending invitations failed
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-17 12:05:02 +02:00
Marcel Hibbe
5991b91460
fix to show accounts from older servers in switch account dialog
if invitations were not supported, the account did not show up

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-17 11:30:36 +02:00
Marcel Hibbe
722914fb6c
fix to show user status in conversation list
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-17 11:04:18 +02:00
Marcel Hibbe
3f06801e59
fix to load chat for old server version
With server version 23.0.12 it happened that the chat did not load because values were null. Now default values in json model are set (because that's easier than changing the entity).
Additionally a check was added in CallActivity that a callStartTime of 0 would not be used (but it should not be used anyway if it would be 0 because then capability should also not be available).

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-16 17:29:08 +02:00
Marcel Hibbe
0480ceef7f
fix to show connection lost hint when internet is gone
otherwise it showed "connection gained" with red background when loosing connection for the first time

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-09-13 18:41:46 +02:00