waveform/components/settings/SettingsView.tsx
Chneemann 48151906d3
All checks were successful
Deploy Waveform to VPS / deploy (push) Successful in 1m13s
fix(settings): resolve scrolling layout issue and add spacing between collapsible cards
2026-09-27 20:37:39 +02:00

34 lines
1.1 KiB
TypeScript

/**
* @file components/settings/SettingsView.tsx
* @description Main container for user settings view displaying header and profile card.
*/
"use client";
import { useUser } from "@/lib/context/UserContext";
import { SettingsProfileCard } from "./SettingsProfileCard";
import { SettingsDeleteAccountCard } from "./SettingsDeleteAccountCard";
/** Renders the settings view layout for managing user profile settings. */
export function SettingsView() {
const { currentUser, updateCurrentUser } = useUser();
/** Sends optimistic updates to context and persists profile changes to the server API. */
const updateProfile = (fields: Partial<typeof currentUser>) => {
updateCurrentUser(fields);
fetch("/api/users/profile", {
method: "PATCH",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(fields),
}).catch((err) => console.error("Failed to update profile", err));
};
if (!currentUser) return null;
return (
<div className="flex-1 overflow-y-auto flex flex-col gap-4 py-4 min-h-0 pr-1">
<SettingsProfileCard onUpdate={updateProfile} />
<SettingsDeleteAccountCard />
</div>
);
}