Commit graph

9837 commits

Author SHA1 Message Date
Nextcloud bot
e30f66f526
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-19 02:59:21 +00:00
Marcel Hibbe
0ff4adbadd
bump version to 20.0.5
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-18 10:25:28 +01:00
Marcel Hibbe
36ba3eab30
Merge pull request #4462 from nextcloud/backport/4451/stable-20.0
[stable-20.0] fix NPE currentConversation!!.internalId
2024-11-18 10:20:50 +01:00
Marcel Hibbe
54fc0573b3 fix NPE currentConversation!!.internalId
followup to PR #4439

Exception java.lang.NullPointerException:
  at com.nextcloud.talk.chat.MessageInputFragment.handleMessageQueue (MessageInputFragment.kt:251)
  at com.nextcloud.talk.chat.MessageInputFragment.access$handleMessageQueue (MessageInputFragment.kt:82)
  at com.nextcloud.talk.chat.MessageInputFragment$initObservers$4$1.invokeSuspend (MessageInputFragment.kt:192)
  at com.nextcloud.talk.chat.MessageInputFragment$initObservers$4$1.invoke (Unknown Source:12)
  at com.nextcloud.talk.chat.MessageInputFragment$initObservers$4$1.invoke (Unknown Source:8)
  at kotlinx.coroutines.flow.FlowKt__TransformKt$onEach$$inlined$unsafeTransform$1$2.emit (Emitters.kt:219)
  at kotlinx.coroutines.flow.FlowKt__ChannelsKt.emitAllImpl$FlowKt__ChannelsKt (Channels.kt:33)
  at kotlinx.coroutines.flow.FlowKt__ChannelsKt.access$emitAllImpl$FlowKt__ChannelsKt (Channels.kt:1)
  at kotlinx.coroutines.flow.FlowKt__ChannelsKt$emitAllImpl$1.invokeSuspend (Unknown Source:14)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:241)
  at android.os.Looper.loop (Looper.java:342)
  at android.app.ActivityThread.main (ActivityThread.java:8128)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:583)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1045)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-18 08:56:24 +00:00
Nextcloud bot
301e008d66
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-18 03:00:07 +00:00
Andy Scherzinger
ef4d175964
Merge pull request #4460 from nextcloud/backport/4458/stable-20.0
[stable-20.0] [l10n] Change apostrophe
2024-11-17 20:05:27 +01:00
Valdnet
b0411bc127 Change apostrophe
Signed-off-by: Valdnet <47037905+Valdnet@users.noreply.github.com>
2024-11-17 19:04:37 +00:00
Nextcloud bot
4161a55c22
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-17 03:06:14 +00:00
Nextcloud bot
02181ea8f2
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-16 02:58:00 +00:00
Nextcloud bot
74db04ec7c
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-15 02:59:00 +00:00
Marcel Hibbe
47433ea752
bump version to 20.0.4
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 16:11:21 +01:00
Marcel Hibbe
f94a0cf95c
Merge pull request #4436 from nextcloud/bugfix/noid/fixCallEmojiListByScrolling
fix to provide all call emojis
2024-11-14 16:02:18 +01:00
Marcel Hibbe
89964c0725
Merge pull request #4448 from nextcloud/bugfix/noid/fixWebsocketConnectionForChat
Bugfix/noid/fix websocket connection for chat
2024-11-14 15:54:53 +01:00
Marcel Hibbe
cd5ee2f619
fix to support different screen densities
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 15:36:59 +01:00
Marcel Hibbe
59ee0b0cb1
fix to provide all call emojis
As the number of provided emojis grew, there was a bug that only one emoji was shown.

Putting all 12 emojis would have been too close, so it's implemented to scroll them horizontally

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 15:36:59 +01:00
Julius Linus
3908d0ce14
Merge pull request #4441 from nextcloud/issue-4405-fix-filter
Align filter behavior with web
2024-11-14 06:55:23 -06:00
Marcel Hibbe
acd964869d
add disposable
however i was not able to see onDestroy being executed.

anyway, disposables won't be necessary when coroutine is used.

