From 53aaada82fdfc4731517380f1af3944286e89c2c Mon Sep 17 00:00:00 2001 From: Willian Galvani Date: Mon, 28 Aug 2023 11:29:27 -0300 Subject: [PATCH] core: frontend: add autopilot restart button to power menu --- .../frontend/src/components/app/PowerMenu.vue | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/core/frontend/src/components/app/PowerMenu.vue b/core/frontend/src/components/app/PowerMenu.vue index 24ddfcb53b..6d85108f6e 100644 --- a/core/frontend/src/components/app/PowerMenu.vue +++ b/core/frontend/src/components/app/PowerMenu.vue @@ -40,6 +40,21 @@ Power off + + + mdi-restart + + Restart Autopilot + import Vue from 'vue' +import Notifier from '@/libs/notifier' import settings from '@/libs/settings' +import autopilot_data from '@/store/autopilot' +import autopilot from '@/store/autopilot_manager' import commander from '@/store/commander' import { ShutdownType } from '@/types/commander' +import { autopilot_service } from '@/types/frontend_services' import back_axios from '@/utils/api' import SpinningLogo from '../common/SpinningLogo.vue' +const notifier = new Notifier(autopilot_service) + /// Used for internal status control enum Status { None, @@ -115,6 +136,9 @@ export default Vue.extend({ } }, computed: { + restarting_autopilot(): boolean { + return autopilot.restarting + }, non_default_status(): boolean { return this.service_status !== Status.None }, @@ -135,6 +159,21 @@ export default Vue.extend({ }, }, methods: { + async restartAutopilot(): Promise { + autopilot_data.reset() + autopilot.setRestarting(true) + await back_axios({ + method: 'post', + url: `${autopilot.API_URL}/restart`, + timeout: 10000, + }) + .catch((error) => { + notifier.pushBackError('AUTOPILOT_RESTART_FAIL', error) + }) + .finally(() => { + autopilot.setRestarting(false) + }) + }, async reboot(): Promise { this.service_status = Status.Rebooting commander.shutdown(ShutdownType.Reboot)