mirror of
https://github.com/bretzel-app/crumbs.git
synced 2026-10-12 20:06:57 +02:00
Implement 4 user preferences (default note mode, default note color, hide footer, sidebar default state) with offline-first localStorage backed by server-side key-value storage. - Add user_preferences table (EAV pattern with unique user_id+key index) - Create server service with get/upsert operations - Add GET/PUT /api/preferences endpoints - Build Svelte 5 runes-based client store (.svelte.ts) - Wire preferences into app layout (footer toggle, sidebar state) - Wire default note mode/color into NoteEditor for new notes - Add Preferences tab as first item in Settings navigation - Add 7 unit tests and 4 E2E tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
19 lines
670 B
TypeScript
19 lines
670 B
TypeScript
import { json } from '@sveltejs/kit';
|
|
import type { RequestHandler } from './$types.js';
|
|
import { db } from '$lib/server/db/index.js';
|
|
import { getUserId } from '$lib/server/api-utils.js';
|
|
import { getPreferences, upsertPreferences } from '$lib/server/preferences.js';
|
|
|
|
export const GET: RequestHandler = async (event) => {
|
|
const userId = getUserId(event);
|
|
const prefs = getPreferences(db, userId);
|
|
return json(prefs);
|
|
};
|
|
|
|
export const PUT: RequestHandler = async ({ request, ...event }) => {
|
|
const userId = getUserId(event);
|
|
const body: Record<string, string> = await request.json();
|
|
const updated = upsertPreferences(db, userId, body);
|
|
return json(updated);
|
|
};
|