From dce55054e43f2af169d688b547ac0be21f1b623b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Fri, 23 Jan 2026 13:15:32 +0100 Subject: [PATCH] Refactored to ensure DRY --- runtime/src/app_window.rs | 36 +++++++++++++++--------------------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/runtime/src/app_window.rs b/runtime/src/app_window.rs index f6d820f4..fe832090 100644 --- a/runtime/src/app_window.rs +++ b/runtime/src/app_window.rs @@ -528,13 +528,7 @@ pub fn select_file(_token: APIToken, payload: Json) -> Json { - file_dialog.add_filter(&filter.filter_name, &filter.filter_extensions.iter().map(|s| s.as_str()).collect::>()) - }, - - None => file_dialog, - }; + let file_dialog = apply_filter(file_dialog, &payload.filter); // Set the previous file path if provided: let file_dialog = match &payload.previous_file { @@ -578,13 +572,7 @@ pub fn select_files(_token: APIToken, payload: Json) -> Json< let file_dialog = file_dialog.set_title(&payload.title); // Set the file type filter if provided: - let file_dialog = match &payload.filter { - Some(filter) => { - file_dialog.add_filter(&filter.filter_name, &filter.filter_extensions.iter().map(|s| s.as_str()).collect::>()) - }, - - None => file_dialog, - }; + let file_dialog = apply_filter(file_dialog, &payload.filter); // Set the previous file path if provided: let file_dialog = match &payload.previous_file { @@ -627,13 +615,7 @@ pub fn save_file(_token: APIToken, payload: Json) -> Json { - file_dialog.add_filter(&filter.filter_name, &filter.filter_extensions.iter().map(|s| s.as_str()).collect::>()) - }, - - None => file_dialog, - }; + let file_dialog = apply_filter(file_dialog, &payload.filter); // Set the previous file path if provided: let file_dialog = match &payload.name_file { @@ -671,6 +653,18 @@ pub struct PreviousFile { file_path: String, } +/// Applies an optional file type filter to a FileDialogBuilder. +fn apply_filter(file_dialog: FileDialogBuilder, filter: &Option) -> FileDialogBuilder { + match filter { + Some(f) => file_dialog.add_filter( + &f.filter_name, + &f.filter_extensions.iter().map(|s| s.as_str()).collect::>(), + ), + + None => file_dialog, + } +} + #[derive(Serialize)] pub struct FileSelectionResponse { user_cancelled: bool,