diff --git a/dashboard/src/components/ApiTokens.vue b/dashboard/src/components/ApiTokens.vue index 19f7e0455..9f0319e5b 100644 --- a/dashboard/src/components/ApiTokens.vue +++ b/dashboard/src/components/ApiTokens.vue @@ -72,7 +72,7 @@ function checkValidity() { async function refreshApiTokens() { const [error, tokens] = await tokensModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); apiTokens.value = tokens.filter(function (c) { return c.clientId === TOKEN_TYPES.ID_SDK; }); } @@ -117,7 +117,7 @@ async function onRevokeToken(apiToken) { if (!yes) return; const [error] = await tokensModel.remove(apiToken.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshApiTokens(); } diff --git a/dashboard/src/components/AppImportDialog.vue b/dashboard/src/components/AppImportDialog.vue index 999df0779..95d34ae9b 100644 --- a/dashboard/src/components/AppImportDialog.vue +++ b/dashboard/src/components/AppImportDialog.vue @@ -188,13 +188,14 @@ async function onSubmit() { function onBackupConfigChanged(event) { const reader = new FileReader(); reader.onload = function (result) { - if (!result.target || !result.target.result) return window.cloudron.onError(new Error('Unable to read backup config')); + if (!result.target || !result.target.result) return console.error('Unable to read backup config'); let data; try { data = JSON.parse(result.target.result); // 'provider', 'config', 'limits', 'format', 'remotePath', 'encrypted', 'encryptedFilenames' } catch (e) { - return window.cloudron.onError(e); + console.error('Unable to parse backup config', e); + return; } provider.value = data.provider; diff --git a/dashboard/src/components/AppInstallDialog.vue b/dashboard/src/components/AppInstallDialog.vue index 2ae75a5f5..6636fd42d 100644 --- a/dashboard/src/components/AppInstallDialog.vue +++ b/dashboard/src/components/AppInstallDialog.vue @@ -106,7 +106,7 @@ async function onSubmit(overwriteDns) { if (error) { formError.value.location = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } if (result.needsOverwrite && !overwriteDns) { @@ -175,12 +175,12 @@ function onClose() { onMounted(async () => { let [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(u => u.username = u.username || u.email); users.value = result; [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groups.value = result; }); diff --git a/dashboard/src/components/AppPasswords.vue b/dashboard/src/components/AppPasswords.vue index 653e847ee..f5b38a381 100644 --- a/dashboard/src/components/AppPasswords.vue +++ b/dashboard/src/components/AppPasswords.vue @@ -61,7 +61,7 @@ const identifier = ref(''); const appsById = {}; async function refresh() { const [error, result] = await appPasswordsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // setup label for the table UI result.forEach(function (password) { @@ -98,7 +98,7 @@ async function onSubmit() { addedPassword.value = ''; const [error, result] = await appPasswordsModel.add(identifier.value, passwordName.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); addedPassword.value = result.password; passwordName.value = ''; @@ -120,7 +120,7 @@ async function onRemove(appPassword) { if (!yes) return; const [error] = await appPasswordsModel.remove(appPassword.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refresh(); } @@ -130,7 +130,7 @@ onMounted(async () => { identifiers.value = [{ id: 'mail', label: 'Mail client' }]; const [error, apps] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); apps.forEach(function (app) { if (!app.manifest.addons) return; diff --git a/dashboard/src/components/AppRestoreDialog.vue b/dashboard/src/components/AppRestoreDialog.vue index 059ff1902..78c741a43 100644 --- a/dashboard/src/components/AppRestoreDialog.vue +++ b/dashboard/src/components/AppRestoreDialog.vue @@ -114,7 +114,7 @@ defineExpose({ formError.value = {}; const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; diff --git a/dashboard/src/components/ApplinkDialog.vue b/dashboard/src/components/ApplinkDialog.vue index 870604830..6784d11bc 100644 --- a/dashboard/src/components/ApplinkDialog.vue +++ b/dashboard/src/components/ApplinkDialog.vue @@ -88,7 +88,7 @@ async function onSubmit() { if (error) { busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emits('success'); @@ -109,7 +109,7 @@ async function onRemove() { if (!yes) return; const [error] = await applinksModel.remove(id.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); emits('success'); applinkDialog.value.close(); @@ -129,11 +129,11 @@ defineExpose({ // fetch users and groups let [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); users.value = result; [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groups.value = result; applinkDialog.value.open(); diff --git a/dashboard/src/components/BackupProviderForm.vue b/dashboard/src/components/BackupProviderForm.vue index 4fc0e0c84..826d0334b 100644 --- a/dashboard/src/components/BackupProviderForm.vue +++ b/dashboard/src/components/BackupProviderForm.vue @@ -72,7 +72,7 @@ async function getBlockDevices() { if (props.provisioning) [error, blockDevices] = await provisionModel.blockDevices(); else [error, blockDevices] = await systemModel.blockDevices(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); ext4BlockDevices.value = []; xfsBlockDevices.value = []; diff --git a/dashboard/src/components/BackupSiteAddDialog.vue b/dashboard/src/components/BackupSiteAddDialog.vue index df5abe683..708504b7c 100644 --- a/dashboard/src/components/BackupSiteAddDialog.vue +++ b/dashboard/src/components/BackupSiteAddDialog.vue @@ -167,7 +167,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } // stash for encryption password step @@ -203,7 +203,7 @@ async function onSetupEncryption() { formError.value.generic = error.body ? error.body.message : 'Internal error'; } busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); @@ -217,7 +217,7 @@ watch(encryptionPassword, () => { async function getMemory() { const [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); maxMemoryLimit.value = Math.ceil(result.memory / (1024*1024*1024)) * 1024 * 1024 * 1024; } @@ -272,7 +272,7 @@ defineExpose({ await getMemory(); const [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); contentOptions.value = [{ id: 'box', diff --git a/dashboard/src/components/BackupSiteConfigDialog.vue b/dashboard/src/components/BackupSiteConfigDialog.vue index cab394478..9ee9fbcb2 100644 --- a/dashboard/src/components/BackupSiteConfigDialog.vue +++ b/dashboard/src/components/BackupSiteConfigDialog.vue @@ -53,7 +53,7 @@ async function onSubmit() { else formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -116,7 +116,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); @@ -126,7 +126,7 @@ async function onSubmit() { async function getMemory() { const [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); maxMemoryLimit.value = Math.ceil(result.memory / (1024*1024*1024)) * 1024 * 1024 * 1024; } diff --git a/dashboard/src/components/BackupSiteContentDialog.vue b/dashboard/src/components/BackupSiteContentDialog.vue index fe6b1273d..76f3e2eea 100644 --- a/dashboard/src/components/BackupSiteContentDialog.vue +++ b/dashboard/src/components/BackupSiteContentDialog.vue @@ -28,7 +28,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } let contents; @@ -56,7 +56,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); @@ -79,7 +79,7 @@ defineExpose({ enableForUpdates.value = !!t.enableForUpdates; const [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); contentOptions.value = [{ id: 'box', diff --git a/dashboard/src/components/BackupSiteScheduleDialog.vue b/dashboard/src/components/BackupSiteScheduleDialog.vue index df533f71a..9e81cfc6c 100644 --- a/dashboard/src/components/BackupSiteScheduleDialog.vue +++ b/dashboard/src/components/BackupSiteScheduleDialog.vue @@ -45,7 +45,7 @@ async function onSubmit() { if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } const selectedRetention = BackupSitesModel.backupRetentions.find(function (x) { return x.name === configureRetention.value; }); @@ -53,7 +53,7 @@ async function onSubmit() { if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); diff --git a/dashboard/src/components/Branding.vue b/dashboard/src/components/Branding.vue index 028c75f51..d0d9cc520 100644 --- a/dashboard/src/components/Branding.vue +++ b/dashboard/src/components/Branding.vue @@ -32,17 +32,17 @@ async function onNameSave(newName) { async function onAvatarSubmit(file) { const [error] = await brandingModel.setAvatar(file); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); } async function onBackgroundSubmit(file) { const [error] = await brandingModel.setBackground(file); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); } async function onBackgroundUnset() { const [error] = await brandingModel.unsetBackground(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); backgroundUrl.value = ''; } @@ -55,18 +55,18 @@ async function onFooterSave(newFooter) { const [error] = await brandingModel.setFooter(newFooter); savingFooter.value = false; - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); footer.value = newFooter; } onMounted(async () => { let [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); name.value = result.cloudronName; [error, result] = await brandingModel.getFooter(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); footer.value = result; }); diff --git a/dashboard/src/components/CatchAllSettingsItem.vue b/dashboard/src/components/CatchAllSettingsItem.vue index e8c93209d..a368c1b29 100644 --- a/dashboard/src/components/CatchAllSettingsItem.vue +++ b/dashboard/src/components/CatchAllSettingsItem.vue @@ -22,7 +22,7 @@ async function onSubmit() { busy.value = true; const [error] = await mailModel.setCatchallAddresses(props.domainConfig.domain, addresses.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentAddresses.value = addresses.value.slice(); busy.value = false; @@ -43,13 +43,13 @@ const hasChanged = computed(() => { onMounted(async () => { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // only for inbound enabled but then we have extra rest calls for (const domain of result) { const [error, result] = await mailboxesModel.list(domain.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); allAddresses.value = allAddresses.value.concat(result.map(mailbox => { return { diff --git a/dashboard/src/components/Certificates.vue b/dashboard/src/components/Certificates.vue index aed83081a..903b046f4 100644 --- a/dashboard/src/components/Certificates.vue +++ b/dashboard/src/components/Certificates.vue @@ -18,7 +18,7 @@ async function waitForLastTask() { if (!lastTask.value.id) return; const [error, result] = await taskModel.get(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result; @@ -33,7 +33,7 @@ async function waitForLastTask() { async function refreshTasks() { const [error, result] = await taskModel.getByType(TASK_TYPES.TASK_CHECK_CERTS); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; @@ -57,7 +57,7 @@ async function onRenew() { // always rebuild the nginx configs when triggered via the UI. we assume user is clicking this because something is wrong const [error] = await domainsModel.renewCerts({ rebuild: true }); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshTasks(); } diff --git a/dashboard/src/components/DashboardDomain.vue b/dashboard/src/components/DashboardDomain.vue index f9dac92b5..96a0e6a30 100644 --- a/dashboard/src/components/DashboardDomain.vue +++ b/dashboard/src/components/DashboardDomain.vue @@ -25,14 +25,14 @@ async function waitForLastTask() { if (!lastTask.value.id) return; const [error, result] = await taskModel.get(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result; if (!result.active) { if (result.success) { const [error] = await dashboardModel.setDomain(newDomain.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); window.location.href = 'https://my.' + newDomain.value; } else { await refreshTasks(); @@ -46,7 +46,7 @@ async function waitForLastTask() { async function refreshTasks() { const [error, result] = await taskModel.getByType(TASK_TYPES.TASK_PREPARE_DASHBOARD_LOCATION); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; @@ -86,7 +86,7 @@ async function selectCurrentDomain(newDomains) { domains.value = newDomains; const [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (domains.value.length) { const adminDomain = domains.value.find(d => d.domain === result.adminDomain); @@ -99,7 +99,7 @@ async function selectCurrentDomain(newDomains) { onMounted(async () => { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await selectCurrentDomain(result); diff --git a/dashboard/src/components/DiskUsage.vue b/dashboard/src/components/DiskUsage.vue index 1601cb006..ece6ad806 100644 --- a/dashboard/src/components/DiskUsage.vue +++ b/dashboard/src/components/DiskUsage.vue @@ -12,7 +12,7 @@ const filesystems = ref([]); onMounted(async () => { const [error, result] = await systemModel.filesystems(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); filesystems.value = result; ready.value = true; diff --git a/dashboard/src/components/DiskUsageItem.vue b/dashboard/src/components/DiskUsageItem.vue index 1eab98fa5..8d62e3e36 100644 --- a/dashboard/src/components/DiskUsageItem.vue +++ b/dashboard/src/components/DiskUsageItem.vue @@ -22,7 +22,7 @@ let eventSource = null; async function refresh() { const [error, result] = await systemModel.filesystemUsage(props.filesystem.filesystem); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); contents.value = []; diff --git a/dashboard/src/components/DockerRegistries.vue b/dashboard/src/components/DockerRegistries.vue index 156cd3ee0..dc0117849 100644 --- a/dashboard/src/components/DockerRegistries.vue +++ b/dashboard/src/components/DockerRegistries.vue @@ -79,7 +79,7 @@ async function onRemove(registry) { } async function refresh() { const [error, result] = await dockerRegistriesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); registries.value = result; } diff --git a/dashboard/src/components/DockerRegistryDialog.vue b/dashboard/src/components/DockerRegistryDialog.vue index 2a9171fa0..9a9b6bf77 100644 --- a/dashboard/src/components/DockerRegistryDialog.vue +++ b/dashboard/src/components/DockerRegistryDialog.vue @@ -52,7 +52,7 @@ async function onSubmit() { if (error) { busy.value = false; formError.value.generic = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); diff --git a/dashboard/src/components/DomainDialog.vue b/dashboard/src/components/DomainDialog.vue index d86683283..e9c169da6 100644 --- a/dashboard/src/components/DomainDialog.vue +++ b/dashboard/src/components/DomainDialog.vue @@ -78,7 +78,7 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); diff --git a/dashboard/src/components/ExternalLdap.vue b/dashboard/src/components/ExternalLdap.vue index 2d470352e..2bea3e11a 100644 --- a/dashboard/src/components/ExternalLdap.vue +++ b/dashboard/src/components/ExternalLdap.vue @@ -207,7 +207,7 @@ async function updateTaskStatus(id) { async function refreshTasks() { const [error, result] = await tasksModel.getByType(TASK_TYPES.TASK_SYNC_EXTERNAL_LDAP); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // limit to last 10 tasks.value = result.slice(0, 10); @@ -225,7 +225,7 @@ async function refreshTasks() { async function refresh() { const [error, result] = await userDirectoryModel.getExternalLdapConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); config.value = result; } diff --git a/dashboard/src/components/Firewall.vue b/dashboard/src/components/Firewall.vue index 58993b431..78c0eb7ae 100644 --- a/dashboard/src/components/Firewall.vue +++ b/dashboard/src/components/Firewall.vue @@ -20,7 +20,7 @@ const isBlocklistValid = computed(() => { async function refreshBlocklist() { const [error, result] = await networkModel.getBlocklist(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); blocklist.value = result; blocklistLength.value = result.split('\n').filter(function (l) { return l.length !== 0 && l[0] !== '#'; }).length; @@ -88,7 +88,7 @@ async function onTrustedIpsSubmit() { async function refreshTrustedIps() { const [error, result] = await networkModel.getTrustedIps(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); trustedIps.value = result; trustedIpsLength.value = result.split('\n').filter(function (l) { return l.length !== 0 && l[0] !== '#'; }).length; diff --git a/dashboard/src/components/GroupDialog.vue b/dashboard/src/components/GroupDialog.vue index 5c3f83c17..68a96c2ca 100644 --- a/dashboard/src/components/GroupDialog.vue +++ b/dashboard/src/components/GroupDialog.vue @@ -34,7 +34,7 @@ async function onSubmit() { if (error.body && error.body.message.indexOf('name') === 0) formError.value.name = error.body.message; else formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } else { const [error] = await groupsModel.add(name.value, userIds.value, appIds.value); @@ -42,7 +42,7 @@ async function onSubmit() { if (error.body && error.body.message.indexOf('name') === 0) formError.value.name = error.body.message; else formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -60,13 +60,13 @@ defineExpose({ busy.value = false; let [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(u => u.label = (u.username || u.email)); allUsers.value = result; userIds.value = g ? g.userIds : []; [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(a => a.label = (a.label || a.fqdn)); allApps.value = result; appIds.value = g ? g.appIds : []; diff --git a/dashboard/src/components/Headerbar.vue b/dashboard/src/components/Headerbar.vue index 356763a28..1cb589725 100644 --- a/dashboard/src/components/Headerbar.vue +++ b/dashboard/src/components/Headerbar.vue @@ -41,7 +41,7 @@ function onOpenNotifications(popover, event, elem) { async function onMarkNotificationRead(notification) { notification.busy = true; const [error] = await notificationModel.update(notification.id, true); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refresh(); @@ -55,7 +55,7 @@ async function onMarkAllNotificationRead() { await eachLimit(notifications.value, 5, async (notification) => { notification.busy = true; const [error] = await notificationModel.update(notification.id, true); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); }); await refresh(); @@ -67,7 +67,7 @@ async function onMarkAllNotificationRead() { async function refresh() { const [error, result] = await notificationModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(n => { n.isCollapsed = true; @@ -91,7 +91,7 @@ const platformStatus = ref({ let platformTimeoutId = 0; async function trackPlatformStatus() { const [error, result] = await servicesModel.getPlatformStatus(); - if (error) return window.cloudron.onError(error); + if (error) return console.error('Failed to get platform status.', error); platformStatus.value = result; diff --git a/dashboard/src/components/ImpersonateDialog.vue b/dashboard/src/components/ImpersonateDialog.vue index 4602dcd8f..96f44bce0 100644 --- a/dashboard/src/components/ImpersonateDialog.vue +++ b/dashboard/src/components/ImpersonateDialog.vue @@ -33,7 +33,7 @@ async function onSubmit() { if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } busy.value = false; diff --git a/dashboard/src/components/InvitationDialog.vue b/dashboard/src/components/InvitationDialog.vue index 49235fbc7..762881147 100644 --- a/dashboard/src/components/InvitationDialog.vue +++ b/dashboard/src/components/InvitationDialog.vue @@ -22,7 +22,7 @@ const busy = ref(false); async function onSendInvite() { const [error] = await usersModel.sendInviteEmail(user.value.id, email.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); window.pankow.notify({ type: 'success', text: t('users.invitationNotification.body', { email: email.value })}); diff --git a/dashboard/src/components/Ipv4Config.vue b/dashboard/src/components/Ipv4Config.vue index 477ce0681..ba868479a 100644 --- a/dashboard/src/components/Ipv4Config.vue +++ b/dashboard/src/components/Ipv4Config.vue @@ -49,14 +49,14 @@ function checkValidity() { async function refresh() { let [error, result] = await networkModel.getIpv4Config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); provider.value = result.provider; address.value = result.ip; interfaceName.value = result.ifname; [error, result] = await networkModel.getIpv4(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); detectedAddress.value = result; } diff --git a/dashboard/src/components/Ipv6Config.vue b/dashboard/src/components/Ipv6Config.vue index 3cc0fb10a..74c03d721 100644 --- a/dashboard/src/components/Ipv6Config.vue +++ b/dashboard/src/components/Ipv6Config.vue @@ -49,14 +49,14 @@ function checkValidity() { async function refresh() { let [error, result] = await networkModel.getIpv6Config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); provider.value = result.provider; address.value = result.ip; interfaceName.value = result.ifname; [error, result] = await networkModel.getIpv6(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); detectedAddress.value = result; } diff --git a/dashboard/src/components/LdapServer.vue b/dashboard/src/components/LdapServer.vue index b82b50a8d..75c62e248 100644 --- a/dashboard/src/components/LdapServer.vue +++ b/dashboard/src/components/LdapServer.vue @@ -46,18 +46,18 @@ async function onSubmit() { onMounted(async () => { let [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const domains = result; [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); ldapUrl.value = `ldaps://${result.adminFqdn}:636`; adminDomain.value = domains.find(d => d.domain === result.adminDomain); [error, result] = await userDirectoryModel.getExposedLdapConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); enabled.value = result.enabled; secret.value = result.secret; diff --git a/dashboard/src/components/LogsViewer.vue b/dashboard/src/components/LogsViewer.vue index 20a3b09ce..17d9a7e32 100644 --- a/dashboard/src/components/LogsViewer.vue +++ b/dashboard/src/components/LogsViewer.vue @@ -52,7 +52,7 @@ export default { this.busyRestart = true; const [error] = await this.appsModel.restart(this.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); this.busyRestart = false; } @@ -102,7 +102,7 @@ export default { this.appsModel = AppsModel.create(); const [error, app] = await this.appsModel.get(this.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); this.name = `${app.label || app.fqdn} (${app.manifest.title})`; this.showFilemanager = !!app.manifest.addons.localstorage; diff --git a/dashboard/src/components/MailDomainStatus.vue b/dashboard/src/components/MailDomainStatus.vue index b0230e6b5..128559844 100644 --- a/dashboard/src/components/MailDomainStatus.vue +++ b/dashboard/src/components/MailDomainStatus.vue @@ -55,14 +55,14 @@ async function refresh() { busy.value = true; let [error, result] = await mailModel.status(props.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (result.relay) result.relay.isOpen = false; domainStatus.value = result; [error, result] = await mailModel.config(props.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); mailConfig.value = result; diff --git a/dashboard/src/components/MailRelaySettingsItem.vue b/dashboard/src/components/MailRelaySettingsItem.vue index 4ab7e2b66..68f3bf71e 100644 --- a/dashboard/src/components/MailRelaySettingsItem.vue +++ b/dashboard/src/components/MailRelaySettingsItem.vue @@ -80,7 +80,7 @@ async function onShowDialog() { busy.value = false; const [error, result] = await mailModel.config(props.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); mailConfig.value = result; provider.value = result.relay.provider; @@ -132,7 +132,7 @@ async function onSubmit() { if (error) { formError.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } currentProvider.value = provider.value; @@ -144,7 +144,7 @@ async function onSubmit() { onMounted(async () => { const [error, result] = await mailModel.config(props.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); provider.value = result.relay.provider; currentProvider.value = result.relay.provider; diff --git a/dashboard/src/components/MailServerLocation.vue b/dashboard/src/components/MailServerLocation.vue index 9a0e6ab10..d50301ed2 100644 --- a/dashboard/src/components/MailServerLocation.vue +++ b/dashboard/src/components/MailServerLocation.vue @@ -28,7 +28,7 @@ async function waitForLastTask() { if (!lastTask.value.id) return; const [error, result] = await taskModel.get(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result; @@ -49,7 +49,7 @@ async function waitForLastTask() { async function refreshTasks() { const [error, result] = await taskModel.getByType(TASK_TYPES.TASK_CHANGE_MAIL_LOCATION); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; @@ -75,7 +75,7 @@ async function onSubmit() { lastTask.value.message = 'Preparing dashboard domain'; const [error] = await mailModel.setLocation(subdomain.value, domain.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); originalDomain.value = domain.value; originalSubdomain.value = subdomain.value; @@ -85,12 +85,12 @@ async function onSubmit() { onMounted(async () => { let [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; [error, result] = await mailModel.location(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domain.value = result.domain; subdomain.value = result.subdomain; diff --git a/dashboard/src/components/MailboxDialog.vue b/dashboard/src/components/MailboxDialog.vue index 1f81c9ac3..ace6b842e 100644 --- a/dashboard/src/components/MailboxDialog.vue +++ b/dashboard/src/components/MailboxDialog.vue @@ -70,21 +70,21 @@ async function onSubmit() { if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } [error] = await mailboxesModel.setAliases(domain.value, name.value, aliases.value); if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } } else { const [error] = await mailboxesModel.add(domain.value, name.value, data); if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } } diff --git a/dashboard/src/components/MailinglistDialog.vue b/dashboard/src/components/MailinglistDialog.vue index ea6523970..5c3b1d712 100644 --- a/dashboard/src/components/MailinglistDialog.vue +++ b/dashboard/src/components/MailinglistDialog.vue @@ -42,7 +42,7 @@ async function onSubmit() { if (error.status === 400 && error.body.message.indexOf('Invalid mail member') === 0) formError.value.members = error.body.message; else if (error.status === 400) formError.value.name = error.body.message; else formError.value.generic = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } } else { const [error] = await mailinglistsModel.add(domain.value, name.value, data); @@ -51,7 +51,7 @@ async function onSubmit() { if (error.status === 400 && error.body.message.indexOf('Invalid mail member') === 0) formError.value.members = error.body.message; else if (error.status === 400) formError.value.name = error.body.message; else formError.value.generic = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } } diff --git a/dashboard/src/components/NotificationSettings.vue b/dashboard/src/components/NotificationSettings.vue index 2f908d0ad..26597a404 100644 --- a/dashboard/src/components/NotificationSettings.vue +++ b/dashboard/src/components/NotificationSettings.vue @@ -32,14 +32,14 @@ async function onSubmit() { if (reboot.value) config.push('reboot'); const [error] = await profileModel.setNotificationConfig(config); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); busy.value = false; } onMounted(async () => { const [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const config = result.notificationConfig || []; diff --git a/dashboard/src/components/PasswordResetDialog.vue b/dashboard/src/components/PasswordResetDialog.vue index 3c3bd2e3d..3eb3a3ffa 100644 --- a/dashboard/src/components/PasswordResetDialog.vue +++ b/dashboard/src/components/PasswordResetDialog.vue @@ -24,7 +24,7 @@ async function onSend() { if (error) { busy.value = false; formError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } window.pankow.notify({ type: 'success', text: t('profile.passwordResetNotification.body', { email: email.value }) }); @@ -41,7 +41,7 @@ defineExpose({ email.value = u.fallbackEmail || u.email; const [error, result] = await usersModel.getPasswordResetLink(u.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); resetLink.value = result; dialog.value.open(); diff --git a/dashboard/src/components/SftpInfoDialog.vue b/dashboard/src/components/SftpInfoDialog.vue index a63775f4a..024d38140 100644 --- a/dashboard/src/components/SftpInfoDialog.vue +++ b/dashboard/src/components/SftpInfoDialog.vue @@ -25,15 +25,15 @@ defineExpose({ fqdn.value = a.fqdn; let [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); adminFqdn.value = result.adminFqdn; [error, result] = await domainsModel.get(result.adminDomain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); adminDomainProvider.value = result.provider; [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); username.value = result.username; dialog.value.open(); diff --git a/dashboard/src/components/SyncDns.vue b/dashboard/src/components/SyncDns.vue index 4de0022c3..69f3dd900 100644 --- a/dashboard/src/components/SyncDns.vue +++ b/dashboard/src/components/SyncDns.vue @@ -18,7 +18,7 @@ async function waitForLastTask() { if (!lastTask.value.id) return; const [error, result] = await tasksModel.get(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result; @@ -33,7 +33,7 @@ async function waitForLastTask() { async function refreshTasks() { const [error, result] = await tasksModel.getByType(TASK_TYPES.TASK_SYNC_DNS_RECORDS); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; @@ -57,7 +57,7 @@ async function onSync() { // no options means all records const [error] = await domainsModel.setDnsRecords({}); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshTasks(); } diff --git a/dashboard/src/components/SystemBackupList.vue b/dashboard/src/components/SystemBackupList.vue index 8f6c3445d..c0046d8ed 100644 --- a/dashboard/src/components/SystemBackupList.vue +++ b/dashboard/src/components/SystemBackupList.vue @@ -87,7 +87,7 @@ async function waitForBackupTask(id) { if (!id || (trackingBackupTask.value.id && trackingBackupTask.value.id !== id)) return; const [error, result] = await tasksModel.get(id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); trackingBackupTask.value = result; @@ -106,7 +106,7 @@ async function waitForCleanupTask(id) { if (!id || (trackingCleanupTask.value.id && trackingCleanupTask.value.id !== id)) return; const [error, result] = await tasksModel.get(id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); trackingCleanupTask.value = result; @@ -126,7 +126,7 @@ async function refreshTasks() { for (const site of sites.value) { const [error, results] = await tasksModel.getByType(TASK_TYPES.TASK_FULL_BACKUP_PREFIX + site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); results.forEach(r => r.siteName = site.name); tasks = tasks.concat(results); @@ -137,7 +137,7 @@ async function refreshTasks() { for (const site of sites.value) { const [error, results] = await tasksModel.getByType(TASK_TYPES.TASK_CLEAN_BACKUPS_PREFIX + site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); results.forEach(r => r.siteName = site.name); tasks = tasks.concat(results); @@ -160,7 +160,7 @@ async function refreshTasks() { async function refreshBackups() { const [error, result] = await backupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(function (backup) { backup.site = sites.value.find(t => t.id === backup.siteId); @@ -172,17 +172,17 @@ async function refreshBackups() { async function refreshBackupSites() { const [error, result] = await backupSitesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); sites.value = result; } async function onDownloadConfig(backup) { const [error, dashboardConfig] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const [backupConfigError, backupConfig] = await backupSitesModel.generateBackupConfig(backup); - if (backupConfigError) return window.cloudron.onError(backupConfigError); + if (backupConfigError) return console.error(backupConfigError); const filename = `${dashboardConfig.adminFqdn}-backup-config-${(new Date(backup.creationTime)).toISOString().split('T')[0]}.json`; download(filename, JSON.stringify(backupConfig, null, 4)); @@ -214,7 +214,7 @@ async function onEditSubmit() { const [error] = await backupsModel.update(editBackupId.value, editBackupLabel.value, editBackupPersist.value ? -1 : 0); if (error) { - if (error) return window.cloudron.onError(error); + return console.error(error); } await refreshBackups(); diff --git a/dashboard/src/components/SystemGraphs.vue b/dashboard/src/components/SystemGraphs.vue index 412545192..1b1d078fc 100644 --- a/dashboard/src/components/SystemGraphs.vue +++ b/dashboard/src/components/SystemGraphs.vue @@ -131,7 +131,7 @@ async function rebuild() { serviceIds: [] }; const [error, metrics] = await systemModel.getMetrics(options); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const appIds = selectedContainers.value.map(c => c.id); for (const [idx, id] of appIds.concat(['system']).entries()) { @@ -163,15 +163,15 @@ onMounted(async () => { let error, result; [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); systemMemory = result; [error, result] = await systemModel.cpus(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); systemCpus = result; [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); allContainers.value = result.map(a => { return { label: a.label || a.fqdn, id: a.id }; }); if (result.length) allContainers.value.push({ separator: true }); allContainers.value.push(...serviceContainers); diff --git a/dashboard/src/components/SystemInfo.vue b/dashboard/src/components/SystemInfo.vue index bc8ceb437..bb57f414c 100644 --- a/dashboard/src/components/SystemInfo.vue +++ b/dashboard/src/components/SystemInfo.vue @@ -49,25 +49,25 @@ async function onReboot() { onMounted(async () => { let [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); memory.value = result; [error, result] = await systemModel.cpus(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); cpus.value = result; [error, result] = await cloudronModel.getTimeZone(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); [error, result] = await systemModel.info(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); info.value = result; uptime.value = moment.duration(info.value.uptimeSecs, 'seconds').locale(navigator.language).humanize(); activeSince.value = info.value.activationTime ? moment(info.value.activationTime).fromNow() : 'unknown'; [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); config.value = result; }); diff --git a/dashboard/src/components/SystemUpdate.vue b/dashboard/src/components/SystemUpdate.vue index a32b7ba34..fcee07889 100644 --- a/dashboard/src/components/SystemUpdate.vue +++ b/dashboard/src/components/SystemUpdate.vue @@ -62,7 +62,7 @@ const configureHours = ref([]); async function refreshAutoupdatePattern() { const [error, result] = await updaterModel.getAutoupdatePattern(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentPattern.value = result.pattern; configurePattern.value = result.pattern; @@ -70,14 +70,14 @@ async function refreshAutoupdatePattern() { async function refreshApps() { const [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); apps.value = result; } async function refreshPendingUpdateInfo() { const [error, result] = await updaterModel.getBoxUpdate(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); updateError.value = {}; stopError.value = {}; @@ -118,7 +118,7 @@ async function onSubmitConfigure() { if (error) { configureError.value = error.body ? error.body.message : 'Internal error'; configureBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } await refreshAutoupdatePattern(); @@ -140,7 +140,7 @@ async function waitForTask() { if (error) { setTimeout(waitForTask, 2000); - if (error) return window.cloudron.onError(error); + return console.error(error); } lastTask.value = result; @@ -157,7 +157,7 @@ async function waitForTask() { async function refreshTasks() { const [error, result] = await tasksModel.getByType(TASK_TYPES.TASK_UPDATE); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; if (result.length && !result[0].active && !result[0].success) updateError.value.generic = result[0].error.message; @@ -233,7 +233,7 @@ async function onStop() { onMounted(async () => { const [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); version.value = result.version; ubuntuVersion.value = result.ubuntuVersion; diff --git a/dashboard/src/components/Terminal.vue b/dashboard/src/components/Terminal.vue index ec59cc7df..061de69f8 100644 --- a/dashboard/src/components/Terminal.vue +++ b/dashboard/src/components/Terminal.vue @@ -150,7 +150,7 @@ async function onRestartApp() { busyRestart.value = true; const [error] = await appsModel.restart(id.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); busyRestart.value = false; } diff --git a/dashboard/src/components/UserDialog.vue b/dashboard/src/components/UserDialog.vue index 1fa4f94d1..1e1314cf0 100644 --- a/dashboard/src/components/UserDialog.vue +++ b/dashboard/src/components/UserDialog.vue @@ -90,7 +90,7 @@ async function onSubmit() { formError.value.username = 'Username already taken'; } else { // should not happen!! - window.cloudron.onError(message); + console.error(message); } } else if (error.status === 400) { if (message.toLowerCase().indexOf('email') !== -1) { @@ -100,10 +100,10 @@ async function onSubmit() { formError.value.username = message; } else { // should not happen!! - window.cloudron.onError(error); + console.error(error); } } else { - window.cloudron.onError(error); + console.error(error); } busy.value = false; return; @@ -118,7 +118,7 @@ async function onSubmit() { if (error) { formError.value.role = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -127,7 +127,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -135,7 +135,7 @@ async function onSubmit() { if (groupError) { formError.value.generic = groupError.body ? groupError.body.message : 'Internal error'; busy.value = false; - return window.cloudron.onError(groupError); + return console.error(groupError); } if (sendInvite.value) { @@ -143,7 +143,7 @@ async function onSubmit() { if (error) { formError.value.generic = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -158,7 +158,7 @@ async function onSubmit() { if (avatarError) { formError.value.generic = avatarError.body ? avatarError.body.message : 'Internal error'; busy.value = false; - return window.cloudron.onError(avatarError); + return console.error(avatarError); } emit('success'); @@ -184,14 +184,14 @@ defineExpose({ avatarFile = u?.avatarUrl ? 'src' : 'fallback'; let [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(g => g.label = g.name); allGroups.value = result; allLocalGroups.value = result.filter(g => !g.source); localGroupIds.value = u ? u.groupIds.filter(gid => allLocalGroups.value.find(g => g.id === gid)) : []; [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profile.value = result; isSelf.value = u && u.id === profile.value.id; @@ -204,7 +204,7 @@ defineExpose({ ]; [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profileLocked.value = result.profileLocked; imagePicker.value.reset(); diff --git a/dashboard/src/components/WellKnownDialog.vue b/dashboard/src/components/WellKnownDialog.vue index 755a64f9e..ab01e8f3e 100644 --- a/dashboard/src/components/WellKnownDialog.vue +++ b/dashboard/src/components/WellKnownDialog.vue @@ -51,7 +51,7 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } emit('success'); diff --git a/dashboard/src/components/app/Access.vue b/dashboard/src/components/app/Access.vue index 8c3c62c86..703995381 100644 --- a/dashboard/src/components/app/Access.vue +++ b/dashboard/src/components/app/Access.vue @@ -33,14 +33,14 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; submitBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } [error] = await appsModel.configure(props.app.id, 'operators', { operators: (operatorAcl.value.users.length || operatorAcl.value.groups.length) ? operatorAcl.value : null}); if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; submitBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } submitBusy.value = false; @@ -50,7 +50,7 @@ onMounted(async () => { loading.value = true; let [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const userIds = new Set(); for (const u of result) { u.username = u.username || u.email; // ensure username @@ -59,7 +59,7 @@ onMounted(async () => { users.value = result; [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groups.value = result; const groupIds = new Set(); for (const g of result) groupIds.add(g.id); diff --git a/dashboard/src/components/app/Backups.vue b/dashboard/src/components/app/Backups.vue index fab336a68..de413008b 100644 --- a/dashboard/src/components/app/Backups.vue +++ b/dashboard/src/components/app/Backups.vue @@ -127,7 +127,7 @@ async function onChangeAutoBackups(value) { const [error] = await appsModel.configure(props.app.id, 'automatic_backup', { enable: value }); if (error) { autoBackupsEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -135,7 +135,7 @@ async function waitForTask() { if (!lastTask.value.id) return; const [error, result] = await tasksModel.get(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result; @@ -152,7 +152,7 @@ async function waitForTask() { async function refreshTasks() { const [error, result] = await tasksModel.getByType(TASK_TYPES.TASK_APP_BACKUP_PREFIX + props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); lastTask.value = result[0] || {}; @@ -173,7 +173,7 @@ async function onStartBackup(backupSiteId) { startBackupBusy.value = true; const [error] = await appsModel.backup(props.app.id, backupSiteId); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshTasks(); } @@ -182,7 +182,7 @@ async function onStopBackup() { stopBackupBusy.value = true; const [error] = await tasksModel.stop(lastTask.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshTasks(); @@ -207,7 +207,7 @@ async function onEditSubmit() { if (error) { editError.value = error.body ? error.body.message : 'Internal error'; editBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } refreshBackupList(); @@ -221,7 +221,7 @@ function getDownloadLink(backup) { async function onDownloadConfig(backup) { const [backupConfigError, backupConfig] = await backupSitesModel.generateBackupConfig(backup); - if (backupConfigError) return window.cloudron.onError(backupConfigError); + if (backupConfigError) return console.error(backupConfigError); const filename = `${props.app.fqdn}-backup-config-${(new Date(backup.creationTime)).toISOString().split('T')[0]}.json`; download(filename, JSON.stringify(backupConfig, null, 4)); @@ -248,7 +248,7 @@ async function onRestoreSubmit() { const [error] = await appsModel.restore(props.app.id, restoreBackup.value.id); if (error) { restoreBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } restoreDialog.value.close(); @@ -266,7 +266,7 @@ function onClone(backup) { async function refreshBackupList() { const [error, result] = await appsModel.backups(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(backup => { backup.site = backupSites.value.find(t => t.id === backup.siteId); @@ -278,7 +278,7 @@ onMounted(async () => { autoBackupsEnabled.value = props.app.enableBackup; const [error, result] = await appsModel.listBackupSites(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); backupSites.value = result; backupSitesMenu.value = result.map(site => { diff --git a/dashboard/src/components/app/Cron.vue b/dashboard/src/components/app/Cron.vue index 27a7bd191..bb3726b69 100644 --- a/dashboard/src/components/app/Cron.vue +++ b/dashboard/src/components/app/Cron.vue @@ -49,7 +49,7 @@ async function onSubmit() { busy.value = true; const [error] = await appsModel.configure(props.app.id, 'crontab', { crontab: crontab.value }); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); busy.value = false; } diff --git a/dashboard/src/components/app/Display.vue b/dashboard/src/components/app/Display.vue index c7472ea84..c8fa168eb 100644 --- a/dashboard/src/components/app/Display.vue +++ b/dashboard/src/components/app/Display.vue @@ -59,7 +59,7 @@ async function onSubmit() { if (error) { labelError.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -68,7 +68,7 @@ async function onSubmit() { if (error) { tagsError.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } } diff --git a/dashboard/src/components/app/Email.vue b/dashboard/src/components/app/Email.vue index 9486ea0d8..522d7e6a4 100644 --- a/dashboard/src/components/app/Email.vue +++ b/dashboard/src/components/app/Email.vue @@ -52,7 +52,7 @@ async function onSendmailSubmit() { if (error) { sendmailError.value = error.body ? error.body.message : 'Internal error'; sendmailBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } sendmailBusy.value = false; @@ -75,7 +75,7 @@ async function onRecvmailSubmit() { if (error) { recvmailError.value = error.body ? error.body.message : 'Internal error'; recvmailBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } recvmailBusy.value = false; @@ -83,7 +83,7 @@ async function onRecvmailSubmit() { onMounted(async () => { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result.map(d => { return { @@ -103,7 +103,7 @@ onMounted(async () => { let tmp = []; for (const d of domains.value) { const [error, result] = await mailboxesModel.list(d.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); tmp = tmp.concat(result); } diff --git a/dashboard/src/components/app/Eventlog.vue b/dashboard/src/components/app/Eventlog.vue index ad7c0ea15..dd0950a3d 100644 --- a/dashboard/src/components/app/Eventlog.vue +++ b/dashboard/src/components/app/Eventlog.vue @@ -14,7 +14,7 @@ const eventlogs = ref([]); onMounted(async () => { const [error, result] = await appsModel.getEvents(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); eventlogs.value = result.map(e => { return { diff --git a/dashboard/src/components/app/Graphs.vue b/dashboard/src/components/app/Graphs.vue index 6d764bfdf..8aecdaf84 100644 --- a/dashboard/src/components/app/Graphs.vue +++ b/dashboard/src/components/app/Graphs.vue @@ -92,7 +92,7 @@ async function rebuild() { if (period.value.hours !== 0) { const [error, metrics] = await appsModel.getMetrics(app.id, { fromSecs: period.value.hours * 60 * 60, intervalSecs: period.value.intervalSecs }); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); datasets.cpu[0].data = metrics[app.id].cpu; datasets.memory[0].data = metrics[app.id].memory; @@ -120,7 +120,7 @@ async function rebuild() { onMounted(async () => { const [error, result] = await systemModel.cpus(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); systemCpus = result; diff --git a/dashboard/src/components/app/Info.vue b/dashboard/src/components/app/Info.vue index f85e9e80b..069f9070c 100644 --- a/dashboard/src/components/app/Info.vue +++ b/dashboard/src/components/app/Info.vue @@ -24,7 +24,7 @@ const profile = inject('profile'); async function onAckChecklistItem(item, key) { const [error] = await appsModel.ackChecklistItem(props.app.id, key, true); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); item.acknowledged = true; item.changedAt = Date.now(); @@ -46,7 +46,7 @@ async function onSubmit() { const [error] = await appsModel.configure(props.app.id, 'notes', { notes: noteContent.value }); if (error) { busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } // let main view know about this diff --git a/dashboard/src/components/app/Location.vue b/dashboard/src/components/app/Location.vue index c3c4ea919..0f3df4974 100644 --- a/dashboard/src/components/app/Location.vue +++ b/dashboard/src/components/app/Location.vue @@ -104,7 +104,7 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } if (result.needsOverwrite && !overwriteDns.value) { @@ -137,7 +137,7 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } busy.value = false; @@ -145,7 +145,7 @@ async function onSubmit() { onMounted(async () => { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(d => { d.label = '.' + d.domain; diff --git a/dashboard/src/components/app/Proxy.vue b/dashboard/src/components/app/Proxy.vue index b58ec5eba..6519517d5 100644 --- a/dashboard/src/components/app/Proxy.vue +++ b/dashboard/src/components/app/Proxy.vue @@ -20,7 +20,7 @@ async function onSubmit() { if (error) { errorMessage.value = error.body ? error.body.message : 'Internal error'; busy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } busy.value = false; diff --git a/dashboard/src/components/app/Repair.vue b/dashboard/src/components/app/Repair.vue index fbc4b18d6..317f864b4 100644 --- a/dashboard/src/components/app/Repair.vue +++ b/dashboard/src/components/app/Repair.vue @@ -25,7 +25,7 @@ async function onToggleDebugMode() { const [error] = await appsModel.configure(props.app.id, 'debug_mode', { debugMode: data }); if (error) { debugModeBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } // let the task start diff --git a/dashboard/src/components/app/Resources.vue b/dashboard/src/components/app/Resources.vue index 4567f3900..0b28aa592 100644 --- a/dashboard/src/components/app/Resources.vue +++ b/dashboard/src/components/app/Resources.vue @@ -31,7 +31,7 @@ async function onSubmitMemoryLimit() { const limit = tmp === memoryTicks.value[0] ? 0 : tmp; // this will reset to app minimum const [error] = await appsModel.configure(props.app.id, 'memory_limit', { memoryLimit: limit }); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // give polling some time setTimeout(() => memoryLimitBusy.value = false, 4000); @@ -41,7 +41,7 @@ async function onSubmitCpuQuota() { cpuQuotaBusy.value = true; const [error] = await appsModel.configure(props.app.id, 'cpu_quota', { cpuQuota: parseInt(cpuQuota.value) }); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentCpuQuota.value = parseInt(cpuQuota.value); @@ -83,7 +83,7 @@ const devicesChanged = computed(() => { onMounted(async () => { const [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); cpuQuota.value = props.app.cpuQuota; currentCpuQuota.value = props.app.cpuQuota; diff --git a/dashboard/src/components/app/Security.vue b/dashboard/src/components/app/Security.vue index 7895f68d1..67eab08b0 100644 --- a/dashboard/src/components/app/Security.vue +++ b/dashboard/src/components/app/Security.vue @@ -27,7 +27,7 @@ async function onSubmit() { }; const [error] = await appsModel.configure(props.app.id, 'reverse_proxy', data); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); busy.value = false; } diff --git a/dashboard/src/components/app/Services.vue b/dashboard/src/components/app/Services.vue index 2c14fecd6..e6b6f8b2b 100644 --- a/dashboard/src/components/app/Services.vue +++ b/dashboard/src/components/app/Services.vue @@ -21,7 +21,7 @@ async function onTurnChange(value) { if (error) { turnBusy.value = false; turnEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } turnBusy.value = false; @@ -38,7 +38,7 @@ async function onRedisChange(value) { if (error) { redisBusy.value = false; redisEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } redisBusy.value = false; diff --git a/dashboard/src/components/app/Storage.vue b/dashboard/src/components/app/Storage.vue index e8ca1b659..cc92ba561 100644 --- a/dashboard/src/components/app/Storage.vue +++ b/dashboard/src/components/app/Storage.vue @@ -52,7 +52,7 @@ async function onSubmitMove() { if (error) { moveError.value = error.body ? error.body.message : 'Internal error'; moveBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } originalVolumeId.value = volumeId.value; @@ -87,7 +87,7 @@ async function onSubmitMounts() { if (error) { mountsError.value = error.body ? error.body.message : 'Internal error'; mountsBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } // make a copy, cannot clone due to Proxy objects @@ -121,7 +121,7 @@ const mountsChanged = computed(() => { onMounted(async () => { const [error, result] = await volumesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); props.app.mounts.forEach(mount => { // { volumeId, readOnly } const volume = result.find(v => { return v.id === mount.volumeId; }); diff --git a/dashboard/src/components/app/Uninstall.vue b/dashboard/src/components/app/Uninstall.vue index ad575eca6..708805260 100644 --- a/dashboard/src/components/app/Uninstall.vue +++ b/dashboard/src/components/app/Uninstall.vue @@ -31,7 +31,7 @@ async function onUninstall() { if (!yes) return; const [error] = await appsModel.uninstall(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); window.location.href = '/#/apps'; } @@ -50,20 +50,20 @@ async function onArchive() { if (!yes) return; const [error] = await appsModel.archive(props.app.id, latestBackup.value.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); window.location.href = '/#/apps'; } onMounted(async () => { let [error, result] = await appsModel.backups(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); latestBackup.value = result[0] || null; if (latestBackup.value) { [error, result] = await appsModel.listBackupSites(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); latestBackup.value.siteName = result.find((s) => s.id === latestBackup.value.siteId).name; } diff --git a/dashboard/src/components/app/Updates.vue b/dashboard/src/components/app/Updates.vue index 094d5b038..a527b7347 100644 --- a/dashboard/src/components/app/Updates.vue +++ b/dashboard/src/components/app/Updates.vue @@ -42,7 +42,7 @@ async function waitForTask(id) { if (!id) return; const [error, result] = await tasksModel.get(id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // task done, refresh menu if (!result.active) { @@ -57,7 +57,7 @@ async function onCheck() { busyCheck.value = true; const [error] = await appsModel.checkUpdate(props.app.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); busyCheck.value = false; } @@ -70,7 +70,7 @@ async function onUpdate() { if (error) { busyUpdate.value = false; if (error.status === 400) updateError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } dialog.value.close(); @@ -89,7 +89,7 @@ onMounted(async () => { autoUpdatesEnabled.value = props.app.enableAutomaticUpdate; const [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profile.value = result; }); diff --git a/dashboard/src/models/AppsModel.js b/dashboard/src/models/AppsModel.js index 70fbf523d..de0aed985 100644 --- a/dashboard/src/models/AppsModel.js +++ b/dashboard/src/models/AppsModel.js @@ -83,11 +83,11 @@ function create() { async function loadConfigAndProfile() { let [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); config = result; [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profile = result; } diff --git a/dashboard/src/views/ActivationView.vue b/dashboard/src/views/ActivationView.vue index 3c55c8944..2b4f964b7 100644 --- a/dashboard/src/views/ActivationView.vue +++ b/dashboard/src/views/ActivationView.vue @@ -66,7 +66,7 @@ async function onOwnerSubmit() { onMounted(async () => { const [error, result] = await provisionModel.status(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (redirectIfNeeded(result, 'activation')) return; // redirected to some other view... }); diff --git a/dashboard/src/views/AppArchiveView.vue b/dashboard/src/views/AppArchiveView.vue index c19297b40..c50aff2bc 100644 --- a/dashboard/src/views/AppArchiveView.vue +++ b/dashboard/src/views/AppArchiveView.vue @@ -65,7 +65,7 @@ const archives = ref([]); async function refreshArchives() { const [error, result] = await archivesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // ensure we use the full api oprigin result.forEach(a => { @@ -89,7 +89,7 @@ async function onRemove(archive) { if (!yes) return; const [error] = await archivesModel.remove(archive.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refreshArchives(); } @@ -102,7 +102,7 @@ async function onRestore(archive) { async function onDownloadConfig(archive) { const [backupConfigError, backupConfig] = await backupSitesModel.generateBackupConfig(archive); - if (backupConfigError) return window.cloudron.onError(backupConfigError); + if (backupConfigError) return console.error(backupConfigError); const filename = `${archive.appConfig.fqdn}-archive-config-${(new Date(archive.creationTime)).toISOString().split('T')[0]}.json`; download(filename, JSON.stringify(backupConfig, null, 4)); diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue index 47c8cc6f7..61937b50c 100644 --- a/dashboard/src/views/AppConfigureView.vue +++ b/dashboard/src/views/AppConfigureView.vue @@ -52,7 +52,7 @@ async function refresh() { if (error) { if (error.status === 403) return window.location.hash = '/'; else if (error.status === 404) return window.location.hash = '/apps'; - if (error) return window.cloudron.onError(error); + return console.error(error); } // prevent users who have no acces to @@ -174,7 +174,7 @@ async function onStartApp() { const [error] = await appsModel.start(app.value.id); if (error) { toggleRunStateBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } setTimeout(() => toggleRunStateBusy.value = false, 3000); @@ -186,7 +186,7 @@ async function onStopApp() { const [error] = await appsModel.stop(app.value.id); if (error) { toggleRunStateBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } setTimeout(() => toggleRunStateBusy.value = false, 3000); diff --git a/dashboard/src/views/AppsView.vue b/dashboard/src/views/AppsView.vue index 9bbf6995e..e278c1102 100644 --- a/dashboard/src/views/AppsView.vue +++ b/dashboard/src/views/AppsView.vue @@ -217,10 +217,10 @@ function isOperator(app) { async function refreshApps() { const [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const [applinkError, applinks] = await applinksModel.list(); - if (applinkError) return window.cloudron.onError(applinkError); + if (applinkError) return console.error(applinkError); // amend properties to mimick full app for (const applink of applinks) { @@ -273,7 +273,7 @@ onActivated(async () => { ready.value = true; const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domainFilterOptions.value = [{ id: '', domain: 'All domains', }].concat(result.map(d => { d.id = d.domain; return d; })); domainFilter.value = domainFilterOptions.value[0].id; diff --git a/dashboard/src/views/AppstoreView.vue b/dashboard/src/views/AppstoreView.vue index 4f8c6777f..8fc0a6b46 100644 --- a/dashboard/src/views/AppstoreView.vue +++ b/dashboard/src/views/AppstoreView.vue @@ -121,7 +121,7 @@ async function getAppList() { const [error, result] = await appstoreModel.list(); if (error) { if (error.status === 402) return appstoreTokenError.value = true; - if (error) return window.cloudron.onError(error); + return console.error(error); } apps.value = result; @@ -129,7 +129,7 @@ async function getAppList() { async function getInstalledApps() { const [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); installedApps.value = result; } @@ -175,7 +175,7 @@ function setItemWidth() { async function getDomains() { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; } diff --git a/dashboard/src/views/BackupSitesView.vue b/dashboard/src/views/BackupSitesView.vue index da5c6cb87..b65bdeed4 100644 --- a/dashboard/src/views/BackupSitesView.vue +++ b/dashboard/src/views/BackupSitesView.vue @@ -76,7 +76,7 @@ async function onRemoveSite(site) { if (!yes) return; const [error] = await backupSitesModels.del(site.id); - if (error) window.cloudron.onError(error); + if (error) console.error(error); await refresh(); @@ -87,10 +87,10 @@ async function onRemount(site) { site.status.busy = true; const [error] = await backupSitesModels.remount(site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const [statusError, status] = await backupSitesModels.status(site.id); - if (statusError) window.cloudron.onError(statusError); + if (statusError) console.error(statusError); site.status.state = status.state === 'active' ? 'success' : 'danger'; site.status.message = status.message; @@ -105,11 +105,11 @@ async function onStartBackup(site) { else window.pankow.notify({ text: 'App task is currently in progress. Please retry later.', type: 'danger' }); } - if (error) return window.cloudron.onError(error); + return console.error(error); } const [taskError, task] = await tasksModel.get(result); - if (taskError) return window.cloudron.onError(taskError); + if (taskError) return console.error(taskError); site.task = task; @@ -118,10 +118,10 @@ async function onStartBackup(site) { async function onStartCleanup(site) { const [error, result] = await backupSitesModels.cleanup(site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const [taskError, task] = await tasksModel.get(result); - if (taskError) return window.cloudron.onError(taskError); + if (taskError) return console.error(taskError); site.task = task; @@ -200,7 +200,7 @@ async function onCancelTask(taskId) { async function refreshStatusForSite(site) { const [error, status] = await backupSitesModels.status(site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); site.status.state = status.state === 'active' ? 'success' : 'danger'; site.status.message = status.message; @@ -209,7 +209,7 @@ async function refreshStatusForSite(site) { async function refreshTaskForSite(site) { const [error, tasks] = await tasksModel.getByType(TASK_TYPES.TASK_FULL_BACKUP_PREFIX + site.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (tasks[0]) { site.task = tasks[0]; @@ -225,7 +225,7 @@ async function refresh() { busy.value = true; const [error, results] = await backupSitesModels.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const sortedResults = results.sort((a, b) => a.name.localeCompare(b.name)); diff --git a/dashboard/src/views/CloudronAccountView.vue b/dashboard/src/views/CloudronAccountView.vue index 3c61d296f..f9c9290cd 100644 --- a/dashboard/src/views/CloudronAccountView.vue +++ b/dashboard/src/views/CloudronAccountView.vue @@ -35,7 +35,7 @@ async function refresh() { if (error) { if (error.status === 402) return busy.value = false; // not yet registered if (error.status === 412) return busy.value = false; // invalid appstore token - if (error) return window.cloudron.onError(error); + return console.error(error); } email.value = result.email; @@ -75,7 +75,7 @@ async function onUnlinkAccount() { busy.value = true; const [error] = await appstoreModel.unlinkAccount(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await refresh(); @@ -84,7 +84,7 @@ async function onUnlinkAccount() { onMounted(async () => { const [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); consoleServerOrigin.value = result.consoleServerOrigin; diff --git a/dashboard/src/views/DomainsView.vue b/dashboard/src/views/DomainsView.vue index 6c21a77e1..e43465f5e 100644 --- a/dashboard/src/views/DomainsView.vue +++ b/dashboard/src/views/DomainsView.vue @@ -55,7 +55,7 @@ async function onRemove(domain) { const [error] = await domainsModel.remove(domain.domain); if (error) { if (error.status === 409) window.pankow.notify({ text: error.body.message || `Domain is still in use.`, type: 'danger', persistent: true }); - if (error) return window.cloudron.onError(error); + return console.error(error); } await refreshDomains(); @@ -112,7 +112,7 @@ const filteredDomains = computed(() => { async function refreshDomains() { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; @@ -124,7 +124,7 @@ onMounted(async () => { await refreshDomains(); const [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); dashboardDomain.value = result.adminDomain; busy.value = false; diff --git a/dashboard/src/views/EmailDomainView.vue b/dashboard/src/views/EmailDomainView.vue index daaa481a2..e8f81538a 100644 --- a/dashboard/src/views/EmailDomainView.vue +++ b/dashboard/src/views/EmailDomainView.vue @@ -41,7 +41,7 @@ const outboundEnabled = ref(false); async function onSendTestMail() { const [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const address = await inputDialog.value.prompt({ value: result.email, @@ -87,7 +87,7 @@ async function onAskIncomingToggle(value) { if (!yes) return inboundEnabled.value = true; const [error] = await mailModel.setEnabled(domain.value, false); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await onDomainChanged(); } @@ -96,7 +96,7 @@ async function onEnableIncoming() { enableIncomeBusy.value = true; const [error] = await mailModel.setEnabled(domain.value, true); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // FIXME this has to be done in the backend here! reconfigureEmailApps(); @@ -122,7 +122,7 @@ async function onToggleCustomFrom(value) { if (error) { customFrom.value = !value; // revert back old value customFromBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } customFromBusy.value = false; @@ -143,7 +143,7 @@ async function onSubmitSignature() { signatureBusy.value = true; const [error] = await mailModel.setMailBanner(domain.value, signatureText.value, signatureHtml.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); signatureDialog.value.close(); signatureBusy.value = false; @@ -153,12 +153,12 @@ async function onDomainChanged() { busyRefresh.value = true; let [error, result] = await domainsModel.get(domain.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domainProvider.value = result.provider; [error, result] = await mailModel.config(domain.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); mailConfig.value = result; inboundEnabled.value = result.enabled; @@ -190,17 +190,17 @@ onMounted(async () => { domain.value = parts[0]; let [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); mailFqdn.value = result.mailFqdn; adminDomain.value = result.adminDomain; [error, result] = await domainsModel.get(result.adminDomain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); adminDomainProvider.value = result.provider; [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); await onDomainChanged(); }); diff --git a/dashboard/src/views/EmailDomainsView.vue b/dashboard/src/views/EmailDomainsView.vue index 50ec8860a..8d16a1b82 100644 --- a/dashboard/src/views/EmailDomainsView.vue +++ b/dashboard/src/views/EmailDomainsView.vue @@ -50,7 +50,7 @@ async function refreshStatus() { async function refreshUsage() { for (const domain of domains.value) { let [error, result] = await mailModel.config(domain.domain); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domain.inboundEnabled = result.enabled; domain.outboundEnabled = result.relay?.provider !== 'noop'; @@ -68,7 +68,7 @@ async function refreshUsage() { if (error && error.status === 424) { await sleep(1000); continue; - } else if (error) return window.cloudron.onError(error); + } else if (error) return console.error(error); domain.usage = 0; // we used to use quotaValue here but it's quite different wrt diskSize. so choose diskSize consistently @@ -84,7 +84,7 @@ async function refreshUsage() { onMounted(async () => { const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(d => { d.loadingStatus = true; diff --git a/dashboard/src/views/EmailEventlogView.vue b/dashboard/src/views/EmailEventlogView.vue index 8eba67c58..9240ffa7e 100644 --- a/dashboard/src/views/EmailEventlogView.vue +++ b/dashboard/src/views/EmailEventlogView.vue @@ -32,7 +32,7 @@ async function onRefresh() { page.value = 1; const [error, result] = await mailModel.eventlog(types.join(','), search.value, page.value, perPage.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); eventlogs.value = result; @@ -43,7 +43,7 @@ async function fetchMore() { page.value++; const [error, result] = await mailModel.eventlog(types.join(','), search.value, page.value, perPage.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); eventlogs.value = eventlogs.value.concat(result); } diff --git a/dashboard/src/views/EmailMailboxesView.vue b/dashboard/src/views/EmailMailboxesView.vue index f04a94b9a..6a3213658 100644 --- a/dashboard/src/views/EmailMailboxesView.vue +++ b/dashboard/src/views/EmailMailboxesView.vue @@ -141,7 +141,7 @@ async function onSubmitRemove() { if (error) { removeBusy.value = false; removeError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } const idx = mailboxes.value.findIndex(mbox => mbox.fullName === removeMailbox.value.fullName); @@ -158,7 +158,7 @@ async function refreshDomainUsage(domain) { const [error, usage] = await mailModel.usage(domain); // retry if mail addon cannot be reached during restarts if (error && error.status === 424) return setTimeout(refresh, 2000); - else if (error) return window.cloudron.onError(error); + else if (error) return console.error(error); mailboxes.value.forEach((m) => { if (usage[m.fullName]) cachedMailboxUsage.value[m.fullName] = usage[m.fullName]; @@ -171,7 +171,7 @@ async function refreshUsage() { try { await eachLimit(domains.value.map(d => d.domain), 10, refreshDomainUsage); } catch (error) { - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -199,7 +199,7 @@ async function refresh() { try { await eachLimit(domains.value.map(d => d.domain), 10, refreshDomain); } catch (error) { - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -211,19 +211,19 @@ onMounted(async () => { busy.value = true; let [error, result] = await mailModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); apps.value = result.filter(a => !!a.manifest?.addons?.recvmail); [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); users.value = result; [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groups.value = result; await refresh(); diff --git a/dashboard/src/views/EmailMailinglistsView.vue b/dashboard/src/views/EmailMailinglistsView.vue index d4ce230c7..1c66f2b86 100644 --- a/dashboard/src/views/EmailMailinglistsView.vue +++ b/dashboard/src/views/EmailMailinglistsView.vue @@ -93,7 +93,7 @@ async function onSubmitRemove() { if (error) { removeBusy.value = false; removeError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } await refresh(); @@ -118,7 +118,7 @@ async function refresh() { try { await eachLimit(domains.value.map(d => d.domain), 10, refreshForDomain); } catch (error) { - if (error) return window.cloudron.onError(error); + return console.error(error); } mailinglists.value = tmp; @@ -128,7 +128,7 @@ onMounted(async () => { busy.value = true; const [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; diff --git a/dashboard/src/views/EmailSettingsView.vue b/dashboard/src/views/EmailSettingsView.vue index 0cb111057..dcb8fbabb 100644 --- a/dashboard/src/views/EmailSettingsView.vue +++ b/dashboard/src/views/EmailSettingsView.vue @@ -26,7 +26,7 @@ async function onChangeMaxEmailSize() { maxEmailSizeBusy.value = true; const [error] = await mailModel.setMaxEmailSize(parseInt(maxEmailSize.value)); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentMaxEmailSize.value = maxEmailSize.value; maxEmailSizeBusy.value = false; @@ -59,7 +59,7 @@ async function onSubmitAcl() { if (error) { dnsblZonesError.value = error.body ? error.body.message : 'Internal error'; dnsblZonesBusy.value = false; - if (error) return window.cloudron.onError(error); + return console.error(error); } aclDialog.value.close(); @@ -75,7 +75,7 @@ async function onChangeMailboxSharing(value) { const [error] = await mailModel.setMailboxSharing(value); if (error) { mailboxSharingEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -86,7 +86,7 @@ async function onChangeVirtualAllMail(value) { const [error] = await mailModel.setVirtualAllMail(value); if (error) { virtualAllMailEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -98,7 +98,7 @@ async function onChangeFts(value) { const [error] = await mailModel.setFtsConfig(value); if (error) { ftsEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } } @@ -155,43 +155,43 @@ async function onSubmitSpamFilter() { onMounted(async () => { let [error, result] = await domainsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); domains.value = result; [error, result] = await mailModel.mailboxSharing(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); mailboxSharingEnabled.value = result; [error, result] = await mailModel.virtualAllMail(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); virtualAllMailEnabled.value = result; [error, result] = await mailModel.maxEmailSize(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); maxEmailSize.value = result; currentMaxEmailSize.value = result; [error, result] = await mailModel.dnsblConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); dnsblZones.value = result; dnsblZonesString.value = result.join('\n'); [error, result] = await mailModel.spamCustomConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); spamCustomConfig.value = result; [error, result] = await mailModel.spamAcl(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); allowlist.value = result.allowlist; blocklist.value = result.blocklist; [error, result] = await mailModel.ftsConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); ftsEnabled.value = result.enabled; [error, result] = await servicesModel.get('mail'); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); hasMailServiceSufficientMemory.value = result.config.memoryLimit >= 3221225472; // we need at least 3GB }); diff --git a/dashboard/src/views/EventlogView.vue b/dashboard/src/views/EventlogView.vue index 51b651085..f30712ca9 100644 --- a/dashboard/src/views/EventlogView.vue +++ b/dashboard/src/views/EventlogView.vue @@ -108,7 +108,7 @@ async function onRefresh() { page.value = 1; const [error, result] = await eventlogsModel.search(actions.join(','), search.value, page.value, perPage.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); eventlogs.value = result.map(e => { return { @@ -125,7 +125,7 @@ async function onRefresh() { async function fetchMore() { page.value++; const [error, result] = await eventlogsModel.search(actions.join(','), search.value, page.value, perPage.value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); eventlogs.value = eventlogs.value.concat(result.map(e => { return { diff --git a/dashboard/src/views/GroupsView.vue b/dashboard/src/views/GroupsView.vue index 0117c4610..0ec27cd5f 100644 --- a/dashboard/src/views/GroupsView.vue +++ b/dashboard/src/views/GroupsView.vue @@ -69,7 +69,7 @@ const groupDialog = useTemplateRef('groupDialog'); async function refreshUsers() { const [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); usersById.value = {}; users.value = result; @@ -80,7 +80,7 @@ async function refreshUsers() { async function refreshGroups() { const [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groupsById.value = {}; groups.value = result; @@ -133,7 +133,7 @@ async function onRemoveGroup(group) { onMounted(async () => { const [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profile.value = result; diff --git a/dashboard/src/views/NetworkView.vue b/dashboard/src/views/NetworkView.vue index 231d4f43e..79656f790 100644 --- a/dashboard/src/views/NetworkView.vue +++ b/dashboard/src/views/NetworkView.vue @@ -20,7 +20,7 @@ async function onToggleDynDns(value) { const [error] = await networkModel.setDynDnsConfig(value); if (error) { dynDnsIsEnabled.value = !value; - if (error) return window.cloudron.onError(error); + return console.error(error); } busy.value = false; @@ -28,7 +28,7 @@ async function onToggleDynDns(value) { onMounted(async () => { const [error, result] = await networkModel.getDynDnsConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); dynDnsIsEnabled.value = result.enabled; diff --git a/dashboard/src/views/OpenIdView.vue b/dashboard/src/views/OpenIdView.vue index a044d8b34..720683337 100644 --- a/dashboard/src/views/OpenIdView.vue +++ b/dashboard/src/views/OpenIdView.vue @@ -103,7 +103,7 @@ async function onSubmit() { if (error) { submitBusy.value = false; submitError.value = error.body ? error.body.message : 'Internal error'; - if (error) return window.cloudron.onError(error); + return console.error(error); } await refresh(); @@ -137,13 +137,13 @@ async function onRemove(client) { async function refresh() { const [error, result] = await userDirectoryModel.getOpenIdClients(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); clients.value = result; } onMounted(async () => { const [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); discoveryUrl.value = `https://${result.adminFqdn}/.well-known/openid-configuration`; diff --git a/dashboard/src/views/ProfileView.vue b/dashboard/src/views/ProfileView.vue index dee3f937b..e77c856d5 100644 --- a/dashboard/src/views/ProfileView.vue +++ b/dashboard/src/views/ProfileView.vue @@ -42,7 +42,7 @@ const languages = ref([]); const language = ref(''); async function onSelectLanguage(lang) { const error = await profileModel.setLanguage(lang); - if (error) return window.cloudron.onError('Failed to set language', error); + if (error) return console.error('Failed to set language', error); await setLanguage(lang, true); } @@ -54,7 +54,7 @@ async function onDisplayNameSave(newName) { const error = await profileModel.setDisplayName(newName); savingDisplayName.value = false; - if (error) return window.cloudron.onError('Failed to set displayName', error); + if (error) return console.error('Failed to set displayName', error); profile.value.displayName = newName; } @@ -94,7 +94,7 @@ async function onRevokeAllWebAndCliTokens() { const tokens = webadminTokens.value.concat(cliTokens.value).filter(t => t.accessToken !== localStorage.token); for (const token of tokens) { const [error] = await tokensModel.remove(token.id); - if (error) window.cloudron.onError(error); + if (error) console.error(error); } await profileModel.logout(); @@ -110,7 +110,7 @@ const twoFADialog = useTemplateRef('twoFADialog'); async function onOpenTwoFASetupDialog() { const [error, result] = await profileModel.setTwoFASecret(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); twoFAEnableError.value = ''; twoFATotpToken.value = ''; @@ -139,7 +139,7 @@ async function onTwoFADisable() { // Init onMounted(async () => { let [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); config.value = result; await refreshProfile(); @@ -163,7 +163,7 @@ onMounted(async () => { language.value = languages.value.find(l => l.id === usedLang).id; [error, result] = await tokensModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // dashboard and development clientIds were issued with 7.5.0 webadminTokens.value = result.filter(function (c) { return c.clientId === TOKEN_TYPES.ID_WEBADMIN || c.clientId === TOKEN_TYPES.ID_DEVELOPMENT || c.clientId === 'dashboard' || c.clientId === 'development'; }); diff --git a/dashboard/src/views/RestoreView.vue b/dashboard/src/views/RestoreView.vue index a17619ad1..6f8602882 100644 --- a/dashboard/src/views/RestoreView.vue +++ b/dashboard/src/views/RestoreView.vue @@ -56,7 +56,7 @@ async function waitForRestore () { const [error, result] = await provisionModel.status(); if (error) { setTimeout(waitForRestore, 5000); - if (error) return window.cloudron.onError(error); + return console.error(error); } if (!result.restore.active) { @@ -326,7 +326,7 @@ watchEffect(() => { onMounted(async () => { const [error, status] = await provisionModel.status(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (redirectIfNeeded(status, 'restore')) return; // redirected to some other view... diff --git a/dashboard/src/views/ServicesView.vue b/dashboard/src/views/ServicesView.vue index e3a5ef723..b1c4d2aa2 100644 --- a/dashboard/src/views/ServicesView.vue +++ b/dashboard/src/views/ServicesView.vue @@ -92,7 +92,7 @@ async function refresh(id) { } const [error, result] = await servicesModel.get(id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); services[id].id = id; services[id].status = result.status; @@ -111,12 +111,12 @@ async function refreshAll() { refreshBusy.value = true; let [error, result] = await appsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); apps = result; [error, result] = await servicesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // init with all services for (const s of result.sort()) { @@ -137,7 +137,7 @@ async function onRestart(id) { services[id].status = 'starting'; const [error] = await servicesModel.restart(id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); // this will poll till active await refresh(id); @@ -218,7 +218,7 @@ onMounted(async () => { await refreshAll(); const [error, result] = await systemModel.memory(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); availableSystemMemory = result.memory; }); diff --git a/dashboard/src/views/SetupView.vue b/dashboard/src/views/SetupView.vue index a21b540b5..732b837ed 100644 --- a/dashboard/src/views/SetupView.vue +++ b/dashboard/src/views/SetupView.vue @@ -54,7 +54,7 @@ async function waitForDnsSetup () { const [error, result] = await provisionModel.status(); if (error) { setTimeout(waitForDnsSetup, 5000); - if (error) return window.cloudron.onError(error); + return console.error(error); } if (!result.setup.active) { @@ -136,7 +136,7 @@ onMounted(async () => { const search = decodeURIComponent(window.location.search).slice(1).split('&').map(function (item) { return item.split('='); }).reduce(function (o, k) { o[k[0]] = k[1]; return o; }, {}); const [error, status] = await provisionModel.status(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); if (redirectIfNeeded(status, 'setup')) return; // redirected to some other view... diff --git a/dashboard/src/views/SystemSettingsView.vue b/dashboard/src/views/SystemSettingsView.vue index 6a0f6ceda..7645481be 100644 --- a/dashboard/src/views/SystemSettingsView.vue +++ b/dashboard/src/views/SystemSettingsView.vue @@ -28,7 +28,7 @@ const currentTimeZone = ref(''); async function onTimeZoneChange(value) { const [error] = await cloudronModel.setTimeZone(value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentTimeZone.value = value; } @@ -40,7 +40,7 @@ const currentLanguage = ref(''); async function onLanguageChange(value) { const [error] = await cloudronModel.setLanguage(value); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); currentLanguage.value = value; @@ -49,13 +49,13 @@ async function onLanguageChange(value) { onMounted(async () => { let [error, result] = await cloudronModel.getTimeZone(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); timeZone.value = result; currentTimeZone.value = result; [error, result] = await cloudronModel.languages(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); allLanguages.value = result.map(l => { const displayNames = new Intl.DisplayNames(['en'], { type: 'language' }); @@ -72,17 +72,17 @@ onMounted(async () => { }); [error, result] = await cloudronModel.getLanguage(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); language.value = result; currentLanguage.value = result; [error, result] = await systemModel.info(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); info.value = result; [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); config.value = result; }); diff --git a/dashboard/src/views/UserDirectorySettingsView.vue b/dashboard/src/views/UserDirectorySettingsView.vue index da68b30a5..29c1d0061 100644 --- a/dashboard/src/views/UserDirectorySettingsView.vue +++ b/dashboard/src/views/UserDirectorySettingsView.vue @@ -40,7 +40,7 @@ async function onToggleEditableUserProfiles(value) { onMounted(async () => { const [error, result] = await userDirectoryModel.getGlobalProfileConfig(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); editableUserProfiles.value = !result.lockUserProfiles; mandatory2FA.value = result.mandatory2FA; diff --git a/dashboard/src/views/UsersView.vue b/dashboard/src/views/UsersView.vue index a1feb9930..baa73e0a7 100644 --- a/dashboard/src/views/UsersView.vue +++ b/dashboard/src/views/UsersView.vue @@ -129,7 +129,7 @@ const filteredUsers = computed(() => { async function refreshUsers() { const [error, result] = await usersModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); usersById.value = {}; users.value = result; @@ -140,7 +140,7 @@ async function refreshUsers() { async function refreshGroups() { const [error, result] = await groupsModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); groupsById.value = {}; groups.value = result; @@ -194,7 +194,7 @@ async function on2FAReset(user) { if (!yes) return; const [error] = await usersModel.disableTwoFactorAuthentication(user.id); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); user.twoFactorAuthenticationEnabled = false; } @@ -229,7 +229,7 @@ async function onRemoveUser(user) { onMounted(async () => { let [error, result] = await profileModel.get(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); profile.value = result; @@ -246,7 +246,7 @@ onMounted(async () => { ]; [error, result] = await dashboardModel.config(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); external2FA.value = result.external2FA; busy.value = false; diff --git a/dashboard/src/views/VolumesView.vue b/dashboard/src/views/VolumesView.vue index 173afa53b..a813eff67 100644 --- a/dashboard/src/views/VolumesView.vue +++ b/dashboard/src/views/VolumesView.vue @@ -83,7 +83,7 @@ async function refresh() { busy.value = true; const [error, result] = await volumesModel.list(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); result.forEach(v => { v.busy = true; }); volumes.value = result; @@ -124,7 +124,7 @@ async function openVolumeDialog(volume) { volumeDialogData.value.privateKey = volume ? volume.mountOptions.privateKey : ''; const [error, blockDevices] = await volumesModel.getBlockDevices(); - if (error) return window.cloudron.onError(error); + if (error) return console.error(error); const ext4BlockDevices = [], xfsBlockDevices = []; for (const blockDevice of blockDevices) { @@ -195,7 +195,7 @@ async function onRemove(volume) { const [error] = await volumesModel.remove(volume.id); if (error) { if (error.status === 409) window.pankow.notify({ text: error.body.message || `Volume is still in use.`, type: 'danger', persistent: true }); - if (error) return window.cloudron.onError(error); + return console.error(error); } await refresh();