Commit Graph

4139 Commits

Author SHA1 Message Date
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