aboutsummaryrefslogtreecommitdiff
path: root/src-vue
diff options
context:
space:
mode:
Diffstat (limited to 'src-vue')
-rw-r--r--src-vue/src/components/PlayButton.vue2
-rw-r--r--src-vue/src/plugins/store.ts54
-rw-r--r--src-vue/src/views/DeveloperView.vue32
-rw-r--r--src-vue/src/views/SettingsView.vue36
4 files changed, 71 insertions, 53 deletions
diff --git a/src-vue/src/components/PlayButton.vue b/src-vue/src/components/PlayButton.vue
index 8e0b4149..ff57e706 100644
--- a/src-vue/src/components/PlayButton.vue
+++ b/src-vue/src/components/PlayButton.vue
@@ -13,7 +13,7 @@ export default defineComponent({
switch(this.$store.state.northstar_state) {
case NorthstarState.GAME_NOT_FOUND:
- return "Titanfall2 not found";
+ return "Select Titanfall2 game folder";
case NorthstarState.INSTALL:
return "Install";
case NorthstarState.INSTALLING:
diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts
index 4fa7328b..4fdf50a3 100644
--- a/src-vue/src/plugins/store.ts
+++ b/src-vue/src/plugins/store.ts
@@ -5,8 +5,10 @@ import { InstallType } from "../utils/InstallType";
import { invoke } from "@tauri-apps/api";
import { GameInstall } from "../utils/GameInstall";
import { ReleaseCanal } from "../utils/ReleaseCanal";
-import { ElNotification } from 'element-plus';
+import { ElNotification, NotificationHandle } from 'element-plus';
import { NorthstarState } from '../utils/NorthstarState';
+import { appDir } from '@tauri-apps/api/path';
+import { open } from '@tauri-apps/api/dialog';
import { Store } from 'tauri-plugin-store-api';
import {router} from "../main";
@@ -28,6 +30,8 @@ export interface FlightCoreStore {
origin_is_running: boolean
}
+let notification_handle: NotificationHandle;
+
export const store = createStore<FlightCoreStore>({
state (): FlightCoreStore {
return {
@@ -65,6 +69,48 @@ export const store = createStore<FlightCoreStore>({
updateCurrentTab(state: any, newTab: Tabs) {
router.push({path: newTab});
},
+ async updateGamePath(state: FlightCoreStore) {
+ // Open a selection dialog for directories
+ const selected = await open({
+ directory: true,
+ multiple: false,
+ defaultPath: await appDir(),
+ });
+ if (Array.isArray(selected)) {
+ // user selected multiple directories
+ alert("Please only select a single directory");
+ } else if (selected === null) {
+ // user cancelled the selection
+ } else {
+ // user selected a single directory
+
+ // Verify if valid Titanfall2 install location
+ let is_valid_titanfall2_install = await invoke("verify_install_location", { gamePath: selected }) as boolean;
+ if (is_valid_titanfall2_install) {
+ state.game_path = selected;
+ ElNotification({
+ title: 'New game folder',
+ message: "Game folder was successfully updated.",
+ type: 'success',
+ position: 'bottom-right'
+ });
+ notification_handle.close();
+ state.install_type = InstallType.UNKNOWN;
+
+ // Check for Northstar install
+ store.commit('checkNorthstarUpdates');
+ }
+ else {
+ // Not valid Titanfall2 install
+ ElNotification({
+ title: 'Wrong folder',
+ message: "Selected folder is not a valid Titanfall2 install.",
+ type: 'error',
+ position: 'bottom-right'
+ });
+ }
+ }
+ },
async launchGame(state: any) {
// TODO update installation if release track was switched
switch (state.northstar_state) {
@@ -130,6 +176,10 @@ export const store = createStore<FlightCoreStore>({
alert(error);
});
break;
+
+ case NorthstarState.GAME_NOT_FOUND:
+ store.commit('updateGamePath');
+ break;
}
}
}
@@ -162,7 +212,7 @@ async function _initializeApp(state: any) {
.catch((err) => {
// Gamepath not found or other error
console.error(err);
- ElNotification({
+ notification_handle = ElNotification({
title: 'Titanfall2 not found!',
message: "Please manually select install location",
type: 'error',
diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue
index 71e09e30..dcc0c477 100644
--- a/src-vue/src/views/DeveloperView.vue
+++ b/src-vue/src/views/DeveloperView.vue
@@ -50,22 +50,24 @@ export default defineComponent({
});
},
async checkLinuxCompatibility() {
- let LinuxCompatible = await invoke("linux_checks");
- if (!LinuxCompatible) {
- ElNotification({
- title: 'Not linux compatible',
- message: 'GLIBC is not version 2.33 or greater',
- type: 'error',
- position: 'bottom-right'
- });
- } else {
- ElNotification({
- title: 'Linux compatible',
- message: 'No error reported',
- type: 'success',
- position: 'bottom-right'
+ await invoke("linux_checks")
+ .then(() => {
+ ElNotification({
+ title: 'Linux compatible',
+ message: 'All checks passed',
+ type: 'success',
+ position: 'bottom-right'
+ });
+ })
+ .catch((error) => {
+ ElNotification({
+ title: 'Not linux compatible',
+ message: error,
+ type: 'error',
+ position: 'bottom-right'
+ });
+ console.error(error);
});
- }
},
async toggleReleaseCandidate() {
// Flip between RELEASE and RELEASE_CANDIDATE
diff --git a/src-vue/src/views/SettingsView.vue b/src-vue/src/views/SettingsView.vue
index ec63bd6e..0b0e52e4 100644
--- a/src-vue/src/views/SettingsView.vue
+++ b/src-vue/src/views/SettingsView.vue
@@ -21,11 +21,7 @@
</template>
<script lang="ts">
-import { open } from '@tauri-apps/api/dialog';
-import { appDir } from '@tauri-apps/api/path';
-import { invoke } from "@tauri-apps/api";
import { defineComponent } from "vue";
-import { ElNotification } from 'element-plus';
export default defineComponent({
name: "SettingsView",
@@ -36,37 +32,7 @@ export default defineComponent({
},
methods: {
async updateGamePath() {
- // Open a selection dialog for directories
- const selected = await open({
- directory: true,
- multiple: false,
- defaultPath: await appDir(),
- });
- if (Array.isArray(selected)) {
- // user selected multiple directories
- alert("Please only select a single directory");
- } else if (selected === null) {
- // user cancelled the selection
- } else {
- // user selected a single directory
-
- // Verify if valid Titanfall2 install location
- let is_valid_titanfall2_install = await invoke("verify_install_location", { gamePath: selected }) as boolean;
- if (is_valid_titanfall2_install) {
- this.$store.state.game_path = selected;
- // Check for Northstar install
- this.$store.commit('checkNorthstarUpdates');
- }
- else {
- // Not valid Titanfall2 install
- ElNotification({
- title: 'Wrong folder',
- message: "Selected folder is not a valid Titanfall2 install.",
- type: 'error',
- position: 'bottom-right'
- });
- }
- }
+ this.$store.commit('updateGamePath');
}
},
mounted() {