diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 61f6b4d..07e72f9 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -108,6 +108,7 @@ dependencies = [ "tauri-plugin-log", "tauri-plugin-notification", "tauri-plugin-os", + "tauri-plugin-single-instance", "tauri-plugin-updater", "thiserror 2.0.12", "tokio", @@ -4846,6 +4847,21 @@ dependencies = [ "thiserror 2.0.12", ] +[[package]] +name = "tauri-plugin-single-instance" +version = "2.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1320af4d866a7fb5f5721d299d14d0dd9e4e6bc0359ff3e263124a2bf6814efa" +dependencies = [ + "serde", + "serde_json", + "tauri", + "thiserror 2.0.12", + "tracing", + "windows-sys 0.59.0", + "zbus", +] + [[package]] name = "tauri-plugin-updater" version = "2.7.0" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 627fa5b..9cd61b6 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -40,3 +40,4 @@ custom-protocol = ["tauri/custom-protocol"] [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] tauri-plugin-autostart = "2.3.0" +tauri-plugin-single-instance = "2" diff --git a/src-tauri/src/commands/fansly/mod.rs b/src-tauri/src/commands/fansly/mod.rs index a5ecf07..c158f2f 100644 --- a/src-tauri/src/commands/fansly/mod.rs +++ b/src-tauri/src/commands/fansly/mod.rs @@ -1,3 +1,4 @@ +use crate::handlers::fansly::{SyncProgress, PROGRESS}; use crate::{ handlers::fansly::Fansly, structs::{FanslyAccountResponse, FanslyBaseResponse, SyncDataResponse}, @@ -5,7 +6,6 @@ use crate::{ use lazy_static::lazy_static; use serde_json::Value; use tokio::sync::Mutex; -use crate::handlers::fansly::{SyncProgress, PROGRESS}; lazy_static! { static ref FANSLY: Mutex = Mutex::new(Fansly::new(None)); diff --git a/src-tauri/src/handlers/fansly/mod.rs b/src-tauri/src/handlers/fansly/mod.rs index 108a94c..3c8591f 100644 --- a/src-tauri/src/handlers/fansly/mod.rs +++ b/src-tauri/src/handlers/fansly/mod.rs @@ -404,7 +404,6 @@ impl Fansly { "[sync::process] Got {} followers from API.", response.response.len() ); - // Collect followers for follower in response.response.clone() { diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 1b412ab..10088fe 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -20,6 +20,8 @@ use tauri::tray::TrayIconBuilder; use tauri::AppHandle; use tauri::Manager; use tauri_plugin_autostart::MacosLauncher; +use tauri_plugin_dialog::DialogExt; +use tauri_plugin_dialog::MessageDialogKind; use tauri_plugin_log::{Target, TargetKind}; fn get_log_path() -> io::Result { @@ -108,6 +110,14 @@ async fn main() { .max_file_size(1024 * 1024 * 5) .build(), ) + .plugin(tauri_plugin_single_instance::init(|app,_args,_cwd| { + // Show a dialog if the app is already running + app.dialog() + .message("FanslySync is already running in the background. Please left click the tray icon -> Show Window to open the app.") + .title("FanslySync") + .kind(MessageDialogKind::Warning) + .blocking_show(); + })) .invoke_handler(tauri::generate_handler![ init_config, get_config,