SPB Git

spb/rareindex

Public
863 B · 20 lines typescript
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
Files · 928c8dfd3710b817fe8e1e510fc295f59b7ddb9b
Menu

Theme