feat(shot-status): shot version beside the name, and a scaled-in-edit flag
Deploy / deploy (push) Successful in 7m28s
Deploy / deploy (push) Successful in 7m28s
Two small board additions. The shot version now shows next to the shot code. It is Shot.shotVersion — the value the AE panel burns into overlays and queueExport renders under, and the one the shot detail page edits — not a count of uploaded review Versions, so the board agrees with what the artist has in the panel. Shot.isScaled records that a shot is scaled in the edit: the plate is not used at its native size, which changes how the shot is comped and reviewed. That makes it a standing property of the shot rather than something buried in the notes, so it is flagged the way isKeyShot is — a cyan pill next to the shot name, and a Scaled toggle column beside Key. toggleScaledShot() (actions/shots.ts) mirrors toggleKeyShot, same roles. KeyShotToggle's switch markup would have been duplicated verbatim for the second flag, so both now sit on a shared FlagToggle taking a colour tone and a setter. The key-shot switch behaves exactly as before, optimistic update and rollback included. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -550,6 +550,34 @@ export async function toggleKeyShot(shotId: string, isKeyShot: boolean) {
|
||||
return { success: true };
|
||||
}
|
||||
|
||||
/**
|
||||
* Scaled in the edit: the plate is not used at its native size, which changes
|
||||
* how the shot is comped and reviewed. Same shape as toggleKeyShot — a standing
|
||||
* property of the shot, flipped from the shot-status board.
|
||||
*/
|
||||
export async function toggleScaledShot(shotId: string, isScaled: boolean) {
|
||||
const session = await auth();
|
||||
if (!session?.user) throw new Error("Unauthorized");
|
||||
if (!["ADMIN", "PRODUCER", "SUPERVISOR"].includes(session.user.role)) {
|
||||
throw new Error("Insufficient permissions");
|
||||
}
|
||||
|
||||
const shot = await db.shot.findUnique({
|
||||
where: { id: shotId },
|
||||
select: { projectId: true },
|
||||
});
|
||||
if (!shot) throw new Error("Shot not found");
|
||||
|
||||
await db.shot.update({
|
||||
where: { id: shotId },
|
||||
data: { isScaled },
|
||||
});
|
||||
|
||||
revalidatePath(`/projects/${shot.projectId}`);
|
||||
revalidatePath(`/shot-status`);
|
||||
return { success: true };
|
||||
}
|
||||
|
||||
export async function deleteShot(shotId: string) {
|
||||
const session = await auth();
|
||||
if (!session?.user) throw new Error("Unauthorized");
|
||||
|
||||
Reference in New Issue
Block a user