diff --git a/dashboard/src/Index.vue b/dashboard/src/Index.vue index 09a699d4c..d0d6208ef 100644 --- a/dashboard/src/Index.vue +++ b/dashboard/src/Index.vue @@ -105,6 +105,7 @@ const subscriptionRequiredDialog = useTemplateRef('subscriptionRequiredDialog'); const ready = ref(false); const view = ref(''); const profile = ref({}); +const dashboardDomain = ref(''); const subscription = ref({ plan: {}, }); @@ -227,6 +228,7 @@ async function refreshConfigAndFeatures() { config.value = result; features.value = result.features; + dashboardDomain.value = result.adminDomain; } async function onOnline() { @@ -239,6 +241,7 @@ provide('features', features); provide('profile', profile); provide('refreshProfile', refreshProfile); provide('refreshFeatures', refreshConfigAndFeatures); +provide('dashboardDomain', dashboardDomain); onMounted(async () => { const [error, result] = await provisionModel.status(); diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index 8c821da64..826252847 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -7,7 +7,6 @@ import { prettyDate, prettyBinarySize, isValidDomain } from '@cloudron/pankow/ut import AccessControl from './AccessControl.vue'; import PortBindings from './PortBindings.vue'; import AppsModel from '../models/AppsModel.js'; -import DashboardModel from '../models/DashboardModel.js'; import DomainsModel from '../models/DomainsModel.js'; import { PROXY_APP_ID, ACL_OPTIONS } from '../constants.js'; @@ -18,9 +17,9 @@ const STEP = Object.freeze({ const appsModel = AppsModel.create(); const domainsModel = DomainsModel.create(); -const dashboardModel = DashboardModel.create(); const subscriptionRequiredDialog = inject('subscriptionRequiredDialog'); +const dashboardDomain = inject('dashboardDomain'); // reactive const busy = ref(false); @@ -32,7 +31,6 @@ 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; @@ -167,10 +165,6 @@ function onClose() { } onMounted(async () => { - const [error, result] = await dashboardModel.config(); - if (error) return console.error(error); - - dashboardDomain.value = result.adminDomain; }); const screenshotsContainer = useTemplateRef('screenshotsContainer'); @@ -212,7 +206,7 @@ defineExpose({ domains.value = domainList; // preselect with dashboard domain - domain.value = (domains.value.find(d => d.domain === dashboardDomain.value) || domains.value[0]).domain; + domain.value = domains.value.find(d => d.domain === dashboardDomain.value).domain; tcpPorts.value = a.manifest.tcpPorts; udpPorts.value = a.manifest.udpPorts; @@ -231,7 +225,7 @@ defineExpose({ for (const p in secondaryDomains.value) { const port = secondaryDomains.value[p]; port.value = port.defaultValue; - port.domain = domains.value[0].domain; + port.domain = dashboardDomain.value; } currentScreenshotPos = 0; diff --git a/dashboard/src/components/AppRestoreDialog.vue b/dashboard/src/components/AppRestoreDialog.vue index c7fa8d598..3e85d786d 100644 --- a/dashboard/src/components/AppRestoreDialog.vue +++ b/dashboard/src/components/AppRestoreDialog.vue @@ -2,7 +2,7 @@ // for restore from archive or clone ! -import { ref, useTemplateRef, computed } from 'vue'; +import { ref, useTemplateRef, computed, inject } from 'vue'; import { InputGroup, FormGroup, TextInput, SingleSelect, Dialog } from '@cloudron/pankow'; import { prettyLongDate } from '@cloudron/pankow/utils'; import PortBindings from '../components/PortBindings.vue'; @@ -14,6 +14,7 @@ const appsModel = AppsModel.create(); const archivesModel = ArchivesModel.create(); const domainsModel = DomainsModel.create(); +const dashboardDomain = inject('dashboardDomain'); const appId = ref(null); const dialog = useTemplateRef('dialog'); const restoreArchive = ref({}); @@ -119,7 +120,7 @@ defineExpose({ const app = archive.appConfig || { subdomain: '', - domain: domains.value[0].domain, + domain: dashboardDomain.value, secondaryDomains: [], portBindings: {} }; // pre-8.2 backups do not have appConfig @@ -129,7 +130,7 @@ defineExpose({ restoreLocation.value = app.subdomain; const d = domains.value.find(function (d) { return app.domain === d.domain; }); - restoreDomain.value = d ? d.domain : domains.value[0].domain; // try to pre-select the app's domain + restoreDomain.value = d ? d.domain : dashboardDomain.value; // try to pre-select the app's domain restoreSecondaryDomains.value = {}; needsOverwrite.value = false; restoreArchive.value = archive; diff --git a/dashboard/src/components/LdapServer.vue b/dashboard/src/components/LdapServer.vue index 9d97494da..b0c85807a 100644 --- a/dashboard/src/components/LdapServer.vue +++ b/dashboard/src/components/LdapServer.vue @@ -57,7 +57,7 @@ onMounted(async () => { if (error) return console.error(error); ldapUrl.value = `ldaps://${result.adminFqdn}:636`; - adminDomain.value = domains.find(d => d.domain === result.adminDomain) || domains[0]; + adminDomain.value = domains.find(d => d.domain === result.adminDomain); [error, result] = await userDirectoryModel.getExposedLdapConfig(); if (error) return console.error(error); diff --git a/dashboard/src/components/MailboxDialog.vue b/dashboard/src/components/MailboxDialog.vue index 6a4cd38eb..623de8326 100644 --- a/dashboard/src/components/MailboxDialog.vue +++ b/dashboard/src/components/MailboxDialog.vue @@ -1,6 +1,6 @@