also: remove a useless outdated log line

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 13:41:06 +01:00
Marcel Hibbe
8dd1b885f3
fix check if federated is still the same
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 13:41:06 +01:00
Marcel Hibbe
3bd1a533e3
fix ANR error (blockingSubscribe in setupWebsocket)
The request seems to cause problems so blockingSubscribe doesn't seem to be a good choice here. This commit will replace blockingSubscribe by subscribe and modify the related code in order to be executed when the request succeeds.
The root cause why the request seems to cause problems may have to be analyzed further.

I was not able to reproduce the ANR without this PR, however the following error was reported on gplay console very often!:

      at jdk.internal.misc.Unsafe.park (Native method)
      at java.util.concurrent.locks.LockSupport.park (LockSupport.java:341)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode.block (AbstractQueuedSynchronizer.java:506)
      at java.util.concurrent.ForkJoinPool.unmanagedBlock (ForkJoinPool.java:3466)
      at java.util.concurrent.ForkJoinPool.managedBlock (ForkJoinPool.java:3437)
      at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await (AbstractQueuedSynchronizer.java:1623)
      at java.util.concurrent.LinkedBlockingQueue.take (LinkedBlockingQueue.java:435)
      at io.reactivex.internal.operators.observable.ObservableBlockingSubscribe.subscribe (ObservableBlockingSubscribe.java:56)
      at io.reactivex.Observable.blockingSubscribe (Observable.java:5552)
      at com.nextcloud.talk.chat.ChatActivity.setupWebsocket (ChatActivity.kt:2445)
      at com.nextcloud.talk.chat.ChatActivity.joinRoomWithPassword (ChatActivity.kt:2402)
      at com.nextcloud.talk.chat.ChatActivity.initObservers$lambda$13 (ChatActivity.kt:594)
      at com.nextcloud.talk.chat.ChatActivity.$r8$lambda$QKH5JCFLmCzRMlSJ-EV-m4IW5ig (unavailable)
      at com.nextcloud.talk.chat.ChatActivity$$ExternalSyntheticLambda38.invoke (D8$$SyntheticClass)
      at com.nextcloud.talk.chat.ChatActivity$sam$androidx_lifecycle_Observer$0.onChanged (unavailable:2)
      at androidx.lifecycle.LiveData.considerNotify (LiveData.java:133)
      at androidx.lifecycle.LiveData.dispatchingValue (LiveData.java:151)
      at androidx.lifecycle.LiveData.setValue (LiveData.java:309)
      at androidx.lifecycle.MutableLiveData.setValue (MutableLiveData.java:50)
      at com.nextcloud.talk.chat.viewmodels.ChatViewModel.getCapabilities (ChatViewModel.kt:240)
      at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invokeSuspend (ChatActivity.kt:553)
      at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invoke (unavailable:8)
      at com.nextcloud.talk.chat.ChatActivity$initObservers$1$1.invoke (unavailable: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$1.invokeSuspend (unavailable:15)
      at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
      at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
      at android.os.Handler.handleCallback (Handler.java:938)
      at android.os.Handler.dispatchMessage (Handler.java:99)
      at android.os.Looper.loopOnce (Looper.java:210)
      at android.os.Looper.loop (Looper.java:299)
      at android.app.ActivityThread.main (ActivityThread.java:8168)
      at java.lang.reflect.Method.invoke (Native method)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:556)
      at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1037)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 13:41:06 +01:00
