feat(chat): add private message unlock flow
This commit is contained in:
@@ -105,6 +105,41 @@ export const loadMoreHistoryActor = fromPromise<
|
||||
};
|
||||
});
|
||||
|
||||
export const unlockPrivateMessageActor = fromPromise<
|
||||
{
|
||||
messageId: string;
|
||||
response: import("@/data/dto/chat").UnlockPrivateResponse;
|
||||
},
|
||||
{ messageId: string }
|
||||
>(async ({ input }) => {
|
||||
const result = await chatRepo.unlockPrivateMessage(input.messageId);
|
||||
if (Result.isErr(result)) {
|
||||
log.error("[chat-machine] unlockPrivateMessageActor failed", {
|
||||
messageId: input.messageId,
|
||||
error: result.error,
|
||||
});
|
||||
throw result.error;
|
||||
}
|
||||
|
||||
if (result.data.unlocked && result.data.content != null) {
|
||||
const localResult = await chatRepo.markPrivateMessageUnlockedInLocal(
|
||||
input.messageId,
|
||||
result.data.content,
|
||||
);
|
||||
if (Result.isErr(localResult)) {
|
||||
log.error("[chat-machine] unlockPrivateMessageActor local sync failed", {
|
||||
messageId: input.messageId,
|
||||
error: localResult.error,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
messageId: input.messageId,
|
||||
response: result.data,
|
||||
};
|
||||
});
|
||||
|
||||
// ============================================================
|
||||
// WebSocket: long-lived callback
|
||||
// ============================================================
|
||||
|
||||
Reference in New Issue
Block a user