Commit Graph

4408 Commits

Author SHA1 Message Date
sowjanyakch
77d04994a1 remove unused imports
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:57 +00:00
sowjanyakch
9a4e7665ba editing mentions work
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
sowjanyakch
0486b283a0 move edit button on click listener to setEditUI
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
sowjanyakch
30a8fe4508 remove unused import
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
sowjanyakch
1e85be8456 use mention name in edit text field
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
sowjanyakch
ea98a6570c also get mentions from the input textfield
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
sowjanyakch
977bca384b include mentions in edited message
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-08 10:15:56 +00:00
Marcel Hibbe
f7fac17e2a fix that contact in search is clickable
A contact (so not a conversation yet!) had the VIEW_TYPE 2131558677, but 2131558687 was expected to identify the type, see FlexibleViewType.kt

The checks in onItemClick are replaced to directly change the type via kotlin "is" method.

best solution for future: FlexibleAdapter should be removed!-> replace with Compose!

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-07-08 07:10:28 +00:00
sowjanyakch
b6f92a10a4 avoid null
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-07 10:25:51 +00:00
sowjanyakch
14a7eca808 fix crash
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-07 10:25:51 +00:00
Marcel Hibbe
37b00ed782 fix crash when sending message
-> fix to handle null for getTempMessageForConversation

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-07-01 11:12:10 +00:00
sowjanyakch
0ed6123aa6 ktlint
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-01 09:36:43 +00:00
sowjanyakch
7e35f80c76 show delete all messages option in 1:1 conversation when canDeleteConversation is true
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-07-01 09:36:43 +00:00
Marcel Hibbe
9565f976e2 improve send status handling
replace sendingFailed with SendStatus

add auto migration (incl deleting of column sendingFailed)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-30 11:00:58 +00:00
Marcel Hibbe
26e7d5f6ff avoid duplicate messages by introducing a sendStatus
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-30 11:00:58 +00:00
Marcel Hibbe
f1f2fe88c1 fix IllegalStateException for LazyVerticalGrid
LazyVerticalGrid was measured with infinite height, which Compose does not allow.
By applying the availableHeight explicitly, this should fix the Exception:

