From 65da87bee2a28f61a556f66d4d57833e6618f59e Mon Sep 17 00:00:00 2001 From: axolotle Date: Wed, 21 Aug 2024 21:24:46 +0200 Subject: [PATCH] fix: postinstall form --- app/src/composables/data.ts | 8 ++++++-- app/src/composables/useInfos.ts | 2 +- app/src/views/PostInstall.vue | 4 +--- app/src/views/_partials/DomainForm.vue | 16 +++++++++++----- 4 files changed, 19 insertions(+), 11 deletions(-) diff --git a/app/src/composables/data.ts b/app/src/composables/data.ts index c0b69cc8..ea7cd661 100644 --- a/app/src/composables/data.ts +++ b/app/src/composables/data.ts @@ -127,11 +127,15 @@ export function useUsersAndGroups(username?: MaybeRefOrGetter) { } } -export function useDomains(domain_?: MaybeRefOrGetter) { +export function useDomains( + domain_?: MaybeRefOrGetter, + installed: boolean = true, +) { const { mainDomain, domains: domains_, domainDetails } = useData() const domains = computed(() => { - if (!domains_.value) throw new Error(getNoDataMessage('domains')) + if (!domains_.value && installed) + throw new Error(getNoDataMessage('domains')) return domains_.value }) diff --git a/app/src/composables/useInfos.ts b/app/src/composables/useInfos.ts index 0c0a47a1..1fe90b1d 100644 --- a/app/src/composables/useInfos.ts +++ b/app/src/composables/useInfos.ts @@ -123,7 +123,7 @@ export const useInfos = createGlobalState(() => { if (!installed.value) { router.push({ name: 'post-install' }) } else { - _onLogin() + await _onLogin() } } diff --git a/app/src/views/PostInstall.vue b/app/src/views/PostInstall.vue index 89307447..6c1f5cf6 100644 --- a/app/src/views/PostInstall.vue +++ b/app/src/views/PostInstall.vue @@ -133,11 +133,9 @@ async function performPostInstall(force = false) { } else if (hasWordsInError(['domain', 'dyndns'])) { step.value = 'domain' serverError.value = err.message - } else if (hasWordsInError(['password', 'user'])) { + } else { step.value = 'user' serverErrors.global = [err.message] - } else { - throw err } }) } diff --git a/app/src/views/_partials/DomainForm.vue b/app/src/views/_partials/DomainForm.vue index 965b39f7..a971ec80 100644 --- a/app/src/views/_partials/DomainForm.vue +++ b/app/src/views/_partials/DomainForm.vue @@ -4,6 +4,7 @@ import { useI18n } from 'vue-i18n' import { useDomains } from '@/composables/data' import { useForm } from '@/composables/form' +import { useInfos } from '@/composables/useInfos' import { domain, dynDomain, @@ -34,8 +35,9 @@ const emit = defineEmits<{ }>() const { t } = useI18n() +const { installed } = useInfos() -const { domains } = useDomains() +const { domains } = useDomains(undefined, installed.value) const dynDomains = ['nohost.me', 'noho.st', 'ynh.fr'] const dynDnsForbiden = computed(() => { @@ -75,17 +77,21 @@ const fields = { }, }) satisfies FieldProps<'InputItem', Form['domain']>, - dynDomain: { + dynDomain: reactive({ component: 'AdressItem', label: t('domain_name'), - rules: { localPart: { required, dynDomain } }, + rules: computed(() => { + return selected.value === 'dynDomain' + ? { localPart: { required, dynDomain }, domain: { required } } + : undefined + }), cProps: { id: 'dyn-domain', placeholder: t('placeholder.domain').split('.')[0], type: 'domain', choices: dynDomains, }, - } satisfies FieldProps<'AdressItem', Form['dynDomain']>, + }) satisfies FieldProps<'AdressItem', Form['dynDomain']>, dynDomainPassword: reactive({ component: 'InputItem', @@ -121,7 +127,7 @@ const fields = { label: t('domain_name'), rules: computed(() => selected.value === 'localDomain' - ? { localPart: { required, dynDomain } } + ? { localPart: { required, dynDomain }, domain: { required } } : undefined, ), cProps: {