- 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>
23 行
727 B
TypeScript
23 行
727 B
TypeScript
import React, { useEffect } from 'react'
|
|
import { StatusBar, useColorScheme } from 'react-native'
|
|
import { SafeAreaProvider } from 'react-native-safe-area-context'
|
|
import { UpdateSDK } from '@xuqm/rn-sdk'
|
|
import { AuthProvider } from './src/context/AuthContext'
|
|
import AppNavigator from './src/navigation/AppNavigator'
|
|
import pluginMeta from './plugin.json'
|
|
|
|
UpdateSDK.registerPlugin(pluginMeta)
|
|
UpdateSDK._devSetAppVersion(1, '1.0.0')
|
|
|
|
export default function App() {
|
|
const isDarkMode = useColorScheme() === 'dark'
|
|
return (
|
|
<SafeAreaProvider>
|
|
<StatusBar barStyle={isDarkMode ? 'light-content' : 'dark-content'} />
|
|
<AuthProvider>
|
|
<AppNavigator />
|
|
</AuthProvider>
|
|
</SafeAreaProvider>
|
|
)
|
|
}
|