refactor(message): improve message synchronization and hook reliability
Some checks failed
Frontend CI / ota-android (push) Successful in 1m29s
Frontend CI / build-and-push-web (push) Failing after 1m31s
Frontend CI / ota-ios (push) Successful in 4m4s
Frontend CI / build-android-apk (push) Successful in 29m5s

Refactor the message management system to address synchronization issues and improve performance through request deduplication and enhanced lifecycle management.

- Implement in-flight promise tracking in `MessageSyncService` to prevent redundant network requests for conversations and messages.
- Enhance `useMessages` hook with `useFocusEffect` to trigger automatic synchronization when a chat screen regains focus.
- Add `forceSync` capability to `MessageManager` and `MessageSyncService` to allow manual overrides of loading states during re-entry.
- Consolidate WebSocket synchronization logic in `WSMessageHandler` using a throttled and deduplicated trigger mechanism.
- Clean up unused styles and deprecated hooks (`baseHooks.ts`, `bubbleStyles.ts`, `inputStyles.ts`).
- Update `metro.config.js` and `package.json` to include `@expo/ui` and optimize resolver settings.
This commit is contained in:
2026-06-03 10:31:46 +08:00
parent 2e6912dddf
commit 2e2f6e3467
13 changed files with 396 additions and 1115 deletions

View File

@@ -1,33 +0,0 @@
/**
* 输入框辅助样式
* 用于处理React Native Web在浏览器中的默认focus outline样式
*/
/**
* 移除浏览器默认focus outline的样式
* 这个样式可以覆盖浏览器原生的黑框/蓝框
*/
export const noFocusOutline = {
// 移除浏览器默认的outline针对Web
outlineWidth: 0,
outline: 'none' as const,
outlineColor: 'transparent',
// 兼容React Native Web
':focus': {
outlineWidth: 0,
outline: 'none',
},
// Webkit浏览器兼容
'::placeholder': {
outlineWidth: 0,
},
};
/**
* 为TextInput添加无outline样式
*/
export const inputNoFocusOutline = {
...noFocusOutline,
// 确保placeholder也没有outline
placeholderTextColor: undefined, // 会在使用时覆盖
};