feat(chat): add private message unlock flow

This commit is contained in:
2026-06-23 13:21:57 +08:00
parent c9d75b6fe6
commit ebd44c4980
20 changed files with 455 additions and 29 deletions
+39
View File
@@ -68,6 +68,39 @@ export class ChatRepository implements IChatRepository {
);
}
/** 把本地缓存中的私密消息标记为已解锁。 */
async markPrivateMessageUnlockedInLocal(
messageId: string,
content: string,
): Promise<Result<void>> {
return Result.wrap(async () => {
const localResult = await this.getLocalMessages();
if (Result.isErr(localResult)) {
throw localResult.error;
}
let changed = false;
const updatedMessages = localResult.data.map((message) => {
if (message.id !== messageId) return message;
changed = true;
return ChatMessage.from({
...message.toJson(),
content,
isPrivate: message.isPrivate ?? true,
privateLocked: false,
privateHint: null,
});
});
if (!changed) return;
const saveResult = await this.saveMessagesToLocal(updatedMessages);
if (Result.isErr(saveResult)) {
throw saveResult.error;
}
});
}
// ============ 本地(Dexie)操作 ============
/** 把一条消息写入本地存储。 */
@@ -125,6 +158,9 @@ export class ChatRepository implements IChatRepository {
content: message.content,
createdAt: message.createdAt,
imageUrl: message.imageUrl,
isPrivate: message.isPrivate,
privateLocked: message.privateLocked,
privateHint: message.privateHint,
sessionId: "",
});
}
@@ -137,6 +173,9 @@ export class ChatRepository implements IChatRepository {
content: local.content,
createdAt: local.createdAt,
imageUrl: local.imageUrl,
isPrivate: local.isPrivate,
privateLocked: local.privateLocked,
privateHint: local.privateHint,
});
}