Exception java.lang.IllegalStateException: Vertically scrollable component was measured with an infinity maximum height constraints, which is disallowed. One of the common reasons is nesting layouts like LazyColumn and Column(Modifier.verticalScroll()). If you want to add a header before the list of items please add a header as a separate item() before the main items() inside the LazyColumn scope. There are could be other reasons for this to happen: your ComposeView was added into a LinearLayout with some weight, you applied Modifier.wrapContentSize(unbounded = true) or wrote a custom layout. Please try to remove the source of infinite constraints in the hierarchy above the scrolling container.
  at androidx.compose.foundation.CheckScrollableContainerConstraintsKt.checkScrollableContainerConstraints-K40F9xA (CheckScrollableContainerConstraints.kt:35)
  at androidx.compose.foundation.lazy.grid.LazyGridKt$rememberLazyGridMeasurePolicy$1$1.invoke-0kLqBqw (LazyGrid.kt:174)
  at androidx.compose.foundation.lazy.grid.LazyGridKt$rememberLazyGridMeasurePolicy$1$1.invoke (LazyGrid.kt:172)
  at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke-0kLqBqw (LazyLayout.kt:119)
  at androidx.compose.foundation.lazy.layout.LazyLayoutKt$LazyLayout$3$2$1.invoke (LazyLayout.kt:112)
  at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:725)
  at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:135)
  at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s (GraphicsLayerModifier.kt:646)
  at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:188)
  at androidx.compose.foundation.layout.FillNode.measure-3p2s80s (Size.kt:699)
  at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:188)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:316)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:315)
  at androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:503)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:502)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:258)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:1782)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:40)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:696)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0 (LayoutNodeLayoutDelegate.kt:672)
  at androidx.compose.foundation.layout.BoxMeasurePolicy.measure-3p2s80s (Box.kt:151)
  at androidx.compose.foundation.layout.BoxWithConstraintsKt$BoxWithConstraints$1$1.invoke-0kLqBqw (BoxWithConstraints.kt:70)
  at androidx.compose.foundation.layout.BoxWithConstraintsKt$BoxWithConstraints$1$1.invoke (BoxWithConstraints.kt:67)
  at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s (SubcomposeLayout.kt:725)
  at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:135)
  at androidx.compose.foundation.layout.FillNode.measure-3p2s80s (Size.kt:699)
  at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0 (LayoutModifierNodeCoordinator.kt:188)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:316)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:315)
  at androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:503)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:502)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:258)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:1782)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:40)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:696)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.measure-BRTryo0 (LayoutNodeLayoutDelegate.kt:672)
  at androidx.compose.ui.layout.RootMeasurePolicy.measure-3p2s80s (RootMeasurePolicy.kt:38)
  at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0 (InnerNodeCoordinator.kt:135)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:316)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$performMeasureBlock$1.invoke (LayoutNodeLayoutDelegate.kt:315)
  at androidx.compose.runtime.snapshots.Snapshot$Companion.observe (Snapshot.kt:2441)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver$ObservedScopeMap.observe (SnapshotStateObserver.kt:502)
  at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads (SnapshotStateObserver.kt:258)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeReads$ui_release (OwnerSnapshotObserver.kt:133)
  at androidx.compose.ui.node.OwnerSnapshotObserver.observeMeasureSnapshotReads$ui_release (OwnerSnapshotObserver.kt:113)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:1782)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate.access$performMeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:40)
  at androidx.compose.ui.node.LayoutNodeLayoutDelegate$MeasurePassDelegate.remeasure-BRTryo0 (LayoutNodeLayoutDelegate.kt:696)
  at androidx.compose.ui.node.LayoutNode.remeasure-_Sx5XlM$ui_release (LayoutNode.kt:1222)
  at androidx.compose.ui.node.MeasureAndLayoutDelegate.doRemeasure-sdFAvZA (MeasureAndLayoutDelegate.kt:367)
  at androidx.compose.ui.node.MeasureAndLayoutDelegate.remeasureOnly (MeasureAndLayoutDelegate.kt:622)
  at androidx.compose.ui.node.MeasureAndLayoutDelegate.measureOnly (MeasureAndLayoutDelegate.kt:420)
  at androidx.compose.ui.platform.AndroidComposeView.onMeasure (AndroidComposeView.android.kt:1370)
  at android.view.View.measure (View.java:27557)
  at androidx.compose.ui.platform.AbstractComposeView.internalOnMeasure$ui_release (ComposeView.android.kt:309)
  at androidx.compose.ui.platform.AbstractComposeView.onMeasure (ComposeView.android.kt:296)
  at android.view.View.measure (View.java:27557)
  at android.widget.RelativeLayout.measureChild (RelativeLayout.java:696)
  at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:499)
  at android.view.View.measure (View.java:27557)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:1031)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:721)
  at android.view.View.measure (View.java:27557)
  at android.widget.RelativeLayout.measureChildHorizontal (RelativeLayout.java:735)
  at android.widget.RelativeLayout.onMeasure (RelativeLayout.java:481)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:7123)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
  at androidx.appcompat.widget.ContentFrameLayout.onMeasure (ContentFrameLayout.java:141)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:7123)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1608)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:878)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:721)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:7123)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:7123)
  at android.widget.LinearLayout.measureChildBeforeLayout (LinearLayout.java:1608)
  at android.widget.LinearLayout.measureVertical (LinearLayout.java:878)
  at android.widget.LinearLayout.onMeasure (LinearLayout.java:721)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewGroup.measureChildWithMargins (ViewGroup.java:7123)
  at android.widget.FrameLayout.onMeasure (FrameLayout.java:194)
  at com.android.internal.policy.DecorView.onMeasure (DecorView.java:824)
  at android.view.View.measure (View.java:27557)
  at android.view.ViewRootImpl.performMeasure (ViewRootImpl.java:4682)
  at android.view.ViewRootImpl.measureHierarchy (ViewRootImpl.java:3098)
  at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:3461)
  at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:2765)
  at android.view.ViewRootImpl$TraversalRunnable.run (ViewRootImpl.java:10219)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1544)
  at android.view.Choreographer$CallbackRecord.run (Choreographer.java:1553)
  at android.view.Choreographer.doCallbacks (Choreographer.java:1109)
  at android.view.Choreographer.doFrame (Choreographer.java:994)
  at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:1527)
  at android.os.Handler.handleCallback (Handler.java:958)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:257)
  at android.os.Looper.loop (Looper.java:368)
  at android.app.ActivityThread.main (ActivityThread.java:8839)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:572)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1049)

Also:
Suppress UnusedBoxWithConstraintsScope as it seems that the maxHeight and maxWidth variables are not recognized as being used when they are "only" used in calculations.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-25 07:59:44 +00:00
Marcel Hibbe
16d13fb2df
fix wrong plurals implementation
(backported manually)

- key was duplicated
- kotlin handling of plurals was missing

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-17 09:46:28 +02:00
rapterjet2004
198f9783b6 better null and error handling in the seekbar update observer
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-06-13 12:44:57 +00:00
Marcel Hibbe
c434394c3d catch http 405 if endpoint is not available.
E.g. for older server versions

