feat: complete production chat demo — all screens, real media, SDK remote init
- App.tsx: replaced dev console with AuthProvider + AppNavigator
- Auth: Login, Register, ResetPassword screens via demo-service
- Conversations: reactive WatermelonDB subscription with user profile enrichment
- Chat: SingleChat + GroupChat with full media (image/video/audio/file), revoke, pull-up load more
- Contacts: local contacts list + UserSearch with debounced fuzzy search
- Groups: GroupList, CreateGroup (fuzzy member picker), GroupMembers, GroupSettings
- Profile: view + EditProfile (nickname, gender)
- MessageSearch: local DB full-text search across conversations
- ChatInput: text, 20-emoji picker, image/video/audio/file send, tap-to-record audio
- DisconnectBanner: connection status with reconnect
- AuthContext: uses await XuqmSDK.initialize({ appId, serverUrl }) for remote config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:41:54 +08:00
|
|
|
export type AuthStackParams = {
|
|
|
|
|
Login: undefined
|
|
|
|
|
Register: undefined
|
|
|
|
|
ResetPassword: undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type MainTabParams = {
|
|
|
|
|
ConversationList: undefined
|
|
|
|
|
Contacts: undefined
|
|
|
|
|
Profile: undefined
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export type RootStackParams = {
|
|
|
|
|
Main: undefined
|
|
|
|
|
SingleChat: { targetId: string; targetName: string; targetAvatar?: string }
|
|
|
|
|
GroupChat: { groupId: string; groupName: string }
|
2026-04-27 13:42:48 +08:00
|
|
|
UserSearch: { addToGroupId?: string } | undefined
|
2026-04-28 20:11:38 +08:00
|
|
|
FriendRequests: undefined
|
feat: complete production chat demo — all screens, real media, SDK remote init
- App.tsx: replaced dev console with AuthProvider + AppNavigator
- Auth: Login, Register, ResetPassword screens via demo-service
- Conversations: reactive WatermelonDB subscription with user profile enrichment
- Chat: SingleChat + GroupChat with full media (image/video/audio/file), revoke, pull-up load more
- Contacts: local contacts list + UserSearch with debounced fuzzy search
- Groups: GroupList, CreateGroup (fuzzy member picker), GroupMembers, GroupSettings
- Profile: view + EditProfile (nickname, gender)
- MessageSearch: local DB full-text search across conversations
- ChatInput: text, 20-emoji picker, image/video/audio/file send, tap-to-record audio
- DisconnectBanner: connection status with reconnect
- AuthContext: uses await XuqmSDK.initialize({ appId, serverUrl }) for remote config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:41:54 +08:00
|
|
|
GroupList: undefined
|
|
|
|
|
CreateGroup: undefined
|
|
|
|
|
GroupMembers: { groupId: string; groupName: string }
|
2026-04-28 20:11:38 +08:00
|
|
|
GroupSettings: { groupId: string; groupName: string; isAdmin?: boolean }
|
|
|
|
|
GroupJoinRequests: { groupId: string; groupName: string }
|
feat: complete production chat demo — all screens, real media, SDK remote init
- App.tsx: replaced dev console with AuthProvider + AppNavigator
- Auth: Login, Register, ResetPassword screens via demo-service
- Conversations: reactive WatermelonDB subscription with user profile enrichment
- Chat: SingleChat + GroupChat with full media (image/video/audio/file), revoke, pull-up load more
- Contacts: local contacts list + UserSearch with debounced fuzzy search
- Groups: GroupList, CreateGroup (fuzzy member picker), GroupMembers, GroupSettings
- Profile: view + EditProfile (nickname, gender)
- MessageSearch: local DB full-text search across conversations
- ChatInput: text, 20-emoji picker, image/video/audio/file send, tap-to-record audio
- DisconnectBanner: connection status with reconnect
- AuthContext: uses await XuqmSDK.initialize({ appId, serverUrl }) for remote config
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 16:41:54 +08:00
|
|
|
EditProfile: undefined
|
|
|
|
|
MessageSearch: { targetId?: string; chatType?: 'SINGLE' | 'GROUP' }
|
|
|
|
|
}
|