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
-
-
- {#snippet children({ props })}
- Username
-
- {/snippet}
-
-
-
-
-
-
- {#snippet children({ props })}
- First Name
-
- {/snippet}
-
-
-
-
-
-
- {#snippet children({ props })}
- Last Name
-
- {/snippet}
-
-
-
-
-
-
+
updateProfileFormSubmit()}>Update Profile