fix(chat): avoid overwriting user messages on unlock

This commit is contained in:
2026-07-01 10:22:11 +08:00
parent 5d9ed7e027
commit 9c45c7eb69
2 changed files with 77 additions and 1 deletions
+12 -1
View File
@@ -16,7 +16,7 @@ export function applySingleUnlockOutput(
if (!output.response.unlocked) return [...messages];
return messages.map((message) => {
if (message.id !== output.messageId) return message;
if (!shouldApplySingleUnlock(message, output.messageId)) return message;
const nextContent =
output.response.content.length > 0
@@ -38,6 +38,17 @@ export function applySingleUnlockOutput(
});
}
function shouldApplySingleUnlock(message: UiMessage, messageId: string): boolean {
if (message.id !== messageId) return false;
if (!message.isFromAI) return false;
if (message.locked !== true) return false;
return (
message.imagePaywalled === true ||
message.lockReason === "private_message" ||
message.lockReason === "voice_message"
);
}
export function shouldAutoUnlockHistory(messages: readonly UiMessage[]): boolean {
return countLockedHistoryMessages(messages) === 1;
}