Use dashboard domain as default and not [0]

This commit is contained in:
Girish Ramakrishnan
2025-10-21 14:30:25 +02:00
parent 286de8cdcb
commit ae8278bdb3
7 changed files with 22 additions and 21 deletions

View File

@@ -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();

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -1,6 +1,6 @@
<script setup>
import { ref, useTemplateRef, computed } from 'vue';
import { ref, useTemplateRef, computed, inject } from 'vue';
import { Dialog, Button, TextInput, FormGroup, Checkbox, InputGroup, SingleSelect } from '@cloudron/pankow';
import { prettyDecimalSize } from '@cloudron/pankow/utils';
import MailboxesModel from '../models/MailboxesModel.js';
@@ -10,6 +10,7 @@ const props = defineProps([ 'apps', 'users', 'groups', 'domains' ]);
const mailboxesModel = MailboxesModel.create();
const dashboardDomain = inject('dashboardDomain');
const dialog = useTemplateRef('dialog');
const busy = ref(false);
const formError = ref('');
@@ -34,7 +35,7 @@ const domainHasIncomingEnabled = computed(() => {
function onAddAlias() {
aliases.value.push({
name: '',
domain: '@' + props.domains[0].domain,
domain: '@' + dashboardDomain.value,
});
}
@@ -91,7 +92,7 @@ defineExpose({
mailbox.value = m;
name.value = m ? m.name : '';
domain.value = m ? m.domain : props.domains[0].domain;
domain.value = m ? m.domain : dashboardDomain.value;
ownerId.value = m ? m.ownerId : '';
aliases.value = m ? m.aliases : [];
active.value = m ? m.active : true;

View File

@@ -1,6 +1,6 @@
<script setup>
import { ref, useTemplateRef } from 'vue';
import { ref, useTemplateRef, inject } from 'vue';
import { Dialog, TextInput, FormGroup, Checkbox, InputGroup, SingleSelect } from '@cloudron/pankow';
import MailinglistsModel from '../models/MailinglistsModel.js';
@@ -19,6 +19,7 @@ const membersText = ref('');
const membersOnly = ref(false);
const active = ref(true);
const domainList = ref([]);
const dashboardDomain = inject('dashboardDomain');
async function onSubmit() {
busy.value = true;
@@ -63,7 +64,7 @@ defineExpose({
mailinglist.value = m;
name.value = m ? m.name : '';
domain.value = m ? m.domain : props.domains[0].domain;
domain.value = m ? m.domain : dashboardDomain.value;
membersText.value = m ? m.members.join('\n') : '';
membersOnly.value = m ? m.membersOnly : false;
active.value = m ? m.active : true;

View File

@@ -1,6 +1,6 @@
<script setup>
import { ref, onMounted, computed } from 'vue';
import { ref, onMounted, computed, inject } from 'vue';
import { Button, SingleSelect, InputGroup, FormGroup, TextInput, Checkbox } from '@cloudron/pankow';
import { isValidDomain } from '@cloudron/pankow/utils';
import { ISTATES } from '../../constants.js';
@@ -13,6 +13,7 @@ const props = defineProps([ 'app' ]);
const appsModel = AppsModel.create();
const domainsModel = DomainsModel.create();
const dashboardDomain = inject('dashboardDomain');
const domains = ref([]);
const busy = ref(false);
const errorMessage = ref('');
@@ -38,7 +39,7 @@ function isNoopOrManual(domain) {
function onAddAlias() {
aliases.value.push({
domain: domains.value[0].domain,
domain: dashboardDomain.value,
subdomain: ''
});
}
@@ -49,7 +50,7 @@ function onRemoveAlias(index) {
function onAddRedirect() {
redirects.value.push({
domain: domains.value[0].domain,
domain: dashboardDomain.value,
subdomain: ''
});
}