diff options
author | GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> | 2022-11-23 09:36:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-23 09:36:27 +0100 |
commit | 62a5f5c821961c6f7fcc5354c207c6e09895bcb4 (patch) | |
tree | c1b29b16dfb77c898cfb3c964fe64bbfc2176c1b | |
parent | c49af0ce6d95d0529ddb06908c3f65867bae89ca (diff) | |
download | FlightCore-62a5f5c821961c6f7fcc5354c207c6e09895bcb4.tar.gz FlightCore-62a5f5c821961c6f7fcc5354c207c6e09895bcb4.zip |
feat: Store game path in persistent store (#61)
* feat: Store gameinstall in persistent store
This includes both path and type (Steam/Origin/EA/UNKNOWN)
* feat: Add method to clear persistent store
* fix: Only check for NS version if installed
Otherwise we incorrectly set the button to `Install`.
* fix: Remove leftover `console.log()`
-rw-r--r-- | src-vue/src/plugins/store.ts | 70 | ||||
-rw-r--r-- | src-vue/src/views/DeveloperView.vue | 9 |
2 files changed, 63 insertions, 16 deletions
diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts index 8ebcaf80..e010ca12 100644 --- a/src-vue/src/plugins/store.ts +++ b/src-vue/src/plugins/store.ts @@ -105,6 +105,14 @@ export const store = createStore<FlightCoreStore>({ } state.install_type = InstallType.UNKNOWN; + let game_install = { + game_path: selected, + install_type: InstallType.UNKNOWN + } as GameInstall; + + // Save change in persistent store + await persistentStore.set('game-install', { value: game_install }); + // Check for Northstar install store.commit('checkNorthstarUpdates'); } @@ -226,24 +234,54 @@ async function _initializeApp(state: any) { // Get FlightCore version number state.flightcore_version = await invoke("get_flightcore_version_number"); - const result = await invoke("find_game_install_location_caller") - .catch((err) => { - // Gamepath not found or other error - console.error(err); - notification_handle = ElNotification({ - title: 'Titanfall2 not found!', - message: "Please manually select install location", - type: 'error', - position: 'bottom-right', - duration: 0 // Duration `0` means the notification will not auto-vanish + var result = undefined; + var persistent_game_install = (await persistentStore.get('game-install')) as any; + + if ( // Safety checks for value from store + persistent_game_install + && persistent_game_install.value !== undefined + && persistent_game_install.value.game_path !== undefined + && persistent_game_install.value.install_type !== undefined + ) { // For some reason, the plugin-store doesn't throw an eror but simply returns `null` when key not found + let game_install = persistent_game_install.value as GameInstall; + // check if valid path + let is_valid_titanfall2_install = await invoke("verify_install_location", { gamePath: game_install.game_path }) as boolean; + if (is_valid_titanfall2_install) { + // Use value from peristent store + result = game_install; + } + + } + + if (result === undefined) { // No (valid) value found in persistent store + result = await invoke("find_game_install_location_caller") + .catch((err) => { + // Gamepath not found or other error + console.error(err); + notification_handle = ElNotification({ + title: 'Titanfall2 not found!', + message: "Please manually select install location", + type: 'error', + position: 'bottom-right', + duration: 0 // Duration `0` means the notification will not auto-vanish + }); }); - }); - const typedResult: GameInstall = result as GameInstall; - state.game_path = typedResult.game_path; - state.install_type = typedResult.install_type; + } + + if (result !== undefined) { // Found some form of value for gameinstall + + const typedResult: GameInstall = result as GameInstall; - // Check installed Northstar version if found - await _get_northstar_version_number(state); + // Save change in persistent store + await persistentStore.set('game-install', { value: typedResult }); + + // Update UI store + state.game_path = typedResult.game_path; + state.install_type = typedResult.install_type; + + // Check installed Northstar version if found + await _get_northstar_version_number(state); + } } async function _checkForFlightCoreUpdates(state: FlightCoreStore) { diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue index 2fa5d89e..780dc2ea 100644 --- a/src-vue/src/views/DeveloperView.vue +++ b/src-vue/src/views/DeveloperView.vue @@ -45,6 +45,9 @@ Force delete temp download folder </el-button> + <el-button type="primary" @click="clearFlightCorePersistentStore"> + Delete FlightCore persistent store + </el-button> </div> </template> @@ -214,6 +217,12 @@ export default defineComponent({ position: 'bottom-right' }); }); + }, + async clearFlightCorePersistentStore() { + // Clear store... + await persistentStore.clear(); + // ...and save + await persistentStore.save(); } } }); |