Commit Graph

4418 Commits

Author SHA1 Message Date
sowjanyakch
44cbb020a8
make emojis clickable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-14 17:31:49 +02:00
sowjanyakch
b325d60fda
use recently used emojis
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-14 17:31:48 +02:00
sowjanyakch
de07e127e9
fix crash
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-14 15:55:53 +02:00
Marcel Hibbe
70620ffba7
Merge pull request #4924 from nextcloud/update_snackbar_text
update snackbar text
2025-05-14 11:15:08 +00:00
Marcel Hibbe
aa19bbe991
Merge pull request #4936 from nextcloud/crash_for_set_status_sialog
fix crash
2025-05-14 10:23:43 +00:00
sowjanyakch
5500ffef6b
fix crash
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-14 11:23:06 +02:00
sowjanyakch
f11ed31408
update snackbar text
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-14 11:13:38 +02:00
Andy Scherzinger
240ec8f98e
style(lint): Unnecessary lambda with trim()
The lambda argument ({ it <= ' ' }) is unnecessary

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-05-14 10:55:08 +02:00
Marcel Hibbe
31433f8ed9
adapt avatar size to box size
..by using a BoxWithConstraints

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-13 17:15:58 +02:00
Marcel Hibbe
6a048fde08
improve/fix contents for picture in picture mode
depending on amount of participants, voiceOnly call and enabled/disabled own video, the contents of PIP windows are updated.

This will be further improved when speaker-view is implemented.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-13 11:40:33 +02:00
Marcel Hibbe
eaed93087b
simplify participant data structure
move ParticipantUiState into ParticipantDisplayItem

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 15:01:26 +02:00
Marcel Hibbe
962972dce4
resolve lint/detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:42 +02:00
Marcel Hibbe
74d937c901
ktlint format + fix lint warning
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:41 +02:00
Marcel Hibbe
99d5e5d07a
clearImage before release surfaceViewRenderer in ParticipantDisplayItem
at least as another cell. fullscreen needs to be implemented

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:41 +02:00
Marcel Hibbe
38072d40c2
fix to show screenshare
at least as another cell. fullscreen needs to be implemented

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:41 +02:00
Marcel Hibbe
b6519f6ffb
make sure to release pipSelfVideoRenderer after hangup
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:41 +02:00
Marcel Hibbe
1703a34007
remove unused code
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:40 +02:00
Marcel Hibbe
51eb7edcb0
remove unused constants
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:40 +02:00
Marcel Hibbe
af93877e96
move self video position more to edge
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:40 +02:00
Marcel Hibbe
c3b09ddf90
add background colors like in web to participant tile
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:40 +02:00
Marcel Hibbe
257dc2af54
only show avatars for voiceonly calls
improve pip handling a bit

minor changes

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:40 +02:00
Marcel Hibbe
1136508ba2
fix voice only call design by workaround.
For now, instead to measure height mixed from xml and compose, assume a fixed height for the xml views (callInfosLinearLayout and callControls) to limit the grid height.
They is not a nice solution and should be replaced once everything is migrated to compose.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:39 +02:00
Marcel Hibbe
d546046d5b
add shadow to nick name
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:39 +02:00
Marcel Hibbe
91b0e97589
show rounded circle for avatar
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:39 +02:00
Marcel Hibbe
15d7c8371c
simplify grid cell calculation
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:39 +02:00
Marcel Hibbe
bcb276d533
add padding to cells
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:38 +02:00
Marcel Hibbe
ecf6d362bf
calculate item height
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:38 +02:00
Marcel Hibbe
2741f5962a
sort participants by audio/video (experimental, commented out)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:38 +02:00
Marcel Hibbe
35c777e70d
move SurfaceViewRenderer into WebRTCVideoView
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:38 +02:00
Marcel Hibbe
aacc013485
improve call participants layout
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:37 +02:00
Marcel Hibbe
42a8afded8
fix z index of videos and click listener to show controls
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:37 +02:00
Marcel Hibbe
feeec78ab4
WIP migrate call grid to compose
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:37 +02:00
Marcel Hibbe
4b8b7630a9
Rename .java to .kt
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:36 +02:00
Marcel Hibbe
7df19b7623
convert ParticipantsAdapter to kt
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:36 +02:00
Marcel Hibbe
b85016ad13
Rename .java to .kt
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-12 13:55:36 +02:00
Marcel Hibbe
d1500c9c75
Merge pull request #4939 from nextcloud/improvePipMode
Improve pip mode
2025-05-07 07:58:57 +00:00
Sowjanya Kota
d8db5079ea
Merge pull request #4935 from nextcloud/bugfix/4883/fixJumpingNoteToSelfEntry
Bugfix/4883/fix jumping note to self entry
2025-05-05 18:18:59 +02:00
Marcel Hibbe
0d2014aa27
set icon with call name as fallback for pip group calls when own video is disabled
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-05 09:57:20 +02:00
Marcel Hibbe
ee6543d766
fix to release "self" renderers when camera switched off
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-05 09:57:20 +02:00
Marcel Hibbe
e3bbe3503f
show own video in pip mode for group calls
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-05 09:57:19 +02:00
gavine99
d40878e3be changes to do audio channel switcheroo to bluetooth only after sco conn is available
Signed-off-by: gavine99 <github@xymail.tk>
2025-04-30 09:53:51 +00:00
gavine99
7e267ab761 add a default audio device option in audio manager. stops auto-switch to bluetooth being disabled by 'user selected audio device' being set in code
Signed-off-by: gavine99 <github@xymail.tk>
2025-04-30 09:53:51 +00:00
Viktor Balogh
f0bdae1417 fix Conscrypt initialization order
SSLSocketFactoryCompat relies on SSLContext.getInstance("TLS"), which is
called from componentApplication.inject(this) in NextcloudTalkApplication
.onCreate() - before Conscrypt is set as the provider.

