- Add isNetworkError() helper and FetchCurrentUserResult discriminated union to prevent logout on network failures
- Refactor authService to return { kind: 'user' } | { kind: 'auth_failed' } | { kind: 'network_error' }
- Update authStore to preserve login state on network errors, only logout on auth failures
- Replace WSMessageHandler with RealtimeIngestionPipeline for improved real-time message handling
- Remove MessageDeduplication service; add store-level idempotent addOrReplaceMessage for message dedup
- Add atomic systemUnreadCount operations to prevent race conditions
- Add SearchHeader component for consistent search UI across screens
- Add 'home' TabBar variant with underline style matching HomeScreen
- Add Jest test infrastructure and exclude tests from tsconfig
- Fix ChatScreen history lock being stuck when scrolling to latest messages
- Remove unused call_participant_joined/left WS event types
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
/**
|
|
* 业务组件导出
|
|
*/
|
|
|
|
// PostCard 新架构(从 PostCard 目录导出)
|
|
export { default as PostCard } from './PostCard';
|
|
// 导出 PostCard 相关类型和工具
|
|
export type {
|
|
PostCardActionType,
|
|
PostCardAction,
|
|
PostCardOnAction,
|
|
PostCardFeatures,
|
|
PostCardFeaturesPreset,
|
|
PostCardFeaturesConfig,
|
|
PostCardProps,
|
|
} from './PostCard';
|
|
export { default as CommentItem } from './CommentItem';
|
|
export { default as UserProfileHeader } from './UserProfileHeader';
|
|
export { default as SystemMessageItem } from './SystemMessageItem';
|
|
export { default as SearchBar } from './SearchBar';
|
|
export { default as SearchHeader } from './SearchHeader';
|
|
export { default as TabBar } from './TabBar';
|
|
export { default as VoteCard } from './VoteCard';
|
|
export { default as VoteEditor } from './VoteEditor';
|
|
export { default as VotePreview } from './VotePreview';
|
|
export { default as PostContentRenderer } from './PostContentRenderer';
|
|
export { default as PostMentionInput } from './PostMentionInput';
|
|
export type { PostMentionInputHandle } from './PostMentionInput';
|
|
export { default as BlockEditor } from './BlockEditor';
|
|
export type { BlockEditorHandle } from './BlockEditor';
|
|
export { default as ReportDialog } from './ReportDialog';
|
|
export { default as ShareSheet } from './ShareSheet';
|
|
export { TradeCard } from './TradeCard/TradeCard';
|