Skip to content

Commit 9c1770e

Browse files
committed
Project list sorting
1 parent d34c7ea commit 9c1770e

File tree

9 files changed

+458
-162
lines changed

9 files changed

+458
-162
lines changed

src-tauri/src/main.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ fn main() {
6464
project::cmd_open_project_in_editor,
6565
project::cmd_change_project_editor_version,
6666
project::cmd_fetch_project_thumbnail,
67+
project::cmd_pin_project,
68+
project::cmd_unpin_project,
6769
// editors
6870
editor::cmd_get_editors,
6971
editor::cmd_open_unity_hub,

src-tauri/src/prefs.rs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ pub enum PrefsKey {
88
HubEditorsPath,
99
HubAppDataPath,
1010
NewProjectPath,
11+
ProjectSortType
1112
}
1213

1314
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
@@ -21,6 +22,7 @@ pub struct Prefs {
2122
pub hub_editors_path: Option<PathBuf>,
2223
// typically C:\Users\nomno\AppData\Roaming\UnityHub\
2324
pub hub_appdata_path: Option<PathBuf>,
25+
pub project_sort_type: Option<crate::project::SortType>
2426
}
2527

2628
impl Default for Prefs {
@@ -47,6 +49,8 @@ impl Default for Prefs {
4749
hub_editors_path: None,
4850

4951
hub_appdata_path: Some(dirs_next::config_dir().unwrap().join("UnityHub")),
52+
53+
project_sort_type: None
5054
}
5155
}
5256
}
@@ -85,8 +89,11 @@ pub fn cmd_save_prefs(app_handle: tauri::AppHandle, app_state: tauri::State<AppS
8589
}
8690

8791
#[tauri::command]
88-
pub fn cmd_set_pref_value(app_state: tauri::State<'_, AppState>, key: PrefsKey, value: serde_json::Value) -> Result<(), errors::AnyError> {
89-
let mut prefs = app::get_prefs(&app_state)?;
92+
pub fn cmd_set_pref_value(app_handle: tauri::AppHandle, app_state: tauri::State<'_, AppState>, key: PrefsKey, value: serde_json::Value) -> Result<(), errors::AnyError> {
93+
// let mut prefs = app::get_prefs(&app_state)?;
94+
let mut prefs = app_state.prefs.lock()
95+
.map_err(|_| errors::str_error("Failed to get prefs. Is it locked?"))?;
96+
9097
match key {
9198
PrefsKey::NewProjectPath => {
9299
prefs.new_project_path = serde_json::from_value(value)?;
@@ -100,7 +107,13 @@ pub fn cmd_set_pref_value(app_state: tauri::State<'_, AppState>, key: PrefsKey,
100107
PrefsKey::HubAppDataPath => {
101108
prefs.hub_appdata_path = serde_json::from_value(value)?;
102109
},
110+
PrefsKey::ProjectSortType => {
111+
prefs.project_sort_type = serde_json::from_value(value)?;
112+
},
103113
// _ => return Err(errors::str_error("Invalid key")),
104114
}
115+
116+
app::save_prefs_to_disk(&prefs, &app_handle)?;
117+
105118
Ok(())
106119
}

0 commit comments

Comments
 (0)