diff --git a/dashboard/src/components/app/Uninstall.vue b/dashboard/src/components/app/Uninstall.vue
index 558ce325f..3fd093a11 100644
--- a/dashboard/src/components/app/Uninstall.vue
+++ b/dashboard/src/components/app/Uninstall.vue
@@ -7,7 +7,7 @@ const t = i18n.t;
import { ref, onMounted, useTemplateRef } from 'vue';
import { Button, InputDialog, Spinner } from '@cloudron/pankow';
import { prettyLongDate } from '@cloudron/pankow/utils';
-import { APP_TYPES, RSTATES } from '../../constants.js';
+import { APP_TYPES, RSTATES, ISTATES } from '../../constants.js';
import AppsModel from '../../models/AppsModel.js';
const appsModel = AppsModel.create();
@@ -116,12 +116,18 @@ onMounted(async () => {
-
-
{{ $t('app.uninstall.startStop.description') }}
+
+
+
-
-
-
+
+
+
+
+
+
+
+
diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue
index 5529e8fdf..6e84a5f0e 100644
--- a/dashboard/src/views/AppConfigureView.vue
+++ b/dashboard/src/views/AppConfigureView.vue
@@ -228,6 +228,17 @@ async function onRestartApp() {
busyRestart.value = false;
}
+const busyStart = ref(false);
+
+async function onStartApp() {
+ busyStart.value = true;
+
+ const [error] = await appsModel.start(id.value);
+ if (error) return console.error(error);
+
+ setTimeout(() => busyStart.value = false, 3000);
+}
+
onMounted(async () => {
const tmp = window.location.hash.slice('#/app/'.length);
if (!tmp) return;
@@ -306,7 +317,8 @@ onBeforeUnmount(() => {
-
+
+