Stabilize admin state and submission metadata
This commit is contained in:
@@ -174,8 +174,12 @@ const createSubmissionFromMultipart = async (
|
||||
|
||||
const storedAssetId = crypto.randomUUID();
|
||||
const originalKey = await storeUploadedFile(filePart, storedAssetId);
|
||||
const contributorName = fields.contributorName || defaults.contributorName || undefined;
|
||||
const lovedOneName = fields.lovedOneName || defaults.lovedOneName || undefined;
|
||||
const payload: SubmissionPayload = {
|
||||
displayName: fields.displayName || defaults.displayName || undefined,
|
||||
contributorName,
|
||||
lovedOneName,
|
||||
displayName: fields.displayName || defaults.displayName || lovedOneName || contributorName || undefined,
|
||||
caption: fields.caption || defaults.caption || undefined,
|
||||
promptAnswer: fields.promptAnswer || defaults.promptAnswer || undefined,
|
||||
allowArchive: defaults.allowArchive ?? coerceBoolean(fields.allowArchive),
|
||||
|
||||
@@ -10,7 +10,9 @@ import {
|
||||
defaultShowConfig,
|
||||
defaultTags,
|
||||
flattenSceneParams,
|
||||
indexCueOrder,
|
||||
mergeSceneParams,
|
||||
sortCuesByOrder,
|
||||
setSceneParamValue,
|
||||
type ContributorConsent,
|
||||
type Cue,
|
||||
@@ -174,6 +176,8 @@ const mergeImportedSubmission = (existing: Submission | undefined, imported: Sub
|
||||
return {
|
||||
...imported,
|
||||
...existing,
|
||||
contributorName: existing.contributorName ?? imported.contributorName,
|
||||
lovedOneName: existing.lovedOneName ?? imported.lovedOneName,
|
||||
displayName: existing.displayName ?? imported.displayName,
|
||||
caption: existing.caption ?? imported.caption,
|
||||
promptAnswer: existing.promptAnswer ?? imported.promptAnswer,
|
||||
@@ -181,13 +185,7 @@ const mergeImportedSubmission = (existing: Submission | undefined, imported: Sub
|
||||
};
|
||||
};
|
||||
|
||||
const normalizeCueOrder = (cues: Cue[]) =>
|
||||
[...cues]
|
||||
.sort((left, right) => left.orderIndex - right.orderIndex)
|
||||
.map((cue, index) => ({
|
||||
...cue,
|
||||
orderIndex: index
|
||||
}));
|
||||
const normalizeCueOrder = sortCuesByOrder;
|
||||
|
||||
const ensureSafeCue = (cues: Cue[]) => {
|
||||
const safeCue = defaultCueStack.find((cue) => cue.id === defaultShowConfig.safeSceneCueId);
|
||||
@@ -346,7 +344,10 @@ const buildGeneratedCueDraft = (state: RepositoryState, payload: CueGeneratePayl
|
||||
|
||||
const anchorSubmission = state.submissions.find((submission) => submission.id === selectedAssets[0]?.submissionId);
|
||||
const anchorLabel =
|
||||
anchorSubmission?.caption?.trim() || anchorSubmission?.promptAnswer?.trim() || anchorSubmission?.displayName?.trim();
|
||||
anchorSubmission?.caption?.trim() ||
|
||||
anchorSubmission?.promptAnswer?.trim() ||
|
||||
anchorSubmission?.lovedOneName?.trim() ||
|
||||
anchorSubmission?.displayName?.trim();
|
||||
const transitionOptions =
|
||||
scene.sceneFamily === "arrival"
|
||||
? (["shutter_reveal", "mist_reveal", "dissolve"] as const)
|
||||
@@ -444,7 +445,13 @@ export class StateStore {
|
||||
submittedAt: now,
|
||||
status: "processing",
|
||||
consentId,
|
||||
displayName: input.displayName,
|
||||
contributorName: normalizeEditableText(input.contributorName) || undefined,
|
||||
lovedOneName: normalizeEditableText(input.lovedOneName) || undefined,
|
||||
displayName:
|
||||
normalizeEditableText(input.displayName) ||
|
||||
normalizeEditableText(input.lovedOneName) ||
|
||||
normalizeEditableText(input.contributorName) ||
|
||||
undefined,
|
||||
caption: input.caption,
|
||||
promptAnswer: input.promptAnswer
|
||||
};
|
||||
@@ -489,6 +496,12 @@ export class StateStore {
|
||||
throw new Error("Submission not found.");
|
||||
}
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(payload, "contributorName")) {
|
||||
submission.contributorName = normalizeEditableText(payload.contributorName);
|
||||
}
|
||||
if (Object.prototype.hasOwnProperty.call(payload, "lovedOneName")) {
|
||||
submission.lovedOneName = normalizeEditableText(payload.lovedOneName);
|
||||
}
|
||||
if (Object.prototype.hasOwnProperty.call(payload, "displayName")) {
|
||||
submission.displayName = normalizeEditableText(payload.displayName);
|
||||
}
|
||||
@@ -671,7 +684,7 @@ export class StateStore {
|
||||
sorted.splice(targetIndex, 0, baseCue);
|
||||
}
|
||||
|
||||
state.cues = normalizeCueOrder(sorted);
|
||||
state.cues = indexCueOrder(sorted);
|
||||
return state;
|
||||
});
|
||||
}
|
||||
@@ -698,7 +711,7 @@ export class StateStore {
|
||||
const current = sorted[currentIndex]!;
|
||||
sorted[currentIndex] = sorted[swapIndex]!;
|
||||
sorted[swapIndex] = current;
|
||||
state.cues = normalizeCueOrder(sorted);
|
||||
state.cues = indexCueOrder(sorted);
|
||||
return state;
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user