'use server'; import { revalidatePath } from 'next/cache'; import { eq } from '@/lib/db'; import { db, users } from '@/lib/db'; import { requireUser } from '@/lib/auth/session'; import type { ActionState } from '@/lib/auth/state'; import { storeUpload } from './uploads'; export async function uploadAvatarAction(_prev: ActionState, formData: FormData): Promise { const u = await requireUser('/account/settings'); const file = formData.get('file'); if (!(file instanceof File)) return { ok: false, error: 'Choose an image.' }; const res = await storeUpload(u.id, 'avatar', file); if ('error' in res) return { ok: false, error: res.error }; await db().update(users).set({ avatarUrl: res.url }).where(eq(users.id, u.id)); revalidatePath('/account/settings'); return { ok: true, message: 'Avatar updated.', data: { url: res.url } }; }