From 1ff8bdd8c7b7f4dc93f2ebc6a45e04e062285cd3 Mon Sep 17 00:00:00 2001 From: Psychotoxical <171614930+Psychotoxical@users.noreply.github.com> Date: Fri, 8 May 2026 16:32:04 +0200 Subject: [PATCH] refactor(lib_commands): drop super::* + glob re-export in sync + lib.rs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Hotspot G next slice — replace cascade-imports in lib_commands/sync/ {device,batch,tray}.rs with explicit per-symbol imports + per-command re-exports. sync/mod.rs lists each Tauri command from device / batch / tray explicitly, plus the three internal helpers consumed by lib.rs and ui/mini.rs (is_tiling_wm, stop_audio_engine, try_build_tray_icon). The previous broad `pub(crate) use device::*` etc. is gone. Inside the .rs files: each `use super::*` is replaced with what the file actually needs — `super::device::{TrackSyncInfo, ...}` for batch, `crate::tray_runtime::{Tray*}` + `crate::audio` + `super::super::ui:: {PAUSE_RENDERING_JS, RESUME_RENDERING_JS}` for tray, etc. Cleanup in lib.rs: drop the now-unused tauri menu/tray imports (MenuBuilder/MenuItemBuilder/PredefinedMenuItem/TrayIcon*/MouseButton*) — tray.rs owns those now. Drop `Ordering` (no longer used at lib.rs scope). Drop `pub(crate) use file_transfer::*;` from lib_commands/mod.rs (file_transfer is now imported by direct path where needed: `super::super::file_transfer::*`). --- src-tauri/src/lib.rs | 12 ++---------- src-tauri/src/lib_commands/mod.rs | 1 - src-tauri/src/lib_commands/sync/batch.rs | 13 ++++++++++++- src-tauri/src/lib_commands/sync/device.rs | 4 +++- src-tauri/src/lib_commands/sync/mod.rs | 20 +++++++++++++++----- src-tauri/src/lib_commands/sync/tray.rs | 16 +++++++++++++++- 6 files changed, 47 insertions(+), 19 deletions(-) diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 790cd397..bdac1624 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -17,18 +17,10 @@ pub(crate) use tray_runtime::*; use std::collections::HashMap; use std::sync::{Arc, Mutex, OnceLock, RwLock}; -use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::atomic::AtomicBool; -use tauri::{ - menu::{MenuBuilder, MenuItemBuilder, PredefinedMenuItem}, - tray::{MouseButton, TrayIcon, TrayIconBuilder, TrayIconEvent}, - Emitter, Manager, -}; +use tauri::{Emitter, Manager}; use lib_commands::*; -// MouseButtonState is only matched on non-Windows targets — on Windows the -// tray uses DoubleClick which doesn't carry a button_state. -#[cfg(not(target_os = "windows"))] -use tauri::tray::MouseButtonState; /// Tracks which user-configured shortcuts are currently registered (shortcut_str → action). /// Prevents on_shortcut() accumulating duplicate handlers across JS reloads (HMR / StrictMode). diff --git a/src-tauri/src/lib_commands/mod.rs b/src-tauri/src/lib_commands/mod.rs index 55912f33..2bc2e547 100644 --- a/src-tauri/src/lib_commands/mod.rs +++ b/src-tauri/src/lib_commands/mod.rs @@ -8,6 +8,5 @@ mod ui; pub(crate) use app_api::*; pub(crate) use cache::*; -pub(crate) use file_transfer::*; pub(crate) use sync::*; pub(crate) use ui::*; diff --git a/src-tauri/src/lib_commands/sync/batch.rs b/src-tauri/src/lib_commands/sync/batch.rs index 7a0433bb..ce9568fd 100644 --- a/src-tauri/src/lib_commands/sync/batch.rs +++ b/src-tauri/src/lib_commands/sync/batch.rs @@ -1,4 +1,15 @@ -use super::*; +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; + +use tauri::Emitter; + +use crate::sync_cancel_flags; + +use super::super::file_transfer::{finalize_streamed_download, subsonic_http_client}; +use super::device::{ + build_track_path, get_removable_drives, is_path_on_mounted_volume, SyncBatchResult, + TrackSyncInfo, +}; #[tauri::command] pub(crate) async fn list_device_dir_files(dir: String) -> Result, String> { diff --git a/src-tauri/src/lib_commands/sync/device.rs b/src-tauri/src/lib_commands/sync/device.rs index 69ddb4f6..4301eb00 100644 --- a/src-tauri/src/lib_commands/sync/device.rs +++ b/src-tauri/src/lib_commands/sync/device.rs @@ -1,4 +1,6 @@ -use super::*; +use tauri::Emitter; + +use super::super::file_transfer::{finalize_streamed_download, subsonic_http_client}; // ─── Device Sync ───────────────────────────────────────────────────────────── diff --git a/src-tauri/src/lib_commands/sync/mod.rs b/src-tauri/src/lib_commands/sync/mod.rs index c826f798..7622ab10 100644 --- a/src-tauri/src/lib_commands/sync/mod.rs +++ b/src-tauri/src/lib_commands/sync/mod.rs @@ -1,9 +1,19 @@ -use super::*; - mod device; mod batch; mod tray; -pub(crate) use device::*; -pub(crate) use batch::*; -pub(crate) use tray::*; +// Tauri commands re-exported for the lib.rs invoke_handler: +pub(crate) use device::{ + get_removable_drives, read_device_manifest, rename_device_files, sync_track_to_device, + write_device_manifest, write_playlist_m3u8, compute_sync_paths, +}; +pub(crate) use batch::{ + calculate_sync_payload, cancel_device_sync, delete_device_file, delete_device_files, + list_device_dir_files, sync_batch_to_device, +}; +pub(crate) use tray::{ + is_tiling_wm_cmd, no_compositing_mode, set_tray_menu_labels, set_tray_tooltip, + toggle_tray_icon, +}; +// Internal helpers consumed elsewhere in the crate: +pub(crate) use tray::{is_tiling_wm, stop_audio_engine, try_build_tray_icon}; diff --git a/src-tauri/src/lib_commands/sync/tray.rs b/src-tauri/src/lib_commands/sync/tray.rs index 76a74e68..82f76d5f 100644 --- a/src-tauri/src/lib_commands/sync/tray.rs +++ b/src-tauri/src/lib_commands/sync/tray.rs @@ -1,4 +1,18 @@ -use super::*; +use std::sync::atomic::Ordering; + +use tauri::menu::{MenuBuilder, MenuItemBuilder, PredefinedMenuItem}; +use tauri::tray::{MouseButton, TrayIcon, TrayIconBuilder, TrayIconEvent}; +use tauri::{Emitter, Manager}; +#[cfg(not(target_os = "windows"))] +use tauri::tray::MouseButtonState; + +use crate::audio; +use crate::tray_runtime::{ + tray_state_icon, TrayMenuItems, TrayMenuItemsState, TrayMenuLabels, TrayMenuLabelsState, + TrayPlaybackState, TrayState, TrayTooltip, +}; + +use super::super::ui::{PAUSE_RENDERING_JS, RESUME_RENDERING_JS}; pub(crate) fn build_tray_icon(app: &tauri::AppHandle) -> tauri::Result { let labels = app