1
0
Fork 0

feat(voiceover): add draft status to voice scripts and hide drafts from users

This commit is contained in:
Jason Fraley 2026-09-09 18:55:00 -04:00
parent dcaa8c9bbe
commit 6fe7dd62bd
6 changed files with 24519 additions and 6 deletions

View file

@ -63,13 +63,15 @@ export const VoiceScripts: CollectionConfig = {
name: "status",
type: "select",
required: true,
defaultValue: "open",
defaultValue: "draft",
options: [
{ label: "Draft", value: "draft" },
{ label: "Open", value: "open" },
{ label: "Closed", value: "closed" },
],
admin: {
description: "Closed scripts reject new submissions",
description:
"Draft scripts are hidden from the frontend. Open scripts accept submissions; closed scripts reject new ones.",
},
},
],

View file

@ -90,6 +90,7 @@ export async function listScriptsForUser(
const [scriptsRes, submissionsRes] = await Promise.all([
payload.find({
collection: "voice-scripts",
where: { status: { not_equals: "draft" } },
sort: "-createdAt",
limit: 0,
depth: 0,
@ -121,7 +122,7 @@ export async function getScriptForUser(
overrideAccess: true,
})
.catch(() => null);
if (!script) return null;
if (!script || script.status === "draft") return null;
const submissionsRes = await payload.find({
collection: "voice-submissions",

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,16 @@
import { MigrateUpArgs, MigrateDownArgs, sql } from "@payloadcms/db-postgres";
export async function up({ db, payload, req }: MigrateUpArgs): Promise<void> {
await db.execute(sql`
ALTER TYPE "public"."enum_voice_scripts_status" ADD VALUE IF NOT EXISTS 'draft' BEFORE 'open';`);
}
export async function down({ db, payload, req }: MigrateDownArgs): Promise<void> {
await db.execute(sql`
ALTER TABLE "voice_scripts" ALTER COLUMN "status" SET DATA TYPE text;
ALTER TABLE "voice_scripts" ALTER COLUMN "status" SET DEFAULT 'open'::text;
DROP TYPE "public"."enum_voice_scripts_status";
CREATE TYPE "public"."enum_voice_scripts_status" AS ENUM('open', 'closed');
ALTER TABLE "voice_scripts" ALTER COLUMN "status" SET DEFAULT 'open'::"public"."enum_voice_scripts_status";
ALTER TABLE "voice_scripts" ALTER COLUMN "status" SET DATA TYPE "public"."enum_voice_scripts_status" USING "status"::"public"."enum_voice_scripts_status";`);
}

View file

@ -49,6 +49,7 @@ import * as migration_20260908_172241_add_custom_minigame_collections from './20
import * as migration_20260908_193107_add_creator_xp_bank_field from './20260908_193107_add_creator_xp_bank_field';
import * as migration_20260908_194435_add_expose_edge_mines_field from './20260908_194435_add_expose_edge_mines_field';
import * as migration_20260909_153427_add_opord_recall_best_times from './20260909_153427_add_opord_recall_best_times';
import * as migration_20260909_223955_add_voice_script_draft_status from './20260909_223955_add_voice_script_draft_status';
export const migrations = [
{
@ -304,6 +305,11 @@ export const migrations = [
{
up: migration_20260909_153427_add_opord_recall_best_times.up,
down: migration_20260909_153427_add_opord_recall_best_times.down,
name: '20260909_153427_add_opord_recall_best_times'
name: '20260909_153427_add_opord_recall_best_times',
},
{
up: migration_20260909_223955_add_voice_script_draft_status.up,
down: migration_20260909_223955_add_voice_script_draft_status.down,
name: '20260909_223955_add_voice_script_draft_status'
},
];

View file

@ -3157,9 +3157,9 @@ export interface VoiceScript {
*/
spoiler?: boolean | null;
/**
* Closed scripts reject new submissions
* Draft scripts are hidden from the frontend. Open scripts accept submissions; closed scripts reject new ones.
*/
status: 'open' | 'closed';
status: 'draft' | 'open' | 'closed';
updatedAt: string;
createdAt: string;
}