diff --git a/src/app/admin/manage/irasuto/page.tsx b/src/app/admin/manage/irasuto/page.tsx index 9fe2aff..047e29e 100644 --- a/src/app/admin/manage/irasuto/page.tsx +++ b/src/app/admin/manage/irasuto/page.tsx @@ -2,6 +2,8 @@ import { Collage } from "~/components/irasuto/collage"; import { Card } from "~/components/ui/card"; import { getPhotos } from "~/lib/irasuto/get-photos"; +import { RefreshButton } from "./refresh"; + export default async function Page() { const photos = await getPhotos(); return ( @@ -9,6 +11,9 @@ export default async function Page() { +
+ +
); } diff --git a/src/app/admin/manage/irasuto/refresh-action.ts b/src/app/admin/manage/irasuto/refresh-action.ts new file mode 100644 index 0000000..cc49700 --- /dev/null +++ b/src/app/admin/manage/irasuto/refresh-action.ts @@ -0,0 +1,8 @@ +"use server"; + +import { revalidateTag } from "next/cache"; + +// eslint-disable-next-line @typescript-eslint/require-await -- Server actions must be async +export async function refreshIrasuto() { + revalidateTag("photos"); +} diff --git a/src/app/admin/manage/irasuto/refresh.tsx b/src/app/admin/manage/irasuto/refresh.tsx new file mode 100644 index 0000000..3a09991 --- /dev/null +++ b/src/app/admin/manage/irasuto/refresh.tsx @@ -0,0 +1,17 @@ +"use client"; + +import { RotateCcw } from "~/components/icons"; +import { Button } from "~/components/ui/button"; +import { useTransitionWithNProgress } from "~/lib/hooks/use-transition-with-nprogress"; + +import { refreshIrasuto } from "./refresh-action"; + +export function RefreshButton() { + const startTransition = useTransitionWithNProgress(); + const refresh = () => startTransition(refreshIrasuto); + return ( + + ); +}