This caused issues on Android 7.0 devices when connecting to Nextcloud's
push notification server. The result was a handshake error, because
Android 7.0's native implementation only supports TLSv1.2 and the
secp256r1 group, while the server supports only secp384r1.

Setting Conscrypt as a provider earlier ensures that the native
implementation is not used and the connection completes successfully.

Call stack:
<init>:44, SSLSocketFactoryCompat (com.nextcloud.talk.utils.ssl)
provideSslSocketFactoryCompat:156, RestModule (com.nextcloud.talk.dagger.modules)
provideSslSocketFactoryCompat:56, RestModule_ProvideSslSocketFactoryCompatFactory (com.nextcloud.talk.dagger.modules)
get:46, RestModule_ProvideSslSocketFactoryCompatFactory (com.nextcloud.talk.dagger.modules)
get:14, RestModule_ProvideSslSocketFactoryCompatFactory (com.nextcloud.talk.dagger.modules)
getSynchronized:54, DoubleCheck (dagger.internal)
get:45, DoubleCheck (dagger.internal)
get:69, RestModule_ProvideHttpClientFactory (com.nextcloud.talk.dagger.modules)
get:19, RestModule_ProvideHttpClientFactory (com.nextcloud.talk.dagger.modules)
getSynchronized:54, DoubleCheck (dagger.internal)
get:45, DoubleCheck (dagger.internal)
injectNextcloudTalkApplication:1393, DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl (com.nextcloud.talk.application)
inject:867, DaggerNextcloudTalkApplicationComponent$NextcloudTalkApplicationComponentImpl (com.nextcloud.talk.application)
onCreate:145, NextcloudTalkApplication (com.nextcloud.talk.application)

Signed-off-by: Viktor Balogh <viktor.balogh45@gmail.com>
2025-04-30 07:27:17 +00:00
Marcel Hibbe
ab19f631ae
get Note-to-Self room by endpoint + convert to coroutines
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-29 13:40:27 +02:00
Marcel Hibbe
c6d1f68442
fix jumping Note to self option in message action dialog.
Only get room for Note to Self after clicking on the option..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-29 12:32:36 +02:00
sowjanyakch
fd6bb5b17e
detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:42 +02:00
sowjanyakch
0b6ed3bcc1
improvements
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:42 +02:00
sowjanyakch
61d0e323b3
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
c57bd90ee5
minor fixes - show meaningful message + add previews
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
ce385556a3
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
a7997abf57
copy the message
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
7d381f4ca5
adding copyright
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
c438250f07
add test push notification button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:41 +02:00
sowjanyakch
99b61f5331
test push notification
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-28 09:03:40 +02:00
Sowjanya Kota
a9090d4e71
Merge pull request #4826 from nextcloud/feature/4712/addParticipantTo1to1
Feature/4712/add participant to1to1
2025-04-17 12:47:19 +02:00
rapterjet2004
ba3985e536
detekt
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-16 20:09:29 +02:00
rapterjet2004
ce589b3cae
Improving search capability
- Updated api with getContextForChatMessages
- Added ContextChatCompose for viewing the context of messages
- Added ComposeChatAdapter, a reimplementation of chat adapter
- Helper functions
- Added new date header
- Added a better Shimmer

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-16 20:09:25 +02:00
Julius Linus
5aab7ac9bb
Merge pull request #4882 from nextcloud/open_conversations_list
show full open conversation list when search text is empty
2025-04-16 11:31:09 -05:00
sowjanyakch
93de317aa6
show full conversation list when search text is empty
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-16 17:12:44 +02:00
sowjanyakch
a82218055e
use display name of user instead of userId
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-16 15:19:55 +02:00
Marcel Hibbe
220c135257
add hotfix to avoid NoSupportedApiException in ContactsRepositoryImpl
There were crash reports for:

