mattermost-mobile-upstream/assets/base/i18n
Nick Misasi 96a33da676
Add weekly recurring scheduled posts (#10025)
* Add repeat_type/repeat_timezone to scheduled posts data layer

Mirrors server support for weekly recurring scheduled posts (mattermost#37746):
- ScheduledPost schema v21 with repeat_type/repeat_timezone columns + migration
- ScheduledPostModel fields, toApi() now round-trips repeat fields and the
  previously-dropped type field (PUT is a full overwrite server-side)
- Transformer copies repeat fields and overwrites error_code instead of
  merging, so a recurring post that recovers clears its error state
- updateScheduledPost takes UpdateSchedulingInfo so reschedule can change
  recurrence; weekly requires a timezone at compile time

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Add Repeat weekly toggle to scheduling and reschedule screens

Gated on server >= 11.10 (no feature flag; older servers silently ignore
the repeat fields). The scheduled-post options sheet and the reschedule
screen share getScheduledPostRecurrence(), which resolves the recurrence
timezone (manual > automatic > UTC) matching the webapp. Rescheduling a
weekly post pre-checks the toggle; unchecking converts it to one-time.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Show Repeats weekly tag and hide Send for recurring scheduled posts

Scheduled-post rows show an info tag next to the Send on... header when
the post repeats weekly and is not in an error state, matching the webapp.
The Send option is absent for recurring posts (sending now would end or
fork the series), and the options sheet height is now derived from the
same booleans that drive rendering. isRecurringScheduledPost() is the
canonical recurrence predicate in @utils/scheduled_post.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Gate recurring scheduled posts on feature flag and disallow attachments

The server PR now gates recurrence behind the default-off
FeatureFlagRecurringScheduledPosts flag (only the off-to-weekly
transition is blocked when disabled) and rejects weekly posts with file
attachments, since files are bound to the first post they are attached
to. Replace the version gate with the flag check and hide the Repeat
weekly toggle when the draft has attachments; when the toggle is not
offered, the reschedule save omits the recurrence fields so an existing
series is preserved.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Address CodeRabbit review feedback

- Gate the picker's recurrence payload on the toggle actually being
  offered, closing a race where the feature flag flips off while the
  sheet is open; add a regression test
- Use the real isScheduledPostModel predicate in the model round-trip
  test instead of mocking it
- Cover the automatic-timezone branch of getScheduledPostRecurrence
- Align new picker tests with the advanceTimers helper, use nullish
  coalescing for raw.type, and fix test names to the should... format

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Refresh cached scheduled posts whose recurrence differs from the server

Rows cached before the repeat columns existed hold '' until the server bumps
update_at, which could leave a weekly post looking one-time (and ending the
series on reschedule) for up to a week.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

* Hide the channel and thread scheduled post indicator for recurring-only posts

Matches the webapp: a weekly series never leaves the list, so the indicator
only shows when at least one one-time post is scheduled. The thread count
now also excludes errored posts, like the channel count.

Co-authored-by: Nick Misasi <nick13misasi@gmail.com>

---------

Co-authored-by: Matty Code <mattycode@mattycode-1.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: mattermost-code <matty-code@mattermost.com>
2026-11-13 06:31:02 +00:00
..
am.json
ar-SA.json Added translation using Weblate (Arabic (Saudi Arabia)) 2025-01-27 18:12:49 +01:00
ar.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
be.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
bg.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
bn.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
br.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
ca.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
cs.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
da.json Translations update from Mattermost Weblate (#9855) 2026-06-17 17:10:42 -03:00
de.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
el.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
en_AU.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
en.json Add weekly recurring scheduled posts (#10025) 2026-11-13 06:31:02 +00:00
es.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
et.json
eu.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
fa.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
fi.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
fil.json
fr.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
fy.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
gl.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
gu.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
he.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
hi.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
hr.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
hu.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
id.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
is.json
it.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
ja.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
ka.json Translations update from Mattermost Weblate (#9747) 2026-05-11 12:54:28 +00:00
kk_Latn.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
kk.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
km.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
ko.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
la.json
lo.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
lt.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
lv.json
mk.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
ml.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
mn.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
nb_NO.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
ne.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
nl.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
pl.json Translations update from Mattermost Weblate (#9855) 2026-06-17 17:10:42 -03:00
pr.json
pt-BR.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
pt.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
ro.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
ru.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
si.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
sl.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
sq.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
sr.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
sv.json Translations update from Mattermost Weblate (#9855) 2026-06-17 17:10:42 -03:00
th.json Translations update from Mattermost Weblate (#9717) 2026-04-27 13:11:29 +00:00
tr.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
uk.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
vi.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00
zh-CN.json Translations update from Mattermost Weblate (#9968) 2026-07-27 16:09:01 +00:00
zh-TW.json Update translation files (#9776) 2026-05-22 15:45:07 +00:00