6e006971102b1a60d542b9932d2845076f868b66
背景:ACTION_SEND 分享进来的内容在会话里与手打的完全看不出区别,主人要求「可识别」。 与后端定过的红线(devdocs/02 的 F4、ShareRules 的「为什么正文一个字都不加」)要求人类可见 标记只能放在客户端渲染层,所以本次正文、content 与任何上行字段一个字节都没动。 改了什么: - ChatViewModel 的 emitAndDeliver 多一个 localIdPrefix 参数(默认 local-,手打那条路逐字不变), sendShared 的每一条投递都传 share-:多张图会发多条消息,它们都是分享进来的,所以每条都带。 前缀只加在幂等键前面,后面仍是随机 UUID,唯一性不受影响。 - MessageSource.kt 新增两个常量与两个纯函数:isSharedClientMsgId 只认 share- 且要求后面还有尾巴 (恰好 share- 一律 false:本端铸键永远是 share-uuid,没有尾巴的键不是本端铸的,不能替一条 来路不明的消息声明「这是你分享的」);isSharedMessage 在它之上加一道只认 user 侧的闸。 - MessageBubble 的 bubbleFooter 多一个 shared 参数,角标 [用户分享] 紧挨来源角标拼在角标行里, 沿用这行既有的字级与颜色,不新造样式、不用 Material3,也只对用户侧气泡出现。 - 新增 SharedMessageBadgeTest:判据的六类边界取值与角标行里的落位。 为什么用幂等键而不是正文标记:clientMsgId 由服务端原样回填,是客户端读得回来的既有字段, 「这条怎么进来的」写在它上面不用新增任何协议,也不污染用户正文。
…
…
Releases
5
Alpha_v0.1.0_4
Latest