mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-07 03:10:12 +00:00
Wires the DraftSyncManager's reconcile/WS entry points (previously defined but never called in production) into the app's WebSocket and lifecycle flow. Design choice: WS draft events are treated as CHANGE SIGNALS that trigger an authoritative GET reconcile of the current team, not applied directly — this reuses Phase 4's matrix/scope/absence/observation-fence, and the server's silent empty-upsert delete (no event) forces GET-reconciliation regardless. The current-team GET also returns the user's DM/GM drafts, so it converges them too; other teams' channel drafts converge on team switch. Triggers: - draft_created / draft_deleted WS events -> enqueue -> reconcile current team (constants + app/actions/websocket/draft.ts handler + event dispatch cases). - Reconnect/first-connect: requestReconcile in doReconnect after entry batches. - Team switch: requestReconcile in handleTeamChange (before the tablet early return, so both paths fire). - Foreground: WebsocketManager forwards app-active to DraftSyncManager.onForeground (covers a socket that stayed open, so no reconnect fired). No second AppState listener is added. - Capability change: handleCapabilityChange after config (AllowSyncedDrafts) and after sync_drafts preference create/update/delete batches. Also adds a central empty-team guard in requestReconcile (the GET is per-team). Deferred (noted for a follow-up): Global Drafts stale-on-open reconcile (touches a screen, needs on-device verification); direct-apply of buffered WS events (the buffer is retained, reserved for that future optimization). tsc + eslint clean; new/updated unit tests across manager, ws handler, event dispatch, reconnect, team switch, config/preference capability. All affected suites green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| about_links.ts | ||
| action_type.ts | ||
| apps.ts | ||
| autocomplete.test.ts | ||
| autocomplete.ts | ||
| calls.ts | ||
| categories.ts | ||
| channel.ts | ||
| classification.ts | ||
| config.ts | ||
| custom_status.ts | ||
| database.ts | ||
| datetime.ts | ||
| deep_linking.ts | ||
| device.ts | ||
| draft.ts | ||
| emoji.ts | ||
| events.ts | ||
| files.ts | ||
| gallery.ts | ||
| general.ts | ||
| image.ts | ||
| index.ts | ||
| integrations.ts | ||
| launch.ts | ||
| license.ts | ||
| list.ts | ||
| members.ts | ||
| navigation.ts | ||
| network.ts | ||
| notification_level.ts | ||
| permissions.ts | ||
| post_draft.ts | ||
| post.ts | ||
| preferences.ts | ||
| profile.ts | ||
| push_notification.ts | ||
| push_proxy.ts | ||
| reaction_picker.ts | ||
| report_a_problem.ts | ||
| screens.ts | ||
| server_errors.ts | ||
| snack_bar.ts | ||
| sso.ts | ||
| supported_server.ts | ||
| team.ts | ||
| tooltip.ts | ||
| tutorial.ts | ||
| versions.ts | ||
| view.ts | ||
| websocket.ts | ||