diff --git a/app/components/UserMenu.vue b/app/components/UserMenu.vue index e9f6a7b..930a4d3 100644 --- a/app/components/UserMenu.vue +++ b/app/components/UserMenu.vue @@ -42,28 +42,29 @@ await loadAuthUser() user.value.avatar = { src: `https://api.dicebear.com/8.x/initials/svg?seed=${ - user.value.name || user.value.email + user.value.user_metadata.name || user.value.email }`, - alt: user.value.name || user.value.email + alt: user.value.user_metadata.name || user.value.email } const items = computed(() => [ [ { type: 'label', - label: user.value.email, + label: user.value.user_metadata.name || user.value.email, avatar: user.value.avatar } ], [ { label: 'Perfil', - icon: 'i-lucide-user' + icon: 'i-lucide-user', + to: '/settings' }, { label: 'Ajustes', icon: 'i-lucide-settings', - to: '/settings' + to: '/settings/security' } ], [ @@ -174,7 +175,7 @@ const items = computed(() => [ { const supabase = useSupabaseClient() - const user = ref(null) + const user = useState('auth-user', () => null) const loadAuthUser = async () => { const { data } = await supabase.auth.getUser() @@ -32,8 +32,6 @@ export const useAuth = () => { user.value = null } - loadAuthUser() - return { user, loadAuthUser, diff --git a/app/layouts/default.vue b/app/layouts/default.vue index 40ce8a1..477d9ea 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -14,8 +14,8 @@ const links = [ } }, { - label: 'Anúncios App', - icon: 'i-lucide-megaphone', + label: 'Anúncios (App)', + icon: 'i-lucide-smartphone', to: '/anuncios', onSelect: () => { open.value = false diff --git a/app/pages/index.vue b/app/pages/index.vue index 8b7de3f..0921fc1 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -35,15 +35,16 @@ const items = [ - + diff --git a/app/pages/settings/index.vue b/app/pages/settings/index.vue index 4069130..a46af78 100644 --- a/app/pages/settings/index.vue +++ b/app/pages/settings/index.vue @@ -16,19 +16,38 @@ type ProfileSchema = z.output await loadAuthUser() const profile = reactive>({ - name: user.value.user_metadata.name, - email: user.value.email + name: user.value?.user_metadata?.name || '', + email: user.value?.email || '' }) +const { updateUser } = useUsers() const toast = useToast() + async function onSubmit(event: FormSubmitEvent) { - toast.add({ - title: 'Success', - description: 'Your settings have been updated.', - icon: 'i-lucide-check', - color: 'success' - }) - console.log(event.data) + try { + if (!user.value?.id) return + + await updateUser({ + id: user.value.id, + name: event.data.name + }) + + await loadAuthUser() + + toast.add({ + title: 'Sucesso', + description: 'Suas configurações foram atualizadas.', + icon: 'i-lucide-check', + color: 'success' + }) + } catch (error: any) { + toast.add({ + title: 'Erro', + description: error.data?.statusMessage || error.message || 'Falha ao atualizar configurações.', + icon: 'i-lucide-circle-x', + color: 'error' + }) + } } // function onFileChange(e: Event) {