fix(mobile-templates): discard the generation idempotency key once the server gives a final answer

This commit is contained in:
Yun Chan 2026-09-28 02:16:24 +09:00
parent 65320288d5
commit 7a8e1e3e25
5 changed files with 393 additions and 19 deletions

View file

@ -29,9 +29,7 @@ import {
type PreparedPortableFile,
} from '../features/data-portability'
import {
clearGenerationIdempotencyKey,
generateMeetingDocument,
getOrCreateGenerationIdempotencyKey,
generateMeetingDocumentOnce,
loadTemplateLibrary,
TemplateServiceError,
} from '../features/templates'
@ -417,18 +415,13 @@ export default function MeetingDetailScreen({
setBusyKey('document-generate')
setError(null)
try {
const idempotencyKey = await getOrCreateGenerationIdempotencyKey(
user.id,
meetingId,
templateId,
)
const title = `${detail.meeting.title?.trim() || t('mobile.meetings.untitled')} · ${selectedDocumentTemplate.name}`
.slice(0, 160)
const generated = await generateMeetingDocument({
const generated = await generateMeetingDocumentOnce({
userId: user.id,
accessToken: session.access_token,
meetingId,
templateId,
idempotencyKey,
title,
})
setDetail((current) => {
@ -444,7 +437,6 @@ export default function MeetingDetailScreen({
}
})
setExpandedDocumentId(generated.document.id)
await clearGenerationIdempotencyKey(user.id, meetingId, templateId).catch(() => undefined)
} catch (requestError) {
setError(templateErrorMessage(requestError, t))
} finally {