diff --git a/actions/active-sprint.ts b/actions/active-sprint.ts index b391d0a..9451190 100644 --- a/actions/active-sprint.ts +++ b/actions/active-sprint.ts @@ -40,3 +40,24 @@ export async function setActiveSprintAction(productId: string, sprintId: string) revalidatePath('/', 'layout') return { success: true, sprintId: parsed.data.sprintId } } + +export async function syncActiveSprintCookieAction(productId: string, sprintId: string) { + const session = await getSession() + if (!session.userId) return + if (session.isDemo) return + + const parsed = setSchema.safeParse({ productId, sprintId }) + if (!parsed.success) return + + const sprint = await prisma.sprint.findFirst({ + where: { + id: parsed.data.sprintId, + product_id: parsed.data.productId, + product: productAccessFilter(session.userId), + }, + select: { id: true }, + }) + if (!sprint) return + + await setActiveSprintCookie(parsed.data.productId, parsed.data.sprintId) +} diff --git a/app/(app)/products/[id]/sprint/[sprintId]/page.tsx b/app/(app)/products/[id]/sprint/[sprintId]/page.tsx index bdac0d5..a079bae 100644 --- a/app/(app)/products/[id]/sprint/[sprintId]/page.tsx +++ b/app/(app)/products/[id]/sprint/[sprintId]/page.tsx @@ -4,8 +4,8 @@ import { getSession } from '@/lib/auth' import { getAccessibleProduct } from '@/lib/product-access' import { prisma } from '@/lib/prisma' import { pbiStatusToApi } from '@/lib/task-status' -import { setActiveSprintCookie } from '@/lib/active-sprint' import { SprintBoardClient } from '@/components/sprint/sprint-board-client' +import { SyncActiveSprintCookie } from '@/components/sprint/sync-active-sprint-cookie' import { SprintHeader } from '@/components/sprint/sprint-header' import { SprintRunControls } from '@/components/sprint/sprint-run-controls' import { parsePauseContext } from '@/lib/pause-context' @@ -48,8 +48,6 @@ export default async function SprintBoardPage({ params, searchParams }: Props) { }) if (!sprint) notFound() - await setActiveSprintCookie(id, sprint.id) - const activeSprintRun = await prisma.sprintRun.findFirst({ where: { sprint_id: sprint.id, @@ -158,6 +156,7 @@ export default async function SprintBoardPage({ params, searchParams }: Props) { return (
+ { + syncActiveSprintCookieAction(productId, sprintId) + }, [productId, sprintId]) + return null +}