Marcel Hibbe
e51ab67c37
fix check for remote server
As remote server is empty instead null when not available, the check was also true when no remote server was in use.

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-14 13:41:03 +01:00
github-actions[bot]
e1a3a03b61
Merge pull request #4447 from nextcloud/renovate/fsfe-reuse-action-5.x
chore(deps): update fsfe/reuse-action action to v5
2024-11-14 12:36:28 +01:00
renovate[bot]
6ed6277c75
chore(deps): update fsfe/reuse-action action to v5
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 11:25:23 +00:00
Sowjanya Kota
9257d41197
Merge pull request #4439 from nextcloud/bugfix/noid/fixNpeInRestoreMessageQueue
fix NPE in restoreMessageQueue
2024-11-14 09:56:12 +01:00
github-actions[bot]
20ee92e388
Merge pull request #4445 from nextcloud/renovate/com.mebigfatguy.fb-contrib-fb-contrib-7.x
fix(deps): update dependency com.mebigfatguy.fb-contrib:fb-contrib to v7.6.8
2024-11-14 05:07:13 +01:00
renovate[bot]
55fe39c902
fix(deps): update dependency com.mebigfatguy.fb-contrib:fb-contrib to v7.6.8
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-14 03:56:47 +00:00
Nextcloud bot
3f2a67f67b
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-14 03:01:05 +00:00
github-actions[bot]
e8b646fda6
Merge pull request #4444 from nextcloud/renovate/androidx.compose-compose-bom-2024.x
fix(deps): update dependency androidx.compose:compose-bom to v2024.11.00
2024-11-13 23:46:08 +01:00
renovate[bot]
3a4f8aac57
fix(deps): update dependency androidx.compose:compose-bom to v2024.11.00
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-13 22:37:53 +00:00
Sowjanya Kota
f0a9d6a1e1
Merge pull request #4442 from nextcloud/bugfix/noid/fixPreviousChatMessageCrash
fix crash when getting previousChatMessage
2024-11-13 16:03:12 +01:00
Marcel Hibbe
dcec7bd786
fix crash when getting previousChatMessage
when adapter has no items adapter!!.items[1].item will crash with IndexOutOfBoundsException

This could happen e.g. when chat history is cleared.

error was:

Exception java.lang.IndexOutOfBoundsException: Index 1 out of bounds for length 0
  at jdk.internal.util.Preconditions.outOfBounds (Preconditions.java:64)
  at jdk.internal.util.Preconditions.outOfBoundsCheckIndex (Preconditions.java:70)
  at jdk.internal.util.Preconditions.checkIndex (Preconditions.java:266)
  at java.util.Objects.checkIndex (Objects.java:359)
  at java.util.ArrayList.get (ArrayList.java:434)
  at com.nextcloud.talk.chat.ChatActivity.processMessagesFromTheFuture (ChatActivity.kt:2666)
  at com.nextcloud.talk.chat.ChatActivity.access$processMessagesFromTheFuture (ChatActivity.kt:209)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$1.invokeSuspend (ChatActivity.kt:875)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$1.invoke (Unknown Source:8)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$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$1.invokeSuspend (Unknown Source:15)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:201)
  at android.os.Looper.loop (Looper.java:288)
  at android.app.ActivityThread.main (ActivityThread.java:7932)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:942)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-13 15:20:39 +01:00
Sowjanya Kota
89f3d8a768
Merge pull request #4440 from nextcloud/bugfix/noid/fixUnreadMarkerCrash
fix crash for unreadMarker
2024-11-13 15:05:54 +01:00
rapterjet2004
ab4b3d633c
Fix behavior
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
2024-11-13 07:54:01 -06:00
Marcel Hibbe
b766abea5e
fix crash for unreadMarker
When messages were sorted out in handleSystemMessages it can happen that the chatMessageList is empty. Because setUnreadMessageMarker accessed chatMessageList[0] this crashed.

This can happen e.g. when only a reaction to a chat message was made before opening the chat.

Exception java.lang.IndexOutOfBoundsException: Empty list doesn't contain element at index 0.
  at kotlin.collections.EmptyList.get (Collections.kt:37)
  at kotlin.collections.EmptyList.get (Collections.kt:25)
  at com.nextcloud.talk.chat.ChatActivity.setUnreadMessageMarker (ChatActivity.kt:2691)
  at com.nextcloud.talk.chat.ChatActivity.processMessagesFromTheFuture (ChatActivity.kt:2651)
  at com.nextcloud.talk.chat.ChatActivity.access$processMessagesFromTheFuture (ChatActivity.kt:209)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$1.invokeSuspend (ChatActivity.kt:875)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$1.invoke (Unknown Source:8)
  at com.nextcloud.talk.chat.ChatActivity$initObservers$12$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$1.invokeSuspend (Unknown Source:15)
  at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
  at kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at android.app.ActivityThread.main (ActivityThread.java:8762)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:604)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1067)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-13 14:42:31 +01:00
