Skip to content

Commit 891d6dc

Browse files
Regenerate presets when restoring game settings to default
1 parent ff2d78b commit 891d6dc

4 files changed

Lines changed: 32 additions & 9 deletions

File tree

app/settings/GameSettingsTab.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ export default function GameSettingsTab({
3636

3737
const ctx = useContext(SettingsCtx);
3838

39+
useEffect(() => {
40+
setLaunchProfiles(currentProfiles);
41+
}, [currentProfiles]);
42+
3943
useEffect(() => {
4044
getDebugMode().then(setDebug);
4145
}, [active]);

app/settings/page.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,8 @@ export default function SettingsPage() {
118118
const doInit = async () => {
119119
try {
120120
await invoke("reload_state");
121-
await syncConfig();
122121
await syncLaunchProfiles();
122+
await syncConfig();
123123
setInitialFetchDone(true);
124124
} catch (e) {
125125
alertError("Error during init: " + e);
@@ -171,6 +171,7 @@ export default function SettingsPage() {
171171
} else {
172172
await resetGameSettings();
173173
}
174+
await syncLaunchProfiles();
174175
const updatedConfig = await syncConfig();
175176
return updatedConfig.game;
176177
};

src-tauri/src/lib.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use log::*;
3131
use tauri::Manager;
3232
use uuid::Uuid;
3333

34-
use crate::state::{LaunchProfile, LaunchProfilesView};
34+
use crate::state::{LaunchProfile, LaunchProfiles, LaunchProfilesView};
3535

3636
type Error = Box<dyn std::error::Error>;
3737
type Result<T> = std::result::Result<T, Error>;
@@ -1349,9 +1349,15 @@ async fn reset_launcher_config(app_handle: tauri::AppHandle) -> CommandResult<()
13491349
#[tauri::command]
13501350
async fn reset_game_config(app_handle: tauri::AppHandle) -> CommandResult<()> {
13511351
debug!("reset_game_config");
1352-
let default_game_config = config::GameSettings::default();
1352+
let mut default_game_config = config::GameSettings::default();
13531353
let state = app_handle.state::<Mutex<AppState>>();
13541354
let mut state = state.lock().await;
1355+
1356+
state.launch_profiles.reload_presets();
1357+
if let Some(new_default_profile) = state.launch_profiles.get_default() {
1358+
default_game_config.launch_profile = new_default_profile.get_id();
1359+
}
1360+
13551361
state.config.game = default_game_config;
13561362
state.write_config = true;
13571363
state.save();

src-tauri/src/state.rs

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,15 @@ impl LaunchProfiles {
692692
!self.profiles.is_empty()
693693
}
694694

695+
pub fn reload_presets(&mut self) {
696+
// remove all existing presets
697+
self.profiles.retain(|p| !p.is_preset());
698+
// add fresh presets in
699+
let mut presets = Self::load_presets();
700+
presets.profiles.extend(self.profiles.clone());
701+
*self = presets;
702+
}
703+
695704
#[allow(deprecated)]
696705
fn load(config: &mut Config) -> Self {
697706
const CUSTOM_PROFILE_NAME: &str = "Custom Profile";
@@ -704,15 +713,12 @@ impl LaunchProfiles {
704713
profiles
705714
}
706715
Err(_) => {
707-
info!("Loading preset launch profiles");
708-
let mut profiles = util::get_preset_launch_profiles();
716+
let mut profiles = Self::load_presets();
709717
if let Some(current_cmd) = config.game.launch_command.as_ref() {
710-
let profile = LaunchProfile::new(CUSTOM_PROFILE_NAME, current_cmd, false);
711-
let profile_id = profile.get_id();
712-
profiles.push(profile);
718+
let profile_id = profiles.add_entry(CUSTOM_PROFILE_NAME, current_cmd);
713719
config.game.launch_profile = profile_id;
714720
}
715-
Self { profiles }
721+
profiles
716722
}
717723
};
718724

@@ -740,6 +746,12 @@ impl LaunchProfiles {
740746
let commands: Self = serde_json::from_str(&commands_str)?;
741747
Ok(commands)
742748
}
749+
750+
fn load_presets() -> Self {
751+
info!("Loading preset launch profiles");
752+
let profiles = util::get_preset_launch_profiles();
753+
Self { profiles }
754+
}
743755
}
744756

745757
/// Frontend view of launch profiles, with the computed default profile ID

0 commit comments

Comments
 (0)