diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 0285de73..aa80a36d 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,15 +1,91 @@ // Learn more about Tauri commands at https://tauri.app/v1/guides/features/command +use tauri::{AppHandle, Manager, WebviewWindow}; +use tauri_nspanel::{panel_delegate, ManagerExt, WebviewWindowExt}; + #[tauri::command] fn greet(name: &str) -> String { format!("Hello, {}! You've been greeted from Rust!", name) } +#[tauri::command] +fn change_window_height(handle: AppHandle, height: u32) { + let window: WebviewWindow = handle.get_webview_window("main").unwrap(); + + let mut size = window.outer_size().unwrap(); + size.height = height; + window.set_size(size).unwrap(); +} + +#[tauri::command] +fn show_panel(handle: AppHandle) { + let panel = handle.get_webview_panel("main").unwrap(); + + panel.show(); +} + +#[tauri::command] +fn hide_panel(handle: AppHandle) { + let panel = handle.get_webview_panel("main").unwrap(); + + panel.order_out(None); +} + +#[tauri::command] +fn close_panel(handle: AppHandle) { + let panel = handle.get_webview_panel("main").unwrap(); + + panel.released_when_closed(true); + + panel.close(); +} + #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { tauri::Builder::default() .plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_shell::init()) - .invoke_handler(tauri::generate_handler![greet]) + .plugin(tauri_nspanel::init()) + .invoke_handler(tauri::generate_handler![ + greet, + change_window_height, + show_panel, + hide_panel, + close_panel, + ]) + .setup(|app| { + init(app.app_handle()); + + Ok(()) + }) .run(tauri::generate_context!()) .expect("error while running tauri application"); } + +fn init(app_handle: &AppHandle) { + let window: WebviewWindow = app_handle.get_webview_window("main").unwrap(); + + let panel = window.to_panel().unwrap(); + + let delegate = panel_delegate!(MyPanelDelegate { + window_did_become_key, + window_did_resign_key + }); + + let handle = app_handle.to_owned(); + + delegate.set_listener(Box::new(move |delegate_name: String| { + match delegate_name.as_str() { + "window_did_become_key" => { + let app_name = handle.package_info().name.to_owned(); + + println!("[info]: {:?} panel becomes key window!", app_name); + } + "window_did_resign_key" => { + println!("[info]: panel resigned from key window!"); + } + _ => (), + } + })); + + panel.set_delegate(delegate); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 5692142a..7ec7e22d 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -1,92 +1,6 @@ // Prevents additional console window on Windows in release, DO NOT REMOVE!! -#![cfg_attr( - not(debug_assertions), - windows_subsystem = "windows" -)] - -use tauri::{AppHandle, Manager, WebviewWindow}; -use tauri_nspanel::{panel_delegate, ManagerExt, WebviewWindowExt}; +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] fn main() { - coco_lib::run(); - - tauri::Builder::default() - .plugin(tauri_plugin_websocket::init()) - .plugin(tauri_plugin_http::init()) - .plugin(tauri_nspanel::init()) - .invoke_handler(tauri::generate_handler![ - show_panel, - hide_panel, - close_panel, - change_window_height - ]) - .setup(|app| { - init(app.app_handle()); - - Ok(()) - }) - .run(tauri::generate_context!()) - .expect("error while running tauri application"); -} - -fn init(app_handle: &AppHandle) { - let window: WebviewWindow = app_handle.get_webview_window("main").unwrap(); - - let panel = window.to_panel().unwrap(); - - let delegate = panel_delegate!(MyPanelDelegate { - window_did_become_key, - window_did_resign_key - }); - - let handle = app_handle.to_owned(); - - delegate.set_listener(Box::new(move |delegate_name: String| { - match delegate_name.as_str() { - "window_did_become_key" => { - let app_name = handle.package_info().name.to_owned(); - - println!("[info]: {:?} panel becomes key window!", app_name); - } - "window_did_resign_key" => { - println!("[info]: panel resigned from key window!"); - } - _ => (), - } - })); - - panel.set_delegate(delegate); -} - - -#[tauri::command] -fn change_window_height(handle: AppHandle,height: u32) { - let window: WebviewWindow = handle.get_webview_window("main").unwrap(); - - let mut size = window.outer_size().unwrap(); - size.height = height; - window.set_size(size).unwrap(); -} - -#[tauri::command] -fn show_panel(handle: AppHandle) { - let panel = handle.get_webview_panel("main").unwrap(); - - panel.show(); -} - -#[tauri::command] -fn hide_panel(handle: AppHandle) { - let panel = handle.get_webview_panel("main").unwrap(); - - panel.order_out(None); -} - -#[tauri::command] -fn close_panel(handle: AppHandle) { - let panel = handle.get_webview_panel("main").unwrap(); - - panel.released_when_closed(true); - - panel.close(); + coco_lib::run() } diff --git a/src/components/SearchChat/index.tsx b/src/components/SearchChat/index.tsx index 2cb0fd57..a1970e2b 100644 --- a/src/components/SearchChat/index.tsx +++ b/src/components/SearchChat/index.tsx @@ -61,7 +61,7 @@ export default function SearchChat() { if (!isTransitioned) { setTimeout(async () => { await getCurrentWebviewWindow()?.setSize(new LogicalSize(680, 90)); - }, 500); + }, 1000); } } useEffect(() => {