Exception java.lang.RuntimeException:
...
Caused by com.nextcloud.talk.utils.NoSupportedApiException:
at com.nextcloud.talk.utils.ApiUtils.getConversationApiVersion (ApiUtils.kt:134)
at com.nextcloud.talk.contacts.ContactsRepositoryImpl.<init> (ContactsRepositoryImpl.kt:28)

This could happen because of missing capabilities for user and should be fixed.
As a fallback, API v4 is guessed

Adding this as comment in the code as the root cause must be found..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 16:31:52 +02:00
Marcel Hibbe
29348689a8
Merge pull request #4867 from nextcloud/bugfix/4866/avoidNpeInSendChatMessage
Avoid Npe in sendChatMessage
2025-04-14 14:22:04 +00:00
Marcel Hibbe
d617d65af2
Merge pull request #4865 from nextcloud/bugfix/4864/fixNpeOnLoadMore
avoid NPE in onLoadMore
2025-04-14 13:39:31 +00:00
Marcel Hibbe
95545c6635
Avoid Npe in sendChatMessage
as chatDao.getTempMessageForConversation could have returned null

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 14:53:16 +02:00
Marcel Hibbe
d0190158d5
avoid NPE in onLoadMore
For v21.0.0, the following crash was reported:

Exception java.lang.NullPointerException: null cannot be cast to non-null type com.nextcloud.talk.chat.data.model.ChatMessage
  at com.nextcloud.talk.chat.ChatActivity.onLoadMore (ChatActivity.kt:3107)
  at com.stfalcon.chatkit.messages.MessagesListAdapter.onLoadMore (MessagesListAdapter.java:148)
  at com.stfalcon.chatkit.messages.RecyclerScrollMoreListener.onScrolled (RecyclerScrollMoreListener.java:82)
  at androidx.recyclerview.widget.RecyclerView.dispatchOnScrolled (RecyclerView.java:5688)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep3 (RecyclerView.java:4741)
  at androidx.recyclerview.widget.RecyclerView.dispatchLayout (RecyclerView.java:4367)
  at androidx.recyclerview.widget.RecyclerView.onLayout (RecyclerView.java:4919)

This is now improved:
- lastOrNull prevents exceptions if no matching item is found
- as? is a safe cast that returns null if the cast fails

