feat: store user theme prefs in DB instead of Appwrite account.getPrefs

db: create user_preferences table (isletmem) — userId unique index,
    theme/colorTheme/tweakcnTheme/radius/sidebar* columns

- user-prefs-actions.ts: getUserPrefs (server-side read, plain object),
  saveUserPrefsAction (upsert by userId, Permission.user for row security)
- schema.ts: TABLES.userPreferences added
- layout.tsx: replace account.getPrefs+JSON.parse hack with getUserPrefs()
- dashboard-shell, prefs-initializer, theme-customizer: import UserPrefs
  type and saveUserPrefsAction instead of old saveThemePrefsAction
- theme-prefs-actions.ts: deleted (no remaining references)

Reason: account.updatePrefs is shared across all apps in the same Appwrite
project (İşletmem + Emlak share project 69f27b51). A dedicated per-app
table gives proper isolation, typed schema, and no prototype-object issues.
This commit is contained in:
kovakmedya
2026-05-08 17:48:31 +03:00
parent 00c740de80
commit 971d8b0a58
7 changed files with 103 additions and 42 deletions
@@ -6,7 +6,7 @@ import { useSidebarConfig } from "@/contexts/sidebar-context";
import { useTheme } from "@/hooks/use-theme";
import { useThemeManager } from "@/hooks/use-theme-manager";
import { tweakcnThemes } from "@/config/theme-data";
import type { ThemePrefs } from "@/lib/appwrite/theme-prefs-actions";
import type { UserPrefs as ThemePrefs } from "@/lib/appwrite/user-prefs-actions";
import { getLocalThemePrefs } from "@/lib/local-theme-prefs";
export function PrefsInitializer({ prefs }: { prefs: ThemePrefs }) {