mirror of
https://github.com/mattermost/mattermost-mobile.git
synced 2026-11-07 03:10:12 +00:00
Adds the durable storage foundation for synchronized drafts (mobile-only, no network behavior yet): - Fix draft batch dedup in handleDraft to key by the composite (channel_id, root_id) instead of channel_id alone, so a channel draft and its thread reply drafts in the same batch no longer collapse. - Add Draft columns: server_update_at (nullable ancestry hint, not a revision), props (JSON), file_ids (JSON portable server attachment IDs). - Add the DraftOutbox table (one durable pending op per draft key) with operation/status const objects, generation, keep_local, retry fields, and a deleted_fingerprint column for delete-vs-newer-write disambiguation. - Add buildDraftOutboxId, the serialized mutateDraftAndOutbox writer primitive (enters database.write before querying both tables, commits one batch), and deterministic repairDuplicateDrafts. - Bump server schema 20 -> 21 with addColumns + createTable migration; register schema/model in the database managers, mocks, types, and docs. Tests: composite-key survival, concurrent-mutation serialization, batch failure atomicity, duplicate repair winner, model round-trip / migration compatibility, and migration definition. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43 lines
2.4 KiB
TypeScript
43 lines
2.4 KiB
TypeScript
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
|
// See LICENSE.txt for license information.
|
|
|
|
export {default as CategoryModel} from './category';
|
|
export {default as CategoryChannelModel} from './category_channel';
|
|
export {default as ChannelModel} from './channel';
|
|
export {default as ChannelBookmarkModel} from './channel_bookmark';
|
|
export {default as ChannelInfoModel} from './channel_info';
|
|
export {default as ChannelMembershipModel} from './channel_membership';
|
|
export {default as ConfigModel} from './config';
|
|
export {default as CustomEmojiModel} from './custom_emoji';
|
|
export {default as CustomProfileFieldModel} from './custom_profile_field';
|
|
export {default as CustomProfileAttributeModel} from './custom_profile_attribute';
|
|
export {default as DraftModel} from './draft';
|
|
export {default as DraftOutboxModel} from './draft_outbox';
|
|
export {default as FileModel} from './file';
|
|
export {default as GroupModel} from './group';
|
|
export {default as GroupChannelModel} from './group_channel';
|
|
export {default as GroupMembershipModel} from './group_membership';
|
|
export {default as GroupTeamModel} from './group_team';
|
|
export {default as MyChannelModel} from './my_channel';
|
|
export {default as MyChannelSettingsModel} from './my_channel_settings';
|
|
export {default as MyTeamModel} from './my_team';
|
|
export {default as PostModel} from './post';
|
|
export {default as PostsInChannelModel} from './posts_in_channel';
|
|
export {default as PostsInThreadModel} from './posts_in_thread';
|
|
export {default as PreferenceModel} from './preference';
|
|
export {default as PropertyFieldModel} from './property_field';
|
|
export {default as PropertyValueModel} from './property_value';
|
|
export {default as ReactionModel} from './reaction';
|
|
export {default as RoleModel} from './role';
|
|
export {default as ScheduledPostModel} from './scheduled_post';
|
|
export {default as SystemModel} from './system';
|
|
export {default as TeamChannelHistoryModel} from './team_channel_history';
|
|
export {default as TeamMembershipModel} from './team_membership';
|
|
export {default as TeamModel} from './team';
|
|
export {default as TeamSearchHistoryModel} from './team_search_history';
|
|
export {default as ThreadModel} from './thread';
|
|
export {default as ThreadInTeamModel} from './thread_in_team';
|
|
export {default as ThreadParticipantModel} from './thread_participant';
|
|
export {default as TeamThreadsSyncModel} from './team_threads_sync';
|
|
export {default as UserModel} from './user';
|