"use server"; import config from "@payload-config"; import { getPayload } from "payload"; import type { StoryBeatState } from "@/payload-types"; import { isPayloadUser } from "@/utils/access-control/isPayloadUser"; import { markBeatRead, setBeatReaction, type StoryReaction } from "@/lib/story"; async function authenticate() { const payloadConfig = await config; const payload = await getPayload({ config: payloadConfig }); const { headers } = await import("next/headers"); const hdrs = await headers(); const { user } = await payload.auth({ headers: hdrs, canSetHeaders: false }); if (!isPayloadUser(user)) throw new Error("Unauthorized"); return { payload, user }; } export async function markStoryBeatRead( beatId: number, ): Promise<{ success: boolean; error?: string; data?: StoryBeatState }> { try { const { payload, user } = await authenticate(); const state = await markBeatRead(payload, { user, beatId }); return { success: true, data: state }; } catch (error) { const message = error instanceof Error ? error.message : "Unknown error"; if (message === "Unauthorized") { return { success: false, error: "You must be logged in." }; } return { success: false, error: message }; } } export async function setStoryBeatReaction( beatId: number, reaction: StoryReaction | null, ): Promise<{ success: boolean; error?: string; data?: { reaction: StoryReaction | null } }> { try { const { payload, user } = await authenticate(); const result = await setBeatReaction(payload, { user, beatId, reaction }); return { success: true, data: result }; } catch (error) { const message = error instanceof Error ? error.message : "Unknown error"; if (message === "Unauthorized") { return { success: false, error: "You must be logged in." }; } return { success: false, error: message }; } }