diff options
author | GeckoEidechse <40122905+GeckoEidechse@users.noreply.github.com> | 2024-02-13 00:29:02 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-13 00:29:02 +0100 |
commit | 71e299192e462eef49bd950c79616232ebe1bcc3 (patch) | |
tree | 6df1a9763ab56ad2f12d21686f7ce9555f33540a | |
parent | 4c0826fd51bff9f3f11e7dc333044c7939b6ee9f (diff) | |
download | FlightCore-71e299192e462eef49bd950c79616232ebe1bcc3.tar.gz FlightCore-71e299192e462eef49bd950c79616232ebe1bcc3.zip |
refactor: Pass object to backend instead of individual args (#798)
Instead of passing individual args to `launch_northstar` in the backend, pass a single object.
The idea here being that said object can later easily be extended with more fields such as launch args for Northstar
-rw-r--r-- | src-tauri/bindings/NorthstarLaunchOptions.ts | 3 | ||||
-rw-r--r-- | src-tauri/src/northstar/mod.rs | 19 | ||||
-rw-r--r-- | src-vue/src/plugins/store.ts | 18 |
3 files changed, 29 insertions, 11 deletions
diff --git a/src-tauri/bindings/NorthstarLaunchOptions.ts b/src-tauri/bindings/NorthstarLaunchOptions.ts new file mode 100644 index 00000000..e3af2d19 --- /dev/null +++ b/src-tauri/bindings/NorthstarLaunchOptions.ts @@ -0,0 +1,3 @@ +// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually. + +export interface NorthstarLaunchOptions { launch_via_steam: boolean, bypass_checks: boolean, }
\ No newline at end of file diff --git a/src-tauri/src/northstar/mod.rs b/src-tauri/src/northstar/mod.rs index 9837ece4..0b37c3f6 100644 --- a/src-tauri/src/northstar/mod.rs +++ b/src-tauri/src/northstar/mod.rs @@ -7,6 +7,15 @@ use crate::util::check_ea_app_or_origin_running; use crate::{constants::CORE_MODS, platform_specific::get_host_os, GameInstall, InstallType}; use crate::{NorthstarThunderstoreRelease, NorthstarThunderstoreReleaseWrapper}; use anyhow::anyhow; +use serde::{Deserialize, Serialize}; +use ts_rs::TS; + +#[derive(Serialize, Deserialize, Debug, Clone, TS)] +#[ts(export)] +pub struct NorthstarLaunchOptions { + launch_via_steam: bool, + bypass_checks: bool, +} /// Gets list of available Northstar versions from Thunderstore #[tauri::command] @@ -150,13 +159,11 @@ pub fn get_northstar_version_number(game_install: GameInstall) -> Result<String, #[tauri::command] pub fn launch_northstar( game_install: GameInstall, - launch_via_steam: Option<bool>, - bypass_checks: Option<bool>, + launch_options: NorthstarLaunchOptions, ) -> Result<String, String> { dbg!(game_install.clone()); - let launch_via_steam = launch_via_steam.unwrap_or(false); - if launch_via_steam { + if launch_options.launch_via_steam { return launch_northstar_steam(game_install); } @@ -175,10 +182,8 @@ pub fn launch_northstar( return launch_northstar_steam(game_install); } - let bypass_checks = bypass_checks.unwrap_or(false); - // Only check guards if bypassing checks is not enabled - if !bypass_checks { + if !launch_options.bypass_checks { // Some safety checks before, should have more in the future if get_northstar_version_number(game_install.clone()).is_err() { return Err(anyhow!("Not all checks were met").to_string()); diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts index a1a67e2b..6c382e0c 100644 --- a/src-vue/src/plugins/store.ts +++ b/src-vue/src/plugins/store.ts @@ -15,6 +15,7 @@ import { router } from "../main"; import { ReleaseInfo } from "../../../src-tauri/bindings/ReleaseInfo"; import { ThunderstoreMod } from "../../../src-tauri/bindings/ThunderstoreMod"; import { NorthstarMod } from "../../../src-tauri/bindings/NorthstarMod"; +import { NorthstarLaunchOptions } from "../../../src-tauri/bindings/NorthstarLaunchOptions" import { searchModule } from './modules/search'; import { i18n } from '../main'; import { pullRequestModule } from './modules/pull_requests'; @@ -173,8 +174,13 @@ export const store = createStore<FlightCoreStore>({ } }, async launchGame(state: any, no_checks = false) { - if (no_checks) { - await invoke("launch_northstar", { gameInstall: state.game_install, bypassChecks: no_checks }) + const launch_options: NorthstarLaunchOptions = { + launch_via_steam: false, + bypass_checks: no_checks, + }; + + if (launch_options.bypass_checks) { + await invoke("launch_northstar", { gameInstall: state.game_install, launchOptions: launch_options }) .then((message) => { console.log("Launched with bypassed checks"); console.log(message); @@ -224,7 +230,7 @@ export const store = createStore<FlightCoreStore>({ // Game is ready to play. case NorthstarState.READY_TO_PLAY: - await invoke("launch_northstar", { gameInstall: state.game_install }) + await invoke("launch_northstar", { gameInstall: state.game_install, launchOptions: launch_options }) .then((message) => { console.log(message); // NorthstarState.RUNNING @@ -241,7 +247,11 @@ export const store = createStore<FlightCoreStore>({ } }, async launchGameSteam(state: any, no_checks = false) { - await invoke("launch_northstar", { gameInstall: state.game_install, launchViaSteam: true, bypassChecks: no_checks }) + const launch_options: NorthstarLaunchOptions = { + launch_via_steam: true, + bypass_checks: false, + }; + await invoke("launch_northstar", { gameInstall: state.game_install, launchOptions: launch_options }) .then((message) => { showNotification('Success'); }) |