Marcel Hibbe
f144b64365
fix NPE in restoreMessageQueue
currentConversation was not yet initialized in ChatActivity.
In the future this may be better handled via StateFlows. For now it's solved via arguments.

Without the fix, this NPE appeared:

Exception java.lang.RuntimeException:
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4768)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4801)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:54)
  at android.app.servertransaction.ActivityTransactionItem.execute (ActivityTransactionItem.java:45)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2215)
  at android.os.Handler.dispatchMessage (Handler.java:106)
  at android.os.Looper.loopOnce (Looper.java:346)
  at android.os.Looper.loop (Looper.java:475)
  at android.app.ActivityThread.main (ActivityThread.java:7889)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1009)
Caused by java.lang.NullPointerException:
  at com.nextcloud.talk.chat.MessageInputFragment.onResume (MessageInputFragment.kt:146)
  at androidx.fragment.app.Fragment.performResume (Fragment.java:3180)
  at androidx.fragment.app.FragmentStateManager.resume (FragmentStateManager.java:606)
  at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:285)
  at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:113)
  at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1433)
  at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:2977)
  at androidx.fragment.app.FragmentManager.dispatchResume (FragmentManager.java:2909)
  at androidx.fragment.app.FragmentController.dispatchResume (FragmentController.java:285)
  at androidx.fragment.app.FragmentActivity.onResumeFragments (FragmentActivity.java:334)
  at androidx.fragment.app.FragmentActivity.onPostResume (FragmentActivity.java:323)
  at androidx.appcompat.app.AppCompatActivity.onPostResume (AppCompatActivity.java:245)
  at android.app.Activity.performResume (Activity.java:8215)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4758)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-13 14:07:45 +01:00
Nextcloud bot
e268b7798e
Fix(l10n): Update translations from Transifex
Signed-off-by: Nextcloud bot <bot@nextcloud.com>
2024-11-13 03:03:33 +00:00
github-actions[bot]
1e7dfe13b8
Merge pull request #4438 from nextcloud/renovate/github-codeql-action-3.x
chore(deps): update github/codeql-action action to v3.27.3
2024-11-12 21:58:14 +01:00
renovate[bot]
4fd33bad89
chore(deps): update github/codeql-action action to v3.27.3
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 20:44:44 +00:00
github-actions[bot]
21eadca58c
Merge pull request #4434 from nextcloud/renovate/github-codeql-action-3.x
Update github/codeql-action action to v3.27.2
2024-11-12 12:54:47 +01:00
Marcel Hibbe
7c750df6e5
Merge pull request #4386 from nextcloud/implement_Short_long_press_options
Add support for all parameter in leave call endpoint
2024-11-12 12:53:26 +01:00
renovate[bot]
353c6c1687
chore(deps): update github/codeql-action action to v3.27.2
Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2024-11-12 11:29:59 +00:00
Marcel Hibbe
49c9b3c3e0
remove to set KEY_ROOM_ONE_TO_ONE twice
it's set in proceedToCall()

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-12 12:11:10 +01:00
Marcel Hibbe
79a8c16758
rename variables and methods
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
2024-11-12 12:11:10 +01:00
sowjanyakch
37c3f35f7a
suppress warning string format invalid
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:09 +01:00
sowjanyakch
4705d1f7b0
use proper names for popup menu
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:09 +01:00
sowjanyakch
121e77b753
use white background for popup button and formatting
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:09 +01:00
sowjanyakch
eda9b94182
use touch listeners for hiding popup button
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:09 +01:00
sowjanyakch
0920029183
show popup for leaving call in 1:1
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:08 +01:00
sowjanyakch
90628c34ce
set "all" parameter to false and set to null only before API call
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:08 +01:00
sowjanyakch
d09b7b5a07
remove isGroupConversation variable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:08 +01:00
sowjanyakch
cfe83dd027
remove isGroupConversation variable
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
2024-11-12 12:11:08 +01:00