Scrum4Me/app/_components/tasks/edit-task-loader.tsx
Madhura68 03c90c1fdd feat(ST-1112): add Suspense skeleton for edit-mode task loading
Extracts task fetch into EditTaskLoader (async server component) so
the sprint board renders immediately while the task loads.
TaskDialogSkeleton shows 3 grey bars during the fetch. Invalid or
out-of-scope task IDs redirect to closePath.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 23:54:20 +02:00

47 lines
926 B
TypeScript

import { redirect } from 'next/navigation'
import { prisma } from '@/lib/prisma'
import { productAccessFilter } from '@/lib/product-access'
import { TaskDialog } from './task-dialog'
interface EditTaskLoaderProps {
taskId: string
userId: string
productId: string
closePath: string
isDemo: boolean
}
export async function EditTaskLoader({
taskId,
userId,
productId,
closePath,
isDemo,
}: EditTaskLoaderProps) {
const task = await prisma.task.findFirst({
where: {
id: taskId,
story: { product: productAccessFilter(userId) },
},
select: {
id: true,
title: true,
description: true,
implementation_plan: true,
priority: true,
status: true,
created_at: true,
},
})
if (!task) redirect(closePath)
return (
<TaskDialog
task={task}
productId={productId}
closePath={closePath}
isDemo={isDemo}
/>
)
}