Whole expression becomes null-safe, and id will be null if anything along the way doesn't match. Only when not null, onLoadMore continues.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 14:21:51 +02:00
Sowjanya Kota
4c5c7c6a24
Merge pull request #4812 from nextcloud/bugfix/4764/fixDuplicateMessages
fix duplicate messages because of multiple scopes
2025-04-14 13:38:26 +02:00
Marcel Hibbe
a1c7e37fd9
extract methods (avoid too long method "initObservers")
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 12:20:41 +02:00
Marcel Hibbe
f34968c886
improve sorting for new conversation name
sort users so original users come first when creating new conversation from 1:1 conversation

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:57:15 +02:00
Marcel Hibbe
b0da7243e5
ellipsize conversation name for add participants to 1-to-1
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:47 +02:00
Marcel Hibbe
b4a9910fd3
check capability conversation-creation-all
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:46 +02:00
Marcel Hibbe
df7e772817
fix codacy warning
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:46 +02:00
Marcel Hibbe
c2ad89f7fb
minor refactoring
to be discussed: does it make sense to show a dialog instead? At least when it's created via 1:1 conversation

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:46 +02:00
Marcel Hibbe
e7ab3aab0d
open new conversation after creating it in 1to1 chat
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:46 +02:00
Marcel Hibbe
fa5570e901
WIP use new api endpoint to create group conversation
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:45 +02:00
Marcel Hibbe
77fe2ad024
refactor getRetrofitBucketForCreateRoom
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:45 +02:00
Marcel Hibbe
3dfb00d5c4
remove unused code
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:45 +02:00
Marcel Hibbe
d4959d9130
remove unused code (ConversationRepository, ConversationViewModel)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:45 +02:00
Marcel Hibbe
643385505c
use startGroupChat to differentiate between addParticipant or create room
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:44 +02:00
Marcel Hibbe
73d8daa3d0
rename AddParticipantsToConversation to AddParticipantsToConversationWorker
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:44 +02:00
Marcel Hibbe
dcd4fa5257
add button to start group chat in Conversation Info
no action for now

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:44 +02:00
Marcel Hibbe
c9136cdf15
replace snackbar with toasts for breakout room infos
snackbars disaapear with the switch to a different screen. Toasts survive the switch so they are visible during the activities switch

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-14 11:03:43 +02:00
Sowjanya Kota
a27f95caeb
Merge pull request #4838 from nextcloud/feature/2052/moreFovByRatioSwitch
switch video capture between 4:3 and 16:9 ratio for portrait/landscape
2025-04-11 16:43:29 +02:00
rapterjet2004
025d0f4e87
detekt
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-10 15:25:57 +02:00
rapterjet2004
f837caad8b
Refactored
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-10 15:25:56 +02:00
rapterjet2004
0d080defad
trying to bypass the stupid linter
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-10 15:25:56 +02:00
rapterjet2004
6835c25ac5
Added messages to the end of the list
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-04-10 15:25:55 +02:00
Marcel Hibbe
7fe987ba91
Merge branch 'master' into fix-bluetooth-receiver-not-exported 2025-04-04 14:45:05 +00:00
Marcel Hibbe
863dc10f36
fix detekt warnings
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-04 14:57:23 +02:00
sowjanyakch
0e38490ea6
fix theming
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:08 +02:00
sowjanyakch
52cb837438
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:08 +02:00
sowjanyakch
68efcc0a95
check for necessary capabilities
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:08 +02:00
sowjanyakch
ea61e49821
layout changes
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:08 +02:00
sowjanyakch
6995964e5c
modify outgoingTextViewHolder
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:08 +02:00
sowjanyakch
8b44882e78
edit checkbox messages directly
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:07 +02:00
sowjanyakch
4abb28e445
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:07 +02:00
sowjanyakch
24fdf0884e
use constants
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:07 +02:00
sowjanyakch
47551284f6
adjust layout
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:07 +02:00
sowjanyakch
b323915d0f
apply theming
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:07 +02:00
sowjanyakch
b7835fd462
handle multiple checkboxes
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:06 +02:00
sowjanyakch
0e118dbfd1
refactor code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:06 +02:00
sowjanyakch
2b939f9a9a
edit message on clicking checkboxes
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:06 +02:00
sowjanyakch
7fe6901fa2
use interactive checkbox
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-04-04 14:47:06 +02:00
Marcel Hibbe
ba88f23f39
Merge branch 'master' into fix-bluetooth-receiver-not-exported 2025-04-04 12:27:19 +00:00
Marcel Hibbe
62235372ea
switch video capture between 4:3 and 16:9 ratio for portrait/landscape
switch video capture for calls between 4:3 and 16:9 ratio depending on portrait/landscape mode

