fix(chat): render locked voice messages correctly

This commit is contained in:
2026-06-25 12:04:38 +08:00
parent f83e04ed6f
commit 8d956bc95d
8 changed files with 115 additions and 18 deletions
+5 -4
View File
@@ -114,17 +114,18 @@ function deriveUiLockFields(
| undefined,
imageUrl?: string | null,
): Partial<UiMessage> {
const isPrivateMessage =
lockDetail?.reason === "private_message" ||
lockDetail?.reason === "voice_message";
const lockReason = lockDetail?.reason ?? null;
const isPrivateMessage = lockReason === "private_message";
const isVoiceMessage = lockReason === "voice_message";
return {
...(imageUrl ? { imageUrl } : {}),
...(imageUrl && lockDetail?.showUpgrade ? { imagePaywalled: true } : {}),
...(lockDetail ? { locked: lockDetail.locked, lockReason } : {}),
...(isPrivateMessage ? { isPrivate: true } : {}),
...(isPrivateMessage && lockDetail?.locked
? { lockedPrivate: true }
: {}),
...(isPrivateMessage && lockDetail?.hint
...((isPrivateMessage || isVoiceMessage) && lockDetail?.hint
? { privateMessageHint: lockDetail.hint }
: {}),
};
+1
View File
@@ -323,6 +323,7 @@ export const chatMachine = setup({
? {
...message,
content: response.content ?? message.content,
locked: false,
lockedPrivate: false,
privateMessageHint: null,
isPrivate: message.isPrivate ?? true,