From d8bdf42788812d92a87f87e66ffa73166b0556dc Mon Sep 17 00:00:00 2001 From: Justin Dalrymple Date: Sat, 19 Oct 2024 20:21:10 -0400 Subject: [PATCH] Update `Users.edit` to use FormData when submitting `avatar` updates (#3644) --- packages/core/src/resources/Users.ts | 13 ++++++++++--- packages/core/test/unit/resources/Users.ts | 5 ++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/core/src/resources/Users.ts b/packages/core/src/resources/Users.ts index 92d5e2d0..c2e67c84 100644 --- a/packages/core/src/resources/Users.ts +++ b/packages/core/src/resources/Users.ts @@ -156,7 +156,7 @@ export type AllUsersOptions = { export type CreateUserOptions = { admin?: boolean; auditor?: boolean; - avatar?: { content: Blob; filepath?: string }; + avatar?: { content: Blob; filename?: string }; bio?: string; canCreateGroup?: boolean; colorSchemeId?: number; @@ -487,9 +487,16 @@ export class Users extends BaseResource { edit( userId: number, - options?: EditUserOptions & Sudo & ShowExpanded, + { avatar, ...options }: EditUserOptions & Sudo & ShowExpanded = {}, ) { - return RequestHelper.put()(this, endpoint`users/${userId}`, options); + const opts: Record = { + ...options, + isForm: true, + }; + + if (avatar) opts.avatar = [avatar.content, avatar.filename]; + + return RequestHelper.put()(this, endpoint`users/${userId}`, opts); } editStatus( diff --git a/packages/core/test/unit/resources/Users.ts b/packages/core/test/unit/resources/Users.ts index e17910ca..ff110413 100644 --- a/packages/core/test/unit/resources/Users.ts +++ b/packages/core/test/unit/resources/Users.ts @@ -181,7 +181,10 @@ describe('Users.edit', () => { it('should request PUT users/:id', async () => { await service.edit(1, { name: 'Okoye' }); - expect(RequestHelper.put()).toHaveBeenCalledWith(service, 'users/1', { name: 'Okoye' }); + expect(RequestHelper.put()).toHaveBeenCalledWith(service, 'users/1', { + isForm: true, + name: 'Okoye', + }); }); });