Also: simplify placement of self video view (it was buggy) as well as applying the ratio there as well

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-04-04 13:16:02 +02:00
Marcel Hibbe
8646dd3450
remove permission checks for new photo picker
The new photo picker does not need files permission. For other features, the permissions are already checked elsewhere

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-28 14:07:12 +01:00
Marcel Hibbe
8009cc1013
Add new photo picker
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-27 23:59:08 +01:00
gavine99
e68c023a27 changes to allow bluetooth headset state change receiver to be exported. fixes bluetooth headset (dis)connection not being recognised during a call.
Signed-off-by: Gavin Element <github@bobfox.top>
Signed-off-by: gavine99 <github@xymail.tk>
2025-03-24 16:16:56 +11:00
Marcel Hibbe
fbad489ecb
fix no sound after mic permission granted
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-21 11:39:27 +01:00
Andy Scherzinger
db944ec1bd
style(lint): Migrate to KTX extension function
Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
2025-03-19 18:07:35 +01:00
Marcel Hibbe
8436831628
fix duplicate messages because of multiple scopes
fix duplicate messages because of multiple scopes that ran in OfflineFirstChatRepository

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-19 11:41:33 +01:00
github-actions
743d4a0a4e
hide already selected participants
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
Signed-off-by: github-actions <github-actions@github.com>
2025-03-14 15:39:39 +01:00
Marcel Hibbe
23b03eead8
rename ContactsActivityCompose to ContactsActivity
the old ContactsActivity was deleted, so ContactsActivityCompose becomes ContactsActivity now

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-14 15:37:24 +01:00
Marcel Hibbe
1c7d84f90b
remove old ContactsActivity and use ContactsActivityCompose
for ConversationInfoActivity, the old ContactsActivity was still used to add participants. This is now replaced by the ContactsActivityCompose, so ContactsActivity is now deleted

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-14 15:37:24 +01:00
Marcel Hibbe
af0294bb00
show maintenance warning in conv list on top
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-13 11:05:21 +01:00
Marcel Hibbe
c90f138f42
rename SetStatusBarColor to SetupSystemBars
(as it also colors the navigation bar buttons..)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-13 09:52:44 +01:00
Marcel Hibbe
7b5e404814
use common SetStatusBarColor component also for ConversationCreationActivity
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-13 09:52:43 +01:00
Marcel Hibbe
773a6295ba
color navigation buttons
(= set more contrast by fixing dark mode logic)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-13 09:52:43 +01:00
Marcel Hibbe
aeb50c6b68
fix to color status-bar with theming
SetStatusBarColor() was called outside of the MaterialTheme() block

Also, "surface" has to be used to get the 'light primary color'

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-13 09:52:42 +01:00
Marcel Hibbe
869c8154d7
Merge pull request #4761 from nextcloud/edit_bot_messages
Edit bot messages in 1:1 conversations
2025-03-06 12:45:47 +00:00
sowjanyakch
2604c56263
edit bot messages
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:30:18 +01:00
sowjanyakch
546e6abec4
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:06 +01:00
sowjanyakch
2ef4ff6e40
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:06 +01:00
sowjanyakch
c0376c8eed
uploading file works for first time users
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:05 +01:00
sowjanyakch
2081a501a4
use proper url
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:05 +01:00
sowjanyakch
ef4d83a691
create a new folder
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:05 +01:00
sowjanyakch
bb581d0862
didn't set read timeout
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:05 +01:00
sowjanyakch
40cac86350
create folder for new users
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-03-06 13:22:04 +01:00
Marcel Hibbe
2b0a38240c
move AppBar component to component package on root level
+ add string
+ remove unused resources

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-06 09:12:06 +01:00
Marcel Hibbe
c2177f689b
move SetStatusBarColor component to component package on root level
however, the color still needs to be fixed

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-06 09:12:06 +01:00
Marcel Hibbe
3723599c68
move filebrowser package out of components package
... as "components" package should be used for jetpack compose components that can be shared for multiple screens

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-06 09:12:06 +01:00
Marcel Hibbe
6ed17603d6
migrate dropdown menu
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-06 09:12:05 +01:00
Marcel Hibbe
84ce5df2d7
migrate diagnosis screen to compose
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-03-06 09:12:05 +01:00
rapterjet2004
d26697b932
Abstracting away media player functionality to MediaPlayerManager
- Most code removed from ChatActivity
- Most work in MediaPlayerManager
- Added BackgroundVoiceMessageCard

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-03-04 16:02:12 -06:00
Marcel Hibbe
17f43e8b42
avoid Npe for adapter.
A NPE was reported for ConversationsListActivity.kt:537

Adapter is accessed with !! while it is not safe to access in term of lifecycle.
So there could have been a race condition.
The overall problem is not solved and may even have to wait for migration to Compose.
This is just a quickfix for v21.0.0

Reported crash was :

