refactor(user): apply change on update entries
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
/** Profile / account endpoints — ported from views/profile/profile.js. */
|
||||
import { apiFetch } from '$lib/api/client';
|
||||
import { getCsrfHeaders } from '$lib/api/csrf';
|
||||
import type { PublicUser } from '$lib/api/types';
|
||||
import type { SelfUser } from '$lib/api/types';
|
||||
import { t } from '$lib/i18n/index.svelte';
|
||||
|
||||
const JSON_HEADERS = { 'Content-Type': 'application/json' };
|
||||
@@ -24,7 +24,7 @@ export interface ProfilePatch {
|
||||
ui_preferences?: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export async function updateProfile(patch: ProfilePatch): Promise<PublicUser> {
|
||||
export async function updateProfile(patch: ProfilePatch): Promise<SelfUser> {
|
||||
const res = await apiFetch('/api/auth/me/profile', {
|
||||
method: 'PATCH',
|
||||
credentials: 'same-origin',
|
||||
@@ -57,7 +57,7 @@ export async function updateProfile(patch: ProfilePatch): Promise<PublicUser> {
|
||||
}
|
||||
throw new Error(err.message || err.error || `profile update failed: ${res.status}`);
|
||||
}
|
||||
return (await res.json()) as PublicUser;
|
||||
return (await res.json()) as SelfUser;
|
||||
}
|
||||
|
||||
export async function changePassword(currentPw: string, newPw: string): Promise<void> {
|
||||
|
||||
@@ -210,13 +210,13 @@
|
||||
|
||||
savingProfile = true;
|
||||
try {
|
||||
await updateProfile(patch);
|
||||
// Server returns the truncated `PublicUser` shape; re-fetch
|
||||
// `/me` so `session.me` picks up self-only edits (locale,
|
||||
// notify_on_share, ui_preferences bag) as well as the public
|
||||
// identity changes. `session.user` is a derived accessor over
|
||||
// `session.me.full.user`, so it updates in lockstep.
|
||||
await session.refresh();
|
||||
// PATCH /me/profile echoes SelfUser (same shape as GET /me)
|
||||
// so the SPA absorbs the just-written state in one round
|
||||
// trip — no follow-up refresh needed. `session.user` is a
|
||||
// derived accessor over `session.me.full.user`, so it
|
||||
// updates in lockstep with the me assignment.
|
||||
const updated = await updateProfile(patch);
|
||||
session.me = updated;
|
||||
if (patch.preferred_locale) await setLocale(patch.preferred_locale as Locale);
|
||||
ui.notify(t('profile.saved', 'Profile saved'), 'success');
|
||||
} catch (err) {
|
||||
|
||||
Reference in New Issue
Block a user