-
-
Notifications
You must be signed in to change notification settings - Fork 294
Feat: Schedule messages #5690
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Feat: Schedule messages #5690
Conversation
8a6b5c5 to
59b45c3
Compare
ff39280 to
568c89b
Compare
mahibi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
open a chat
see that there is an endless loop:
2026-01-21 10:33:45.652 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I <-- 200 https://xxxxxxxx.com/ocs/v2.php/apps/spreed/api/v1/chat/5845852403/schedule (175ms)
2026-01-21 10:33:45.653 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I server: nginx
2026-01-21 10:33:45.654 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I date: Wed, 21 Jan 2026 09:33:44 GMT
2026-01-21 10:33:45.654 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I content-type: application/json; charset=utf-8
2026-01-21 10:33:45.654 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-request-id: FJhH4va9pyZQNmF5fBhT
2026-01-21 10:33:45.654 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I cache-control: no-cache, no-store, must-revalidate
2026-01-21 10:33:45.654 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I content-security-policy: default-src 'none';base-uri 'none';manifest-src 'self';frame-ancestors 'none'
2026-01-21 10:33:45.655 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I feature-policy: autoplay 'none';camera 'none';fullscreen 'none';geolocation 'none';microphone 'none';payment 'none'
2026-01-21 10:33:45.655 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-robots-tag: noindex, nofollow
2026-01-21 10:33:45.655 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-user-id: marcel2
2026-01-21 10:33:45.655 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I strict-transport-security: max-age=15768000; includeSubDomains; preload
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I referrer-policy: no-referrer
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-content-type-options: nosniff
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-frame-options: SAMEORIGIN
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-permitted-cross-domain-policies: none
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-robots-tag: noindex, nofollow
2026-01-21 10:33:45.656 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I x-xss-protection: 1; mode=block
2026-01-21 10:33:45.658 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I {"ocs":{"meta":{"status":"ok","statuscode":200,"message":"OK"},"data":[]}}
2026-01-21 10:33:45.659 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I <-- END HTTP (74-byte body)
2026-01-21 10:33:45.699 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I --> GET https://xxxxxxxx.com/ocs/v2.php/apps/spreed/api/v1/chat/5845852403/schedule
2026-01-21 10:33:45.699 32164-4051 okhttp.OkHttpClient com.nextcloud.talk2 I Authorization: ██
This screen definitely needs a description in the header. At least "Scheduled messages" as first header and "In [conversationame]" as seconds header.
please align the icon with web (use the clock icon, not calendar):
the component for the ripple effect should be extended, it's quite small?
Also it would be better to keep it marked. This would make it more clear that the usr has to click on "Schedule message" afterwards. At first i was confused that clicking a time did not close the dialog and apply the selection.
The scheduled messages should be ordered by date and time. And also show the date, not only the time.
app/src/main/java/com/nextcloud/talk/data/source/local/Migrations.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/nextcloud/talk/data/source/local/TalkDatabase.kt
Outdated
Show resolved
Hide resolved
4147442 to
a55877d
Compare
|
APK file: https://www.kaminsky.me/nc-dev/android-artifacts/5690.apk |
f8cc00a to
175f242
Compare
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
Signed-off-by: sowjanyakch <sowjanya.kch@gmail.com>
175f242 to
fdcbeb7
Compare
mahibi
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
-
when recording a voice message with the lock feature, afterwards the message input is broken. no send button and no clock icon is shown
-
I would prefer a themed color instead of the grey. And as said there should be more padding. And at best rounded corners :D (fine for followup PRs)
-
Scheduled messages are not stored offline. This could be improved in the future (but after i finished the new chat architecture). But it would be nice to at least have a "Connection lost" message in this screen (just in case it happens when already having this screen opened during connection loss, otherwise it's not reachable which is fine) and have a well formatted info that explains that scheduled message can only be seen when being online. Currently it looks like this:
-
opening the scheduled messages screen crashed with:
2026-01-23 13:10:54.277 11356-11356 AndroidRuntime com.nextcloud.talk2 E FATAL EXCEPTION: main (Fix with AI)
Process: com.nextcloud.talk2, PID: 11356
java.lang.IllegalArgumentException: Key "-1586659327" was already used. If you are using LazyColumn/Row please make sure you provide a unique key for each item.
at androidx.compose.ui.internal.InlineClassHelperKt.throwIllegalArgumentException(InlineClassHelper.kt:36)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState.subcompose(SubcomposeLayout.kt:1591)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$Scope.subcompose(SubcomposeLayout.kt:1352)
at androidx.compose.foundation.lazy.layout.LazyLayoutMeasureScopeImpl.compose(LazyLayoutMeasureScope.kt:94)
at androidx.compose.foundation.lazy.layout.LazyLayoutMeasuredItemProvider.getPlaceables-3p2s80s(LazyLayoutMeasuredItem.kt:60)
at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw(LazyListMeasuredItemProvider.kt:53)
at androidx.compose.foundation.lazy.LazyListMeasuredItemProvider.getAndMeasure-0kLqBqw$default(LazyListMeasuredItemProvider.kt:47)
at androidx.compose.foundation.lazy.LazyListMeasureKt.measureLazyList-_s_dbAc(LazyListMeasure.kt:221)
at androidx.compose.foundation.lazy.LazyListKt$rememberLazyListMeasurePolicy$1$1.measure-0kLqBqw(LazyList.kt:353)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt.LazyLayout$lambda$1$3$0(LazyLayout.kt:141)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt.$r8$lambda$rf3vllu87hDgmhs57JbwRZ1rpS4(Unknown Source:0)
at androidx.compose.foundation.lazy.layout.LazyLayoutKt$$ExternalSyntheticLambda5.invoke(D8$$SyntheticClass:0)
at androidx.compose.ui.layout.LayoutNodeSubcompositionsState$createMeasurePolicy$1.measure-3p2s80s(SubcomposeLayout.kt:955)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-BRTryo0(InnerNodeCoordinator.kt:128)
at androidx.compose.ui.graphics.SimpleGraphicsLayerModifier.measure-3p2s80s(GraphicsLayerModifier.kt:843)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.lazy.layout.LazyLayoutBeyondBoundsProviderModifierNode.measure-3p2s80s(LazyLayoutBeyondBoundsModifierLocal.kt:122)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.foundation.layout.FillNode.measure-3p2s80s(Size.kt:721)
at androidx.compose.ui.node.LayoutModifierNodeCoordinator.measure-BRTryo0(LayoutModifierNodeCoordinator.kt:190)
at androidx.compose.ui.node.MeasurePassDelegate$performMeasureBlock$1.invoke(MeasurePassDelegate.kt:173)
at androidx.compose.ui.node.MeasurePassDelegate$performMeasureBlock$1.invoke(MeasurePassDelegate.kt:172)
at androidx.compose.runtime.snapshots.SnapshotStateObserver.observeReads(SnapshotStateObserver.kt:699)
at androidx.compose.ui.node.MeasurePassDelegate.remeasure-BRTryo0(MeasurePassDelegate.kt:1064)
at androidx.compose.ui.node.MeasurePassDelegate.measure-BRTryo0(MeasurePassDelegate.kt:470)
at androidx.compose.foundation.layout.RowColumnMeasurePolicyKt.measure(RowColumnMeasurePolicy.kt:208)
at androidx.compose.foundation.layout.RowColumnMeasurePolicyKt.measure$default(RowColumnMeasurePolicy.kt:77)
at androidx.compose.foundation.layout.ColumnMeasurePolicy.measure-3p2s80s(Column.kt:205)
at androidx.compose.ui.node.InnerNodeCoordinator.measure-....

Resolve #5634
🚧 TODO
🏁 Checklist
/backport to stable-xx.x