1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
<template>
<div class="fc-container">
<el-scrollbar>
<el-alert :title="$t('generic.informationShort')" type="info" :closable="false" show-icon>
{{ $t('settings.repair.window.warning') }}
</el-alert>
<h1>{{ $t('settings.repair.title') }}</h1>
<h2>Northstar</h2>
<el-button type="primary" @click="disableAllModsButCore">
{{ $t('settings.repair.window.disable_all_but_core') }}
</el-button>
<el-button type="primary" @click="forceInstallNorthstar">
{{ $t('settings.repair.window.force_reinstall_ns') }}
</el-button>
<h2>FlightCore</h2>
<el-button type="primary" @click="cleanUpDownloadFolder">
{{ $t('settings.repair.window.force_delete_temp_dl') }}
</el-button>
<el-button type="primary" @click="clearFlightCorePersistentStore">
{{ $t('settings.repair.window.delete_persistent_store') }}
</el-button>
</el-scrollbar>
</div>
</template>
<script lang="ts">
import { defineComponent } from "vue";
import { GameInstall } from "../utils/GameInstall";
import { invoke } from "@tauri-apps/api";
import { ReleaseCanal } from "../utils/ReleaseCanal";
import { Store } from 'tauri-plugin-store-api';
import { showErrorNotification, showNotification } from "../utils/ui";
import { appWindow } from "@tauri-apps/api/window";
const persistentStore = new Store('flight-core-settings.json');
export default defineComponent({
name: "RepairView",
computed: {
lang(): string {
return this.$root!.$i18n.locale;
}
},
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) => {
showNotification('Success', "Disabled all mods but core");
})
.catch((error) => {
showErrorNotification(error);
});
},
async forceInstallNorthstar() {
let game_install = {
game_path: this.$store.state.game_path,
install_type: this.$store.state.install_type
} as GameInstall;
// Send notification telling the user to wait for the process to finish
const notification = showNotification(
'Force reinstalling Northstar',
'Please wait',
'info',
0
);
let install_northstar_result = invoke("install_northstar_caller", { gamePath: game_install.game_path, northstarPackageName: ReleaseCanal.RELEASE });
await install_northstar_result
.then((message) => {
// Send notification
showNotification('Done', `Successfully reinstalled Northstar`);
this.$store.commit('checkNorthstarUpdates');
})
.catch((error) => {
showErrorNotification(error);
console.error(error);
})
.finally(() => {
// Clear old notification
notification.close();
});
},
async cleanUpDownloadFolder() {
let game_install = {
game_path: this.$store.state.game_path,
install_type: this.$store.state.install_type
} as GameInstall;
await invoke("clean_up_download_folder_caller", { gameInstall: game_install, force: true }).then((message) => {
// Show user notification if task completed.
showNotification('Done', 'Done');
})
.catch((error) => {
showErrorNotification(error);
});
},
async clearFlightCorePersistentStore() {
// Clear store...
await persistentStore.clear();
// ...and save
await persistentStore.save();
},
},
watch: {
// Lang value is propagated to repair view after it's mounted, so we need to watch
// its value, and update window title accordingly.
lang(newv: string) {
appWindow.setTitle( this.$t('settings.repair.window.title') );
}
}
});
</script>
<style scoped>
.fc-container {
padding-top: 0px;
}
</style>
|