Without this fix there would be the crash:

 E  FATAL EXCEPTION: main
 Process: com.nextcloud.talk2, PID: 7161
  retrofit2.HttpException: HTTP 405
  at retrofit2.KotlinExtensions$await$2$2.onResponse(KotlinExtensions.kt:53)
  at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:164)
  at okhttp3.internal.connection.RealCall$AsyncCall.run(RealCall.kt:519)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
  at java.lang.Thread.run(Thread.java:1012)
Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@4a67b41, Dispatchers.Main.immediate]

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-04 11:44:04 +00:00
Sowjanya Kota
3ebad8a49b
Merge pull request #5034 from nextcloud/backport/5028/stable-21.1
[stable-21.1] UI improvements to automatic conversation deletion information for event, sip and instant meetings conversation
2025-06-04 12:24:56 +02:00
sowjanyakch
3a71de3964 format
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-04 07:52:15 +00:00
sowjanyakch
a0ad34c479 remove menu item after pressing keep button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-04 07:52:15 +00:00
sowjanyakch
9e54aadea8 popup menu color
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-04 07:52:15 +00:00
sowjanyakch
1af65a68d4 consistent color to text and icon
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-04 07:52:15 +00:00
rapterjet2004
42ccf9a49d Fixes message timestamp color
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2025-06-04 07:36:08 +00:00
Marcel Hibbe
3b7bf2bbd4
Merge pull request #5029 from nextcloud/backport/5023/stable-21.1
[stable-21.1] Fix & rearrange options in conversation button menu
2025-06-04 07:24:50 +00:00
Marcel Hibbe
4341a59546 simplify how search results are shown
1. reverting changes from commit 971cc79b76. The scroll to methods are used in other places and a user reported that the search window suddenly opened without to search.
2. remove checkIfMessageIsSaved method. If the message is saved or not does not matter. The only fact for "scroll to" would be that it's loaded in the adapter.
3. As the adapter is always null with the current implementation (when coming back from the first search window), the "scroll to" is replaced with the startContextChatWindowForMessage. This could be changed again when adapter is not null anymore after coming back from the other screen...

startContextChatWindowForMessage

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-03 17:24:17 +00:00
Marcel Hibbe
b8b7909cf5 rely on conversationOperationLeave to show "Leave conversation" button
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-03 16:50:27 +00:00
Marcel Hibbe
b7b527ada9 rely on canDeleteConversation to show "Delete conversation" button
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-06-03 16:50:26 +00:00
sowjanyakch
c69b170b43 format
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-03 12:24:39 +00:00
sowjanyakch
ca2e26291e Include mentions in the attachments
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-06-03 12:24:39 +00:00
Marcel Hibbe
6f4cc903f8
Merge pull request #5014 from nextcloud/bugfix/4983/tryToAvoidCrashInConvInfo
try to avoid crash in conversation info
2025-05-30 14:17:02 +00:00
Marcel Hibbe
c01e058ff9
Merge pull request #5010 from nextcloud/initializeRootEglBaseEarlier
initialize rootEglBase earlier (hopefully fixes crash)
2025-05-30 14:15:17 +00:00
Marcel Hibbe
a559fd5ea6
try to avoid crash in conversation info
could not reproduce.
Code copied from Julius' PR https://github.com/nextcloud/talk-android/pull/5004/

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-30 16:10:20 +02:00
Marcel Hibbe
c8b33a380a
initialize rootEglBase earlier (hopefully fixes crash)
There was a report that the app crashed after coming back from PIP mode.

And i once saw in logs

"call to OpenGL ES API with no current context (logged once per thread)"

By initializing rootEglBase very early there is a chance this fixes these issues.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-30 15:34:20 +02:00
rapterjet2004
1ccc3ebb94
Getting users to show up on query
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-30 14:43:22 +02:00
Marcel Hibbe
6ec4e05cb1
suppress kltint warning about Property name
not sure why "Property name should start with a lowercase letter and use camel case (cannot be auto-corrected)" is shown.

also see commit
523b8080d1

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2025-05-30 09:49:00 +02:00
sowjanyakch
87f8272b10
ktlintFormat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:49:00 +02:00
sowjanyakch
05815ebeae
bug with search view alignment
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:59 +02:00
sowjanyakch
6d4e5d2774
hide added groups/circles
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:59 +02:00
sowjanyakch
f0cbe5113f
remove add width ratio
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:59 +02:00
sowjanyakch
4f8584bc75
remove already selected participants from the list
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:59 +02:00
sowjanyakch
652dd5033a
use constants and proper names
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:59 +02:00
sowjanyakch
6e48b86940
suppress lint - property name
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:58 +02:00
sowjanyakch
18b75233a5
lintformat
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:58 +02:00
sowjanyakch
b9e9d0ccd1
show selected participants when clicking on add button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:58 +02:00
sowjanyakch
c3ebeebcb0
update contacts list after clicking add button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:58 +02:00
sowjanyakch
c5c129b706
show add button even when search query is empty
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:58 +02:00
sowjanyakch
96541b7ad8
enable add button only when you select contacts
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:57 +02:00
sowjanyakch
e689e4f7f8
adjust search component width
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2025-05-30 09:48:57 +02:00