mirror of
https://github.com/nimbold/Firelink.git
synced 2026-08-21 16:36:50 +00:00
fix(settings): add category subfolders toggle
Add a Settings > Locations toggle that disables automatic category subfolders while keeping the selected base download folder as the automatic destination. Persist the setting across frontend and backend startup paths and disable the category subfolder controls when the feature is off. Fixes #6
This commit is contained in:
@@ -236,6 +236,9 @@ fn migrate_location_settings(state: &mut Value) -> Result<(), String> {
|
||||
}
|
||||
|
||||
state.insert("baseDownloadFolder".to_string(), Value::String(base));
|
||||
state
|
||||
.entry("categorySubfoldersEnabled".to_string())
|
||||
.or_insert(Value::Bool(true));
|
||||
state.insert(
|
||||
"categorySubfolders".to_string(),
|
||||
serde_json::to_value(subfolders)
|
||||
@@ -268,6 +271,7 @@ fn default_settings() -> PersistedSettings {
|
||||
PersistedSettings {
|
||||
theme: Theme::System,
|
||||
base_download_folder: "~/Downloads".to_string(),
|
||||
category_subfolders_enabled: true,
|
||||
category_subfolders: default_category_subfolders(),
|
||||
category_directory_overrides: HashMap::new(),
|
||||
approved_download_roots: Vec::new(),
|
||||
@@ -378,6 +382,7 @@ mod tests {
|
||||
vec!["00000000-0000-0000-0000-000000000001"]
|
||||
);
|
||||
assert_eq!(settings.base_download_folder, "~/Downloads");
|
||||
assert!(settings.category_subfolders_enabled);
|
||||
}
|
||||
|
||||
#[test]
|
||||
@@ -475,6 +480,25 @@ mod tests {
|
||||
assert_eq!(settings.category_subfolders["Documents"], "Documents");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn decodes_disabled_category_subfolders() {
|
||||
let stored = json!({
|
||||
"state": {
|
||||
"baseDownloadFolder": "/Users/test/Downloads",
|
||||
"categorySubfoldersEnabled": false,
|
||||
"categorySubfolders": {
|
||||
"Movies": "Movies"
|
||||
}
|
||||
},
|
||||
"version": 3
|
||||
});
|
||||
|
||||
let settings = decode_stored_settings(&Value::String(stored.to_string())).unwrap();
|
||||
|
||||
assert!(!settings.category_subfolders_enabled);
|
||||
assert_eq!(settings.category_subfolders["Movies"], "Movies");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn replaces_zero_concurrency_with_the_safe_default() {
|
||||
let stored = json!({"state": {"maxConcurrentDownloads": 0}, "version": 0});
|
||||
|
||||
Reference in New Issue
Block a user