2eb2299709f71aca0fa9b32207db945e750437ac
根因 1 — MessageItem.toEntity() id=0 主键碰撞: WS 拉取的每条消息均用 id=0 insertOrReplace,批量消息相互覆盖, DB 中只留最后一条。改为 id=messageId(服务端唯一 ID)。 根因 2 — SendMessageUseCase 乐观写入 id=0 碰撞: 批量图片发送时所有乐观行共享 id=0,逐条覆盖。 改用负微秒时间戳作为临时唯一 id,HTTP 确认后用真实 messageId 替换。 根因 3 — watchByChatId 无 ORDER BY: DB 消息顺序不确定,宫格分组算法依赖时间升序失败。 在 MessageRepositoryImpl.watchByChatId 及 _buildDisplayItems 中 分别按 sendTime ASC + chatIdx ASC 排序。 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
customer-im-client
架构文档在 Doc/IM_App_架构设计.html,clone 到本地后用浏览器直接打开。
開發流程:
主項目:
IDE開啟主項目project: /custom-im-client/apps/im_app
每次pull/fetch後:
如果有新的.g文件引入失敗,可以透過指令生成: melos run gen
Description
Languages
Dart
85%
Shell
3.8%
C++
3.3%
Ruby
2.4%
CMake
1.9%
Other
3.6%