From e74756abf03b4522aeb207426df7f215be0ed260 Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Tue, 7 Jan 2025 16:44:36 -0800 Subject: [PATCH] Allow saving username when it is the same as your current username. Fixing message on success. --- src/lib/server/api/users/users.controller.ts | 1 - src/lib/server/api/users/users.service.ts | 18 ++-- .../(protected)/settings/+page.server.ts | 10 ++- .../settings/update-profile-card.svelte | 90 ++++++++++--------- 4 files changed, 67 insertions(+), 52 deletions(-) diff --git a/src/lib/server/api/users/users.controller.ts b/src/lib/server/api/users/users.controller.ts index 38cf87e..a931f79 100644 --- a/src/lib/server/api/users/users.controller.ts +++ b/src/lib/server/api/users/users.controller.ts @@ -70,7 +70,6 @@ export class UsersController extends Controller { } }) .put('/me/profile', authState('session'), zValidator('json', updateProfileDto), async (c) => { - c.var.logger.debug(`Update profile: ${JSON.stringify(c.req.valid('json'))}`); await this.usersService.update(c.var.session.userId, c.req.valid('json')); const user = await this.usersRepository.findOneByIdOrThrow(c.var.session.userId); return c.json(user); diff --git a/src/lib/server/api/users/users.service.ts b/src/lib/server/api/users/users.service.ts index 114d274..e363fb2 100644 --- a/src/lib/server/api/users/users.service.ts +++ b/src/lib/server/api/users/users.service.ts @@ -25,13 +25,19 @@ export class UsersService { ) {} async update(userId: string, updateUserDto: UpdateProfileDto) { - let key: string | null = null; - if (updateUserDto?.avatar) { - const response = await this.storageService.upload({ file: updateUserDto.avatar }); - key = response?.key; + // let key: string | null = null; + // if (updateUserDto?.avatar) { + // const response = await this.storageService.upload({ file: updateUserDto.avatar }); + // key = response?.key; + // } + const currentUser = await this.usersRepository.findOneByIdOrThrow(userId); + if (currentUser?.username !== updateUserDto?.username) { + const existingUserWithUsername = await this.usersRepository.findOneByUsername(updateUserDto.username); + if (existingUserWithUsername) { + throw BadRequest('Username already exists'); + } } - this.loggerService.log.info(`Updating user ${userId}, with avatar: ${key}, first_name: ${updateUserDto?.first_name}, last_name: ${updateUserDto?.last_name}`); - await this.usersRepository.update(userId, { avatar: key, first_name: updateUserDto?.first_name ?? '', last_name: updateUserDto?.last_name ?? '' }); + await this.usersRepository.update(userId, { avatar: null, first_name: updateUserDto?.first_name ?? '', last_name: updateUserDto?.last_name ?? '' }); } async createEmail(email: string) { diff --git a/src/routes/(app)/(protected)/settings/+page.server.ts b/src/routes/(app)/(protected)/settings/+page.server.ts index d9ceabe..85df877 100644 --- a/src/routes/(app)/(protected)/settings/+page.server.ts +++ b/src/routes/(app)/(protected)/settings/+page.server.ts @@ -51,9 +51,15 @@ export const actions: Actions = { const { error } = await locals.api.users.me.profile.$put({ json: form.data }).then(locals.parseApiResponse); if (error) { - return setError(form, 'username', error); + console.log('error', error); + return setError(form, 'username', error.message); } - return message(form, { text: 'Profile updated', type: 'success' }); + const profileUpdatedMessage = { + type: 'success', + message: 'Profile updated! 🎊', + }; + + return message(form, profileUpdatedMessage); }, }; diff --git a/src/routes/(app)/(protected)/settings/update-profile-card.svelte b/src/routes/(app)/(protected)/settings/update-profile-card.svelte index 7239a9b..fd66b90 100644 --- a/src/routes/(app)/(protected)/settings/update-profile-card.svelte +++ b/src/routes/(app)/(protected)/settings/update-profile-card.svelte @@ -1,17 +1,21 @@ @@ -32,40 +36,40 @@ Update Profile -
-

Your Profile

-
- - - {#snippet children({ props })} - Username - - {/snippet} - - - - - - - {#snippet children({ props })} - First Name - - {/snippet} - - - - - - - {#snippet children({ props })} - Last Name - - {/snippet} - - - - - -
+
updateProfileFormSubmit()}>Update Profile