Skip to content

MM-46380: Support status updates without a reminder ("Never" option) - #2330

Draft
calebroseland wants to merge 3 commits into
masterfrom
MM-46380
Draft

MM-46380: Support status updates without a reminder ("Never" option)#2330
calebroseland wants to merge 3 commits into
masterfrom
MM-46380

Conversation

@calebroseland

Copy link
Copy Markdown
Member

Summary

Allows a playbook (and an in-progress run) to be configured with no status-update reminder by adding a "Never" option to the reminder timer dropdowns.

  • Playbook editor: the status-update section now offers "Never"; when selected it reads "A status update is never expected." and clicking "never" reopens the dropdown to reconfigure.
  • Run time: "Never" is supported when posting a status update, in the legacy slash-command update dialog, and in the reminder-prompt snooze menu — selecting it no longer raises a validation error.
  • Run status widget: a new Remove reminder item in the kebab (⋮) menu clears an already-scheduled reminder in place (with a confirmation), without having to post an update or use the reminder post.
  • Server validation that previously rejected a 0 reminder (createPlaybook, the status-update path, and the reminder-reset path) now accepts 0; negative values are still rejected. A 0 reminder means "no reminder" — the scheduler already skips scheduling and overdue tracking for it, so no scheduling changes were required.

Ticket Link

https://mattermost.atlassian.net/browse/MM-46380

Test Plan

  • Unit tests added — isNeverOptionSelected (never-vs-empty reminder distinction) and the playbook editor "never expected" text variant
  • Cypress tests added — selecting "Never" in the editor and reconfiguring; removing a scheduled reminder from the run widget kebab; updated the existing kebab assertion for the new menu item
  • make i18n-extract, make check-style-server, go test ./api ./app, and the webapp unit suite pass

Known Issues / Review Notes

  • The webapp post-update modal distinguishes an explicit "Never" selection (valid, reminder 0) from an unset picker (still invalid) via an isNeverOptionSelected helper.
  • The legacy slash-command dialog uses a bare-literal "Never" option to match its peer options (no i18n key), so no server en.json change.
  • Follow-up (out of scope): the GraphQL/REST updatePlaybook path does not validate a negative ReminderTimerDefaultSeconds (pre-existing; the UI cannot emit a negative value). Could add a >= 0 guard for parity with REST createPlaybook.

Checklist

  • Gated by experimental feature flag (this plugin does not use experimental feature flags)
  • Unit tests updated

Add a "Never" option to the status-update reminder timer so a
playbook (and an in-progress run) can be configured with no
default reminder. Relax the server validation that rejected a
zero reminder in createPlaybook, the status-update path, and
the reminder-reset path; negative values are still rejected.

Surfaces a "Never" choice in the playbook editor (with the text
changing to "A status update is never expected."), the post
update modal, the legacy update dialog, and the reminder snooze
menu, plus a "Remove reminder" action on the run status widget
to clear a scheduled reminder in place.

MM-46380

Context: /longshot — add "Never" status-update reminder (0 = no reminder) across editor, run modal, snooze, legacy dialog, and run-widget kebab
Add unit coverage for the never-vs-empty reminder distinction
(isNeverOptionSelected) and the playbook editor "never expected"
text variant, plus Cypress coverage for selecting Never in the
editor and removing a scheduled reminder from the run widget.

Extract the en.json strings, add a status-update-timer test id,
and update the existing run-widget kebab assertion to account for
the new "Remove reminder" item.

MM-46380

Context: /longshot phase 4-5 — tests + i18n/lint for the "Never" reminder feature
Guard the post-update reminder warning so it is not mis-computed
when "Never" is selected (reminder is 0 but the selection is
valid). Make the run-widget DropdownItem disabled prop optional
and drop a redundant disabled={false}. Add a unit case for an
option with an undefined value.

MM-46380

Context: /longshot phase 6 — review fixes for the "Never" status-update reminder feature
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