SPB Git forge

spb/rareindex

Public
54commits 1branches 0releases
7.1 MBsize
maindefault branch
10 days agolast push
TypeScript 61.9% HTML 37.2% SQL 0.7%
863 B · 20 lines typescript
Raw Blame History
1'use server';23import { revalidatePath } from 'next/cache';4import { eq } from '@/lib/db';5import { db, users } from '@/lib/db';6import { requireUser } from '@/lib/auth/session';7import type { ActionState } from '@/lib/auth/state';8import { storeUpload } from './uploads';910export async function uploadAvatarAction(_prev: ActionState, formData: FormData): Promise<ActionState> {11  const u = await requireUser('/account/settings');12  const file = formData.get('file');13  if (!(file instanceof File)) return { ok: false, error: 'Choose an image.' };14  const res = await storeUpload(u.id, 'avatar', file);15  if ('error' in res) return { ok: false, error: res.error };16  await db().update(users).set({ avatarUrl: res.url }).where(eq(users.id, u.id));17  revalidatePath('/account/settings');18  return { ok: true, message: 'Avatar updated.', data: { url: res.url } };19}20