diff options
author | GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> | 2023-03-12 15:55:36 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-12 14:55:36 +0000 |
commit | 82739f56b198054acbde53527e9eb39fa14f2602 (patch) | |
tree | 8a1601eada3846ae554ec56fb6feede2be792338 /src-vue/src | |
parent | ac8c02a3860c2b079dc3f3806c3638563ac16d10 (diff) | |
download | FlightCore-82739f56b198054acbde53527e9eb39fa14f2602.tar.gz FlightCore-82739f56b198054acbde53527e9eb39fa14f2602.zip |
feat: Allow opening a window with various repair features (#129)
* feat: Initial code for spawning repair window
* refactor: Move disable all but core mods button
to repair window
* refactor: Rename function
* refactor: Move button location
Still in DeveloperView for now, will be moved to settings page later
* feat: Add info banner
* feat: Set repair window title
* fix: Stop thread crash on duplicate window open
Instead of calling an unwrap, handle failure to create window which is
usually caused by spawning a second repair window although one already
exists.
* fix: Re-add accidentally removed lines from merge
* fix: Set top padding to zero px
As there's no menu bar in this view
* feat: Close all windows when close bttn is clicked
Diffstat (limited to 'src-vue/src')
-rw-r--r-- | src-vue/src/App.vue | 6 | ||||
-rw-r--r-- | src-vue/src/main.ts | 4 | ||||
-rw-r--r-- | src-vue/src/utils/Tabs.ts | 3 | ||||
-rw-r--r-- | src-vue/src/views/DeveloperView.vue | 39 | ||||
-rw-r--r-- | src-vue/src/views/RepairView.vue | 60 |
5 files changed, 83 insertions, 29 deletions
diff --git a/src-vue/src/App.vue b/src-vue/src/App.vue index c28919e1..f740bd2f 100644 --- a/src-vue/src/App.vue +++ b/src-vue/src/App.vue @@ -6,7 +6,7 @@ import ModsView from './views/ModsView.vue'; import SettingsView from './views/SettingsView.vue'; import { appWindow } from '@tauri-apps/api/window'; import { store } from './plugins/store'; -import { window as tauriWindow } from "@tauri-apps/api"; +import { invoke, window as tauriWindow } from "@tauri-apps/api"; export default { components: { @@ -30,7 +30,7 @@ export default { appWindow.minimize() }, close() { - appWindow.close() + invoke("close_application"); } }, computed: { @@ -47,7 +47,7 @@ export default { <div class="app-inner"> <div id="fc_bg__container" :style="bgStyle"/> - <nav id="fc_menu-bar"> + <nav id="fc_menu-bar" v-if="$route.path !== '/repair'"><!-- Hide menu bar in repair view --> <!-- Navigation items --> <el-menu :default-active="$route.path" diff --git a/src-vue/src/main.ts b/src-vue/src/main.ts index 95bea7af..57d41865 100644 --- a/src-vue/src/main.ts +++ b/src-vue/src/main.ts @@ -8,6 +8,7 @@ import ChangelogView from "./views/ChangelogView.vue"; import ModsView from "./views/ModsView.vue"; import SettingsView from "./views/SettingsView.vue"; import DeveloperView from "./views/DeveloperView.vue"; +import RepairView from "./views/RepairView.vue"; import {createRouter, createWebHashHistory} from "vue-router"; @@ -35,7 +36,8 @@ const routes = [ { path: '/changelog', name: 'Changelog', component: async () => ChangelogView}, { path: '/mods', name: 'Mods', component: async () => ModsView}, { path: '/settings', name: 'Settings', component: async () => SettingsView}, - { path: '/dev', name: 'Dev', component: async () => DeveloperView} + { path: '/dev', name: 'Dev', component: async () => DeveloperView}, + { path: '/repair', name: 'Repair', component: async () => RepairView}, ]; export const router = createRouter({ history: createWebHashHistory(), diff --git a/src-vue/src/utils/Tabs.ts b/src-vue/src/utils/Tabs.ts index 027f9f0a..5d31379c 100644 --- a/src-vue/src/utils/Tabs.ts +++ b/src-vue/src/utils/Tabs.ts @@ -3,5 +3,6 @@ export enum Tabs { CHANGELOG = '/changelog', SETTINGS = '/settings', DEV = '/dev', - MODS = '/mods' + MODS = '/mods', + REPAIR = '/repair', } diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue index 11cb4f5d..665e2e55 100644 --- a/src-vue/src/views/DeveloperView.vue +++ b/src-vue/src/views/DeveloperView.vue @@ -4,6 +4,7 @@ <el-alert title="Warning" type="warning" :closable="false" show-icon> This page is designed for developers. Some of the buttons here can break your Northstar install if you do not know what you're doing! </el-alert> + <h3>Basic:</h3> <el-button type="primary" @click="disableDevMode"> @@ -36,8 +37,8 @@ <h3>Repair:</h3> - <el-button type="primary" @click="disableAllModsButCore"> - Disable all but core mods + <el-button type="primary" @click="createNewWindow"> + Open Repair window </el-button> <el-button type="primary" @click="forceInstallNorthstar"> @@ -118,28 +119,6 @@ export default defineComponent({ async launchGameWithoutChecks() { this.$store.commit('launchGame', true); }, - async disableAllModsButCore() { - let game_install = { - game_path: this.$store.state.game_path, - install_type: this.$store.state.install_type - } as GameInstall; - await invoke("disable_all_but_core", { gameInstall: game_install }).then((message) => { - ElNotification({ - title: 'Success', - message: "Disabled all mods but core", - type: 'success', - position: 'bottom-right' - }); - }) - .catch((error) => { - ElNotification({ - title: 'Error', - message: error, - type: 'error', - position: 'bottom-right' - }); - }); - }, async getInstalledMods() { let game_install = { game_path: this.$store.state.game_path, @@ -261,6 +240,18 @@ export default defineComponent({ notification.close(); }); }, + async createNewWindow() { + await invoke("open_repair_window") + .then((message) => { }) + .catch((error) => { + ElNotification({ + title: 'Error', + message: error, + type: 'error', + position: 'bottom-right' + }); + }); + }, } }); </script> diff --git a/src-vue/src/views/RepairView.vue b/src-vue/src/views/RepairView.vue new file mode 100644 index 00000000..cf19e3e6 --- /dev/null +++ b/src-vue/src/views/RepairView.vue @@ -0,0 +1,60 @@ +<template> + <div class="fc-container"> + <el-scrollbar> + <el-alert title="Info" type="info" :closable="false" show-icon> + This window contains various functionality to repair common issues with Northstar and FlightCore. + </el-alert> + + <h1>Repair</h1> + + <h2>Northstar</h2> + + <el-button type="primary" @click="disableAllModsButCore"> + Disable all but core mods + </el-button> + + </el-scrollbar> + </div> +</template> + +<script lang="ts"> +import { defineComponent } from "vue"; +import { ElNotification } from "element-plus"; +import { GameInstall } from "../utils/GameInstall"; +import { invoke } from "@tauri-apps/api"; + +export default defineComponent({ + name: "RepairView", + methods: { + async disableAllModsButCore() { + let game_install = { + game_path: this.$store.state.game_path, + install_type: this.$store.state.install_type + } as GameInstall; + await invoke("disable_all_but_core", { gameInstall: game_install }) + .then((message) => { + ElNotification({ + title: 'Success', + message: "Disabled all mods but core", + type: 'success', + position: 'bottom-right' + }); + }) + .catch((error) => { + ElNotification({ + title: 'Error', + message: error, + type: 'error', + position: 'bottom-right' + }); + }); + }, + } +}); +</script> + +<style scoped> +.fc-container { + padding-top: 0px; +} +</style> |