diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index 31f422301..f8ba14dc5 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -32,6 +32,7 @@ const dialog = useTemplateRef('dialogHandle'); const locationInput = useTemplateRef('locationInput'); const description = computed(() => marked.parse(manifest.value.description || '')); const domains = ref([]); +const dashboardDomain = ref(''); const formValid = computed(() => { if (!domain.value) return false; @@ -141,16 +142,10 @@ function onClose() { } onMounted(async () => { - let [error, result] = await domainsModel.list(); + const [error, result] = await dashboardModel.config(); if (error) return console.error(error); - domains.value = result; - - [error, result] = await dashboardModel.config(); - if (error) return console.error(error); - - // preselect with dashboard domain - domain.value = (domains.value.find(d => d.domain === result.adminDomain) || domains.value[0]).domain; + dashboardDomain.value = result.adminDomain; }); const screenshotsContainer = useTemplateRef('screenshotsContainer'); @@ -172,11 +167,25 @@ function onScreenshotNext() { } defineExpose({ - open(a, appCountExceeded) { + open: async function(a, appCountExceeded) { + busy.value = false; step.value = STEP.DETAILS; app.value = a; appMaxCountExceeded.value = appCountExceeded; manifest.value = a.manifest; + location.value = ''; + accessRestrictionOption.value = ACL_OPTIONS.ANY; + accessRestrictionAcl.value = { users: [], groups: [] }; + domainProvider.value = ''; + upstreamUri.value = ''; + + const [error, result] = await domainsModel.list(); + if (error) return console.error(error); + + domains.value = result; + + // preselect with dashboard domain + domain.value = (domains.value.find(d => d.domain === dashboardDomain.value) || domains.value[0]).domain; tcpPorts.value = a.manifest.tcpPorts; udpPorts.value = a.manifest.udpPorts; diff --git a/dashboard/src/views/AppstoreView.vue b/dashboard/src/views/AppstoreView.vue index b4860d5b2..68dff7e61 100644 --- a/dashboard/src/views/AppstoreView.vue +++ b/dashboard/src/views/AppstoreView.vue @@ -178,14 +178,9 @@ function setItemWidth() { else itemWidth.value = Number((width-gap*4)/4).toFixed() + 'px'; } -onActivated(async () => { - await getInstalledApps(); -}); - -onMounted(async () => { +async function onActivation() { await getInstalledApps(); await getAppList(); - ready.value = true; // only deals with #/appstore/ hashes window.addEventListener('hashchange', onHashChange); @@ -194,6 +189,13 @@ onMounted(async () => { window.addEventListener('resize', setItemWidth); setItemWidth(); +} + +onActivated(onActivation); + +onMounted(async () => { + await onActivation(); + ready.value = true; }); onUnmounted(() => {