Fix state and error handling for dashboard domain
This commit is contained in:
@@ -14,6 +14,8 @@ const taskModel = TasksModel.create();
|
||||
const domainsModel = DomainsModel.create();
|
||||
const dashboardModel = DashboardModel.create();
|
||||
|
||||
const formError = ref('');
|
||||
const originalDomain = ref('');
|
||||
const domains = ref([]);
|
||||
const newDomain = ref('');
|
||||
const lastTask = ref({});
|
||||
@@ -62,12 +64,20 @@ async function refreshTasks() {
|
||||
}
|
||||
|
||||
async function onSubmit() {
|
||||
formError.value = '';
|
||||
|
||||
lastTask.value.active = true;
|
||||
lastTask.value.percent = 0;
|
||||
lastTask.value.message = 'Preparing dashboard domain';
|
||||
|
||||
const [error] = await dashboardModel.prepareDomain(newDomain.value);
|
||||
if (error) return console.error(error);
|
||||
if (error) {
|
||||
formError.value = error.body ? error.body.message : 'Internal error';
|
||||
lastTask.value = {};
|
||||
return;
|
||||
}
|
||||
|
||||
originalDomain.value = newDomain.value;
|
||||
|
||||
await refreshTasks();
|
||||
}
|
||||
@@ -82,6 +92,7 @@ onMounted(async () => {
|
||||
if (error) return console.error(error);
|
||||
|
||||
newDomain.value = (domains.value.find(d => d.domain === result.adminDomain) || domains.value[0]).domain;
|
||||
originalDomain.value = (domains.value.find(d => d.domain === result.adminDomain) || domains.value[0]).domain;
|
||||
|
||||
await refreshTasks();
|
||||
});
|
||||
@@ -94,21 +105,23 @@ onMounted(async () => {
|
||||
<Button tool icon="fa-solid fa-align-left" v-tooltip="$t('domains.renewCerts.showLogsAction')" :menu="taskLogsMenu" :disabled="!taskLogsMenu.length"/>
|
||||
</template>
|
||||
|
||||
<div v-if="lastTask.active" style="padding: 0 10px">
|
||||
<ProgressBar :value="lastTask.percent" />
|
||||
<div>{{ lastTask.message }}</div>
|
||||
</div>
|
||||
|
||||
<SettingsItem wrap>
|
||||
<div style="display: flex; align-items: center">
|
||||
<div v-html="$t('domains.changeDashboardDomain.description')"></div>
|
||||
</div>
|
||||
<div style="display: flex; align-items: center">
|
||||
<InputGroup>
|
||||
<SingleSelect v-model="newDomain" :options="domains" option-key="domain" option-label="domain" />
|
||||
<Button @click="onSubmit()" :loading="lastTask.active" :disabled="lastTask.active">{{ $t('domains.changeDashboardDomain.changeAction') }}</Button>
|
||||
<SingleSelect v-model="newDomain" :disabled="lastTask.active" :options="domains" option-key="domain" option-label="domain" @select="formError = ''"/>
|
||||
<Button @click="onSubmit()" :loading="lastTask.active" :disabled="lastTask.active || originalDomain === newDomain">{{ $t('domains.changeDashboardDomain.changeAction') }}</Button>
|
||||
</InputGroup>
|
||||
</div>
|
||||
</SettingsItem>
|
||||
|
||||
<div class="error-label" v-if="formError">{{ formError }}</div>
|
||||
|
||||
<div v-if="lastTask.active" style="padding: 0 10px">
|
||||
<ProgressBar :value="lastTask.percent" />
|
||||
<div>{{ lastTask.message }}</div>
|
||||
</div>
|
||||
</Section>
|
||||
</template>
|
||||
Reference in New Issue
Block a user