feat: add force quit command
This commit is contained in:
@@ -13,9 +13,9 @@ import * as ScrollArea from "@radix-ui/react-scroll-area";
|
|||||||
import * as Tabs from "@radix-ui/react-tabs";
|
import * as Tabs from "@radix-ui/react-tabs";
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
import { createFileRoute } from "@tanstack/react-router";
|
import { createFileRoute } from "@tanstack/react-router";
|
||||||
|
import { invoke } from "@tauri-apps/api/core";
|
||||||
import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu";
|
import { Menu, MenuItem, PredefinedMenuItem } from "@tauri-apps/api/menu";
|
||||||
import { getCurrent } from "@tauri-apps/api/window";
|
import { getCurrent } from "@tauri-apps/api/window";
|
||||||
import { exit } from "@tauri-apps/plugin-process";
|
|
||||||
import { open } from "@tauri-apps/plugin-shell";
|
import { open } from "@tauri-apps/plugin-shell";
|
||||||
import { type ReactNode, useCallback, useEffect, useRef } from "react";
|
import { type ReactNode, useCallback, useEffect, useRef } from "react";
|
||||||
import { Virtualizer } from "virtua";
|
import { Virtualizer } from "virtua";
|
||||||
@@ -98,7 +98,7 @@ function Screen() {
|
|||||||
PredefinedMenuItem.new({ item: "Separator" }),
|
PredefinedMenuItem.new({ item: "Separator" }),
|
||||||
MenuItem.new({
|
MenuItem.new({
|
||||||
text: "Quit",
|
text: "Quit",
|
||||||
action: async () => await exit(0),
|
action: async () => await invoke("force_quit"),
|
||||||
}),
|
}),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
@@ -447,6 +447,9 @@ try {
|
|||||||
async openMainWindow() : Promise<void> {
|
async openMainWindow() : Promise<void> {
|
||||||
await TAURI_INVOKE("open_main_window");
|
await TAURI_INVOKE("open_main_window");
|
||||||
},
|
},
|
||||||
|
async forceQuit() : Promise<void> {
|
||||||
|
await TAURI_INVOKE("force_quit");
|
||||||
|
},
|
||||||
async setBadge(count: number) : Promise<void> {
|
async setBadge(count: number) : Promise<void> {
|
||||||
await TAURI_INVOKE("set_badge", { count });
|
await TAURI_INVOKE("set_badge", { count });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -219,21 +219,6 @@ pub fn open_window(window: Window, app_handle: tauri::AppHandle) -> Result<(), S
|
|||||||
Ok(())
|
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]
|
#[tauri::command]
|
||||||
#[specta::specta]
|
#[specta::specta]
|
||||||
pub fn open_main_window(app: tauri::AppHandle) {
|
pub fn open_main_window(app: tauri::AppHandle) {
|
||||||
@@ -255,3 +240,24 @@ pub fn open_main_window(app: tauri::AppHandle) {
|
|||||||
window.make_transparent().unwrap();
|
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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -127,6 +127,7 @@ fn main() {
|
|||||||
commands::window::reload_column,
|
commands::window::reload_column,
|
||||||
commands::window::open_window,
|
commands::window::open_window,
|
||||||
commands::window::open_main_window,
|
commands::window::open_main_window,
|
||||||
|
commands::window::force_quit,
|
||||||
commands::window::set_badge
|
commands::window::set_badge
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user