diff --git a/apps/desktop2/src/routes/panel.$account.tsx b/apps/desktop2/src/routes/panel.$account.tsx index 7c7df400..e0ee69d6 100644 --- a/apps/desktop2/src/routes/panel.$account.tsx +++ b/apps/desktop2/src/routes/panel.$account.tsx @@ -13,9 +13,9 @@ import * as ScrollArea from "@radix-ui/react-scroll-area"; import * as Tabs from "@radix-ui/react-tabs"; import { useQuery } from "@tanstack/react-query"; import { createFileRoute } from "@tanstack/react-router"; +import { invoke } from "@tauri-apps/api/core"; import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu"; import { getCurrent } from "@tauri-apps/api/window"; -import { exit } from "@tauri-apps/plugin-process"; import { open } from "@tauri-apps/plugin-shell"; import { type ReactNode, useCallback, useEffect, useRef } from "react"; import { Virtualizer } from "virtua"; @@ -98,7 +98,7 @@ function Screen() { PredefinedMenuItem.new({ item: "Separator" }), MenuItem.new({ text: "Quit", - action: async () => await exit(0), + action: async () => await invoke("force_quit"), }), ]); diff --git a/packages/system/src/commands.ts b/packages/system/src/commands.ts index cf522b9f..3804c318 100644 --- a/packages/system/src/commands.ts +++ b/packages/system/src/commands.ts @@ -447,6 +447,9 @@ try { async openMainWindow() : Promise { await TAURI_INVOKE("open_main_window"); }, +async forceQuit() : Promise { +await TAURI_INVOKE("force_quit"); +}, async setBadge(count: number) : Promise { await TAURI_INVOKE("set_badge", { count }); } diff --git a/src-tauri/src/commands/window.rs b/src-tauri/src/commands/window.rs index bad1fc44..c586aaca 100644 --- a/src-tauri/src/commands/window.rs +++ b/src-tauri/src/commands/window.rs @@ -219,21 +219,6 @@ pub fn open_window(window: Window, app_handle: tauri::AppHandle) -> Result<(), S Ok(()) } -#[tauri::command] -#[specta::specta] -pub fn set_badge(count: i32) { - #[cfg(target_os = "macos")] - unsafe { - let label = if count == 0 { - nil - } else { - NSString::alloc(nil).init_str(&format!("{}", count)) - }; - let dock_tile: cocoa::base::id = msg_send![NSApp(), dockTile]; - let _: cocoa::base::id = msg_send![dock_tile, setBadgeLabel: label]; - } -} - #[tauri::command] #[specta::specta] pub fn open_main_window(app: tauri::AppHandle) { @@ -255,3 +240,24 @@ pub fn open_main_window(app: tauri::AppHandle) { window.make_transparent().unwrap(); } } + +#[tauri::command] +#[specta::specta] +pub fn force_quit() { + std::process::exit(0) +} + +#[tauri::command] +#[specta::specta] +pub fn set_badge(count: i32) { + #[cfg(target_os = "macos")] + unsafe { + let label = if count == 0 { + nil + } else { + NSString::alloc(nil).init_str(&format!("{}", count)) + }; + let dock_tile: cocoa::base::id = msg_send![NSApp(), dockTile]; + let _: cocoa::base::id = msg_send![dock_tile, setBadgeLabel: label]; + } +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index c2348f01..92301fa3 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -127,6 +127,7 @@ fn main() { commands::window::reload_column, commands::window::open_window, commands::window::open_main_window, + commands::window::force_quit, commands::window::set_badge ]);