diff --git a/dashboard/src/components/LogsViewer.vue b/dashboard/src/components/LogsViewer.vue
index d960140ff..9a3baa166 100644
--- a/dashboard/src/components/LogsViewer.vue
+++ b/dashboard/src/components/LogsViewer.vue
@@ -49,7 +49,8 @@ export default {
this.busyRestart = true;
- await this.appsModel.restart();
+ const [error] = await this.appsModel.restart(this.id);
+ if (error) return console.error(error);
this.busyRestart = false;
}
@@ -98,15 +99,13 @@ export default {
if (this.type === 'app') {
this.appsModel = AppsModel.create();
- try {
- const app = await this.appsModel.get();
- this.name = `${app.label || app.fqdn} (${app.manifest.title})`;
- this.showFilemanager = !!app.manifest.addons.localstorage;
- this.showTerminal = app.manifest.id !== 'io.cloudron.builtin.appproxy';
- this.showRestart = app.manifest.id !== 'io.cloudron.builtin.appproxy';
- } catch (e) {
- console.error(`Failed to get app info for ${this.id}:`, e);
- }
+ const [error, app] = await this.appsModel.get(this.id);
+ if (error) return console.error(error);
+
+ this.name = `${app.label || app.fqdn} (${app.manifest.title})`;
+ this.showFilemanager = !!app.manifest.addons.localstorage;
+ this.showTerminal = app.manifest.id !== 'io.cloudron.builtin.appproxy';
+ this.showRestart = app.manifest.id !== 'io.cloudron.builtin.appproxy';
}
window.document.title = `Logs Viewer - ${this.name}`;
diff --git a/dashboard/src/components/Terminal.vue b/dashboard/src/components/Terminal.vue
index a97b1364a..712bba9e3 100644
--- a/dashboard/src/components/Terminal.vue
+++ b/dashboard/src/components/Terminal.vue
@@ -149,7 +149,10 @@ export default {
if (!confirmed) return;
this.busyRestart = true;
- await this.appsModel.restart(this.id);
+
+ const [error] = await this.appsModel.restart(this.id);
+ if (error) return console.error(error);
+
this.busyRestart = false;
},
async connect(retry = false) {
diff --git a/dashboard/src/components/app/Repair.vue b/dashboard/src/components/app/Repair.vue
new file mode 100644
index 000000000..a18d90f6d
--- /dev/null
+++ b/dashboard/src/components/app/Repair.vue
@@ -0,0 +1,82 @@
+
+
+
+ {{ $t('app.repair.taskError.description') }} An error occurred during the {{ taskName(app.error.installationState) }} operation: {{ app.error.reason + ': ' + app.error.message }}
+
+
+