diff --git a/src/lib/api/adapters/user.adapter.ts b/src/lib/api/adapters/user.adapter.ts index 00d86afe..b396b49d 100644 --- a/src/lib/api/adapters/user.adapter.ts +++ b/src/lib/api/adapters/user.adapter.ts @@ -149,9 +149,10 @@ export class UserAdapter extends BaseAdapter { * Update user profile */ async updateProfile(updates: Partial): Promise { + // Wrap updates in 'user' key as required by Rails backend const result = await this.request('/users/me', { method: 'PUT', - body: JSON.stringify(updates) + body: JSON.stringify({ user: updates }) }) // Clear cache for current user after update diff --git a/src/lib/api/resources/users.ts b/src/lib/api/resources/users.ts index 38e8768f..38269b24 100644 --- a/src/lib/api/resources/users.ts +++ b/src/lib/api/resources/users.ts @@ -26,25 +26,21 @@ export const users = { * Update user settings */ update: async (userId: string, params: UserUpdateParams): Promise => { - // Transform flat params to nested UserInfo structure + // Pass flat params directly - backend expects flat picture/element fields const updates: { + picture?: string | undefined + element?: string | undefined gender?: number | undefined language?: string | undefined theme?: string | undefined - avatar?: { picture: string; element: string } | undefined } = {} + if (params.picture !== undefined) updates.picture = params.picture + if (params.element !== undefined) updates.element = params.element if (params.gender !== undefined) updates.gender = params.gender if (params.language !== undefined) updates.language = params.language if (params.theme !== undefined) updates.theme = params.theme - if (params.picture !== undefined || params.element !== undefined) { - updates.avatar = { - picture: params.picture ?? '', - element: params.element ?? '' - } - } - const result = await userAdapter.updateProfile(updates) return { id: result.id,