Exception java.lang.NullPointerException:
  at com.nextcloud.talk.conversationlist.ConversationsListActivity.filterConversation (ConversationsListActivity.kt:537)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity.setConversationList (ConversationsListActivity.kt:472)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity.access$setConversationList (ConversationsListActivity.kt:158)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity$initObservers$5$1.invokeSuspend (ConversationsListActivity.kt:398)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity$initObservers$5$1.invoke (Unknown Source:8)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity$initObservers$5$1.invoke (Unknown Source:4)
  at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit (Emitters.kt:219)
  at kotlinx.coroutines.flow.FlowKt__ErrorsKt$catchImpl$2.emit (Errors.kt:154)
  at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit (Emitters.kt:220)
  at kotlinx.coroutines.flow.SharedFlowImpl.collect$suspendImpl (SharedFlow.kt:392)
  at kotlinx.coroutines.flow.SharedFlowImpl.collect (Unknown Source)
  at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1.collect (SafeCollector.common.kt:112)
  at kotlinx.coroutines.flow.FlowKt__ErrorsKt.catchImpl (Errors.kt:152)
  at kotlinx.coroutines.flow.FlowKt.catchImpl (Unknown Source:1)
  at kotlinx.coroutines.flow.FlowKt__ErrorsKt$catch$$inlined$unsafeFlow$1.collect (SafeCollector.common.kt:112)
  at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1.collect (SafeCollector.common.kt:112)
  at kotlinx.coroutines.flow.FlowKt__CollectKt.collect (Collect.kt:26)
  at kotlinx.coroutines.flow.FlowKt.collect (Unknown Source:1)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity$initObservers$5.invokeSuspend (ConversationsListActivity.kt:399)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.internal.DispatchedContinuationKt.resumeCancellableWith (DispatchedContinuation.kt:363)
  at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable (Cancellable.kt:26)
  at kotlinx.coroutines.intrinsics.CancellableKt.startCoroutineCancellable$default (Cancellable.kt:21)
  at kotlinx.coroutines.CoroutineStart.invoke (CoroutineStart.kt:88)
  at kotlinx.coroutines.AbstractCoroutine.start (AbstractCoroutine.kt:123)
  at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch (Builders.common.kt:52)
  at kotlinx.coroutines.BuildersKt.launch (Unknown Source:1)
  at kotlinx.coroutines.BuildersKt__Builders_commonKt.launch$default (Builders.common.kt:43)
  at kotlinx.coroutines.BuildersKt.launch$default (Unknown Source:1)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity.initObservers (ConversationsListActivity.kt:395)
  at com.nextcloud.talk.conversationlist.ConversationsListActivity.onCreate (ConversationsListActivity.kt:261)
  at android.app.Activity.performCreate (Activity.java:9149)
  at android.app.Activity.performCreate (Activity.java:9127)
  at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1526)
  at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:4152)
  at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:4361)
  at android.app.ActivityThread.handleRelaunchActivityInner (ActivityThread.java:6446)
  at android.app.ActivityThread.handleRelaunchActivity (ActivityThread.java:6329)
  at android.app.servertransaction.ActivityRelaunchItem.execute (ActivityRelaunchItem.java:82)
  at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:60)
  at android.app.servertransaction.TransactionExecutor.executeNonLifecycleItem (TransactionExecutor.java:174)
  at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:109)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:81)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2747)
  at android.os.Handler.dispatchMessage (Handler.java:112)
  at android.os.Looper.loopOnce (Looper.java:268)
  at android.os.Looper.loop (Looper.java:384)
  at android.app.ActivityThread.main (ActivityThread.java:8921)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:580)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:907)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-21 12:35:20 +01:00
Marcel Hibbe
7615b92f14
extract Composables to files and simplify passed parameters
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-20 15:31:35 +01:00
Sowjanya Kota
e648b8846a
Merge pull request #4740 from nextcloud/bugfix/noid/improveContactsActivityDesign
Bugfix/noid/improve contacts activity design
2025-02-18 17:39:20 +01:00
Sowjanya Kota
8d7ce9fc5e
Merge pull request #4738 from nextcloud/bugfix/4701/avoidUninitializedInternalConvId
init other data earlier than ConversationModel
2025-02-18 15:50:00 +01:00
Marcel Hibbe
c5517c8426
fix background color for conversation creation
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 14:55:10 +01:00
Marcel Hibbe
903bed8fb4
improve colors for searchbar
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 14:55:10 +01:00
Marcel Hibbe
83c0d0b150
fix colors for header
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 14:55:10 +01:00
Marcel Hibbe
f76634511c
fix background color for contacts activity
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 14:55:09 +01:00
Marcel Hibbe
754e8a86fd
check if scope is initialized before canceling
without this fix, the scope may not have been initialized which threw the following exception:

