fix(chat): sync paid voice audio unlock flow
This commit is contained in:
@@ -14,7 +14,6 @@ function makeResponse(
|
||||
): ChatSendResponse {
|
||||
return ChatSendResponse.from({
|
||||
reply: "AI reply",
|
||||
audioUrl: "",
|
||||
messageId: "msg-1",
|
||||
isGuest: false,
|
||||
timestamp: 1782356425363,
|
||||
@@ -62,7 +61,6 @@ describe("sendResponseToUiMessage", () => {
|
||||
it("maps locked voice messages without treating them as private text", () => {
|
||||
const message = sendResponseToUiMessage(
|
||||
makeResponse({
|
||||
audioUrl: "",
|
||||
lockDetail: {
|
||||
locked: true,
|
||||
reason: "voice_message",
|
||||
@@ -78,6 +76,34 @@ describe("sendResponseToUiMessage", () => {
|
||||
expect(message.privateMessageHint).toBeUndefined();
|
||||
});
|
||||
|
||||
it("does not expose an audio URL from a locked send response", () => {
|
||||
const message = sendResponseToUiMessage(
|
||||
makeResponse({
|
||||
audioUrl: "https://example.com/locked-voice.mp3",
|
||||
lockDetail: {
|
||||
locked: true,
|
||||
reason: "voice_message",
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
expect(message.audioUrl).toBeUndefined();
|
||||
expect(message.locked).toBe(true);
|
||||
});
|
||||
|
||||
it("maps an audio URL from an unlocked send response", () => {
|
||||
const message = sendResponseToUiMessage(
|
||||
makeResponse({
|
||||
audioUrl: "https://example.com/unlocked-voice.mp3",
|
||||
}),
|
||||
);
|
||||
|
||||
expect(message.audioUrl).toBe(
|
||||
"https://example.com/unlocked-voice.mp3",
|
||||
);
|
||||
expect(message.locked).toBe(false);
|
||||
});
|
||||
|
||||
it("maps locked private text messages as private messages", () => {
|
||||
const message = sendResponseToUiMessage(
|
||||
makeResponse({
|
||||
@@ -227,7 +253,7 @@ describe("localMessagesToUi", () => {
|
||||
type: "voice",
|
||||
content: "hidden voice transcript",
|
||||
createdAt: "2026-06-25T12:00:00.000Z",
|
||||
audioUrl: null,
|
||||
audioUrl: "https://example.com/locked-history-voice.mp3",
|
||||
image: { type: null, url: null },
|
||||
lockDetail: {
|
||||
locked: true,
|
||||
|
||||
@@ -57,10 +57,6 @@ function makeUnlockPrivateResponse(
|
||||
creditsCharged: 10,
|
||||
requiredCredits: 10,
|
||||
shortfallCredits: 0,
|
||||
lockDetail: {
|
||||
locked: false,
|
||||
reason: null,
|
||||
},
|
||||
...overrides,
|
||||
});
|
||||
}
|
||||
@@ -822,10 +818,6 @@ describe("chatMachine transitions", () => {
|
||||
creditsCharged: 0,
|
||||
requiredCredits: 10,
|
||||
shortfallCredits: 7,
|
||||
lockDetail: {
|
||||
locked: true,
|
||||
reason: "voice_message",
|
||||
},
|
||||
}),
|
||||
},
|
||||
}),
|
||||
|
||||
@@ -57,10 +57,6 @@ describe("chat promotion", () => {
|
||||
type: "promotion",
|
||||
url: "https://example.com/unlocked.jpg",
|
||||
},
|
||||
lockDetail: {
|
||||
locked: false,
|
||||
reason: null,
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user