diff --git a/app/components/App/Header.vue b/app/components/App/Header.vue index 5e38ef8..77842d5 100644 --- a/app/components/App/Header.vue +++ b/app/components/App/Header.vue @@ -112,8 +112,8 @@ defineShortcuts({ - - + + - - - + diff --git a/app/components/App/UserSettingsForm.vue b/app/components/App/UserSettingsForm.vue index dda8070..9c2baae 100644 --- a/app/components/App/UserSettingsForm.vue +++ b/app/components/App/UserSettingsForm.vue @@ -8,6 +8,8 @@ const props = defineProps<{ user: UserSession }>() +const emit = defineEmits(['closeModal']) + const state = reactive({ name: undefined, username: undefined, @@ -30,7 +32,20 @@ watchEffect(() => { const { deleteAvatar, uploadAvatar, updateUser } = await useUser() +const hasChanged = computed(() => { + return ( + state.name !== props.user.name + || state.username !== props.user.username + || state.private !== props.user.private + || state.description !== props.user.description + || state.language !== locales.find(locale => locale.locale === props.user.language).locale + || state.location !== props.user.location + ) +}) + +const loading = ref(false) async function handleUpdate(event: FormSubmitEvent) { + loading.value = true await updateUser({ username: event.data.username, name: event.data.name, @@ -39,66 +54,102 @@ async function handleUpdate(event: FormSubmitEvent) { language: event.data.language, private: event.data.private, }) + loading.value = false } + +const { user } = useUserSession() +defineShortcuts({ + escape: () => emit('closeModal'), +})