import { redirect } from 'next/navigation'; import { getCurrentUser, toPublicUser } from '@/lib/auth/getCurrentUser'; import { createNoteService } from '@/lib/api/services'; import { Header } from '@/components/layout/Header'; import { ProjectNav } from '@/components/layout/ProjectNav'; import { MarkdownBody } from '@/components/board/MarkdownBody'; import { NoteEditor } from '@/components/notes/NoteEditor'; import { ForbiddenError, NotFoundError } from '@/lib/errors'; import type { ProjectNote } from '@/lib/types'; export const dynamic = 'force-dynamic'; export default async function NoteDetailPage({ params, }: { params: Promise<{ projectId: string; noteId: string }>; }) { const user = await getCurrentUser(); if (!user) redirect('/login'); const { projectId, noteId } = await params; const noteService = createNoteService(); let note: ProjectNote; try { note = noteService.getNote(user.id, Number(noteId)); } catch (error) { if (error instanceof ForbiddenError || error instanceof NotFoundError) { redirect(`/projects/${projectId}/notes`); } throw error; } return (
← メモ一覧へ

{note.isPinned === 1 && '📌 '} {note.title}

{note.tags && (

{note.tags}

)}

作成: {note.createdAt} / 更新: {note.updatedAt}

); }