Exception java.lang.RuntimeException:
  at android.app.ActivityThread.callActivityOnStop (ActivityThread.java:5658)
  at android.app.ActivityThread.performStopActivityInner (ActivityThread.java:5630)
  at android.app.ActivityThread.handleStopActivity (ActivityThread.java:5695)
  at android.app.servertransaction.StopActivityItem.execute (StopActivityItem.java:43)
  at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:60)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleItem (TransactionExecutor.java:282)
  at android.app.servertransaction.TransactionExecutor.executeTransactionItems (TransactionExecutor.java:150)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:93)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2595)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loopOnce (Looper.java:232)
  at android.os.Looper.loop (Looper.java:317)
  at android.app.ActivityThread.main (ActivityThread.java:8592)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:580)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:878)
Caused by kotlin.UninitializedPropertyAccessException: lateinit property scope has not been initialized
  at com.nextcloud.talk.chat.data.network.OfflineFirstChatRepository.handleOnStop (OfflineFirstChatRepository.kt:807)
  at com.nextcloud.talk.chat.viewmodels.ChatViewModel.onStop (ChatViewModel.kt:103)
  at androidx.lifecycle.DefaultLifecycleObserverAdapter.onStateChanged (DefaultLifecycleObserverAdapter.kt:28)
  at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent (LifecycleRegistry.jvm.kt:320)
  at androidx.lifecycle.LifecycleRegistry.backwardPass (LifecycleRegistry.jvm.kt:272)
  at androidx.lifecycle.LifecycleRegistry.sync (LifecycleRegistry.jvm.kt:289)
  at androidx.lifecycle.LifecycleRegistry.moveToState (LifecycleRegistry.jvm.kt:142)
  at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent (LifecycleRegistry.jvm.kt:124)
  at androidx.lifecycle.ReportFragment$Companion.dispatch$lifecycle_runtime_release (ReportFragment.android.kt:190)
  at androidx.lifecycle.ReportFragment$LifecycleCallbacks.onActivityPreStopped (ReportFragment.android.kt:135)
  at android.app.Activity.dispatchActivityPreStopped (Activity.java:1633)
  at android.app.Activity.performStop (Activity.java:9197)
  at android.app.ActivityThread.callActivityOnStop (ActivityThread.java:5650)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 11:36:39 +01:00
Marcel Hibbe
1bcdeb2d46
init other data earlier than ConversationModel
because setData was called too late (after sendTempChatMessages was called from messageInputFragment, internalConversationId was not initialized in repository).
With this change, internalConversationId, credentials and urlForChatting are initialized earlier which should avoid the issue.
However conversationModel is still initialized quite late and should be accessed with caution. This could may be improved by better architecture..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 10:48:17 +01:00
sowjanyakch
ef957508a3
make link clickable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-18 09:55:46 +01:00
Marcel Hibbe
d387b2f5a7
Merge pull request #4734 from nextcloud/bugfix/4673/fixDuplicatedMessages
Avoid duplicated messages when activity is in background.
2025-02-17 16:58:31 +00:00
sowjanyakch
80e98a0d8b
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 16:41:46 +01:00
sowjanyakch
ea608781c4
remove unused constant
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 16:40:23 +01:00
sowjanyakch
edcadbcd37
fix detekt
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 16:36:40 +01:00
Marcel Hibbe
30caa435ae
Avoid duplicated messages when activity is in background.
onDestroy is not called when navigating to the next activity or bringing the app to background. That's why the adapter was not set to null and all messages were added another time the next time the activity comes to foreground. With this fix, the adapter is set to null in onStop.

All in all, the adapter handling may not be the best, but will be replaced by Compose anyway..

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-02-17 14:59:15 +01:00
sowjanyakch
f418955e1d
label styling
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 13:09:29 +01:00
sowjanyakch
a133804f65
format code
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 13:09:29 +01:00
sowjanyakch
1ad186b94b
display label in the placeholder
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 13:09:28 +01:00
sowjanyakch
00b1b1fe51
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-02-17 12:25:43 +01:00
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