diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index 194df7c06..e2b5ebd04 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -66,6 +66,7 @@ import AccessControl from './AccessControl.vue'; import PortBindings from './PortBindings.vue'; import DomainsModel from '../models/DomainsModel.js'; import AppsModel from '../models/AppsModel.js'; +import DashboardModel from '../models/DashboardModel.js'; const API_ORIGIN = import.meta.env.VITE_API_ORIGIN ? import.meta.env.VITE_API_ORIGIN : window.location.origin; @@ -76,6 +77,7 @@ const STEP = Object.freeze({ const domainsModel = DomainsModel.create(API_ORIGIN, localStorage.token); const appsModel = AppsModel.create(API_ORIGIN, localStorage.token); +const dashboardModel = DashboardModel.create(API_ORIGIN, localStorage.token); // reactive const busy = ref(false); @@ -141,9 +143,10 @@ async function submit() { onMounted(async () => { domains.value = await domainsModel.list(); + const config = await dashboardModel.getConfig(); - // TODO pre-select the adminDomain - domain.value = domains.value[0].domain; + // preselect with dashboard domain + domain.value = config.adminDomain || domains.value[0].domain; }); defineExpose({ diff --git a/dashboard/src/models/DashboardModel.js b/dashboard/src/models/DashboardModel.js new file mode 100644 index 000000000..33fed29bf --- /dev/null +++ b/dashboard/src/models/DashboardModel.js @@ -0,0 +1,27 @@ + +import { fetcher } from 'pankow'; + +function create(origin, accessToken) { + return { + name: 'DashboardModel', + async getConfig() { + let error, result; + try { + result = await fetcher.get(`${origin}/api/v1/dashboard/config`, { access_token: accessToken }); + } catch (e) { + error = e; + } + + if (error || result.status !== 200) { + console.error('Failed to get dashboard config.', error || result.status); + return {}; + } + + return result.body; + }, + }; +} + +export default { + create, +};