Skip to content

feat(ui): add the scheduling sheets and schedule on send long press - #3151

Draft
xsahil03x wants to merge 6 commits into
sahil/flu-954-scheduled-messages-ui-listfrom
sahil/flu-954-scheduled-messages-schedule-sheets
Draft

xsahil03x wants to merge 6 commits into
sahil/flu-954-scheduled-messages-ui-listfrom
sahil/flu-954-scheduled-messages-schedule-sheets

Conversation

@xsahil03x

Copy link
Copy Markdown
Member

Linear: FLU-954

Stacked on #3150. Uses stream_core_flutter from GetStream/stream-core-flutter#216 (StreamInlineNotification, calendar icon).

What changed

Adds scheduling a message to stream_chat_flutter.

  • showStreamScheduleMessageSheet offers tomorrow at 09:00, tomorrow at 13:00, next Monday at 09:00 and a custom time, and returns the chosen time. Presets outside the channel's min/max lead time aren't offered; when the channel already holds its maximum of pending scheduled messages, the sheet reads "Limit reached (N max)" and nothing can be picked.
  • showStreamScheduleTimeSheet picks a date and time (Material pickers in the design system's styling), previews the message, shows the time zone, and flags a time that's too soon or too far ahead. With onSchedule, it schedules before closing and stays open with the error when that fails. Rescheduling reuses it.
  • StreamMessageComposer schedules the message on a long press of Send when the channel has the schedule-message capability and onSendLongPress isn't set — applying preMessageSending, the link check and the dismissed link preview like a send, and clearing the composer once it's scheduled. Not offered while editing, for a command, or while an attachment hasn't uploaded.
  • New strings in Translations and all 11 locales; preset and time labels are formatted per locale.
  • Sample app: its own scheduling sheets and composer wiring are replaced by the SDK's.

Why

The sheets follow the Figma designs (schedule sheet, custom time) and the SDK's sheet conventions (showStreamSheet + StreamSheetHeader, StreamListTile rows, the dialogs' Cancel / confirm buttons). The presets, the lead-time bounds with a clock-skew buffer, keeping the custom sheet open on failure, and reusing it for reschedule match the React SDK; Android and iOS trigger scheduling with the same long press on Send.

Verified

  • Tests: stream_chat_flutter 1844 (plus sheet goldens), stream_chat_flutter_core 418, stream_chat_localizations 47, sample app 2.
  • dart analyze --fatal-infos clean on all packages; dart format clean.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@xsahil03x
xsahil03x added this pull request to stack #3152 November 10, 2026 08:43
@xsahil03x
xsahil03x force-pushed the sahil/flu-954-scheduled-messages-schedule-sheets branch 2 times, most recently from 9bde400 to af7a231 Compare November 10, 2026 14:35
xsahil03x and others added 3 commits November 10, 2026 16:08
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@xsahil03x
xsahil03x force-pushed the sahil/flu-954-scheduled-messages-schedule-sheets branch from af7a231 to 4c90263 Compare November 10, 2026 15:12
xsahil03x and others added 3 commits November 10, 2026 16:26
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant