use tauri::{
    menu::{Menu, MenuItem},
    tray::{MouseButton, MouseButtonState, TrayIconBuilder, TrayIconEvent},
    Manager, Runtime,
};

pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
    let quit_i = MenuItem::with_id(app, "quit", "Quit", true, None::<&str>)?;
    let menu = Menu::with_items(app, &[&quit_i])?;

    let _ = TrayIconBuilder::with_id("tray")
        .icon(app.default_window_icon().unwrap().clone())
        .menu(&menu)
        .menu_on_left_click(false)
        .on_menu_event(move |app, event| match event.id.as_ref() {
            "quit" => {
                app.exit(0);
            }
            // Add more events here
            _ => {}
        })
        .on_tray_icon_event(|tray, event| {
            if let TrayIconEvent::Click {
                button: MouseButton::Left,
                button_state: MouseButtonState::Up,
                ..
            } = event
            {
                let app = tray.app_handle();
                if let Some(window) = app.get_webview_window("main") {
                    let _ = window.show();
                    let _ = window.set_focus();
                }
            }
        })
        .build(app);

    Ok(())
}

// Tray Menu
// let quit = CustomMenuItem::new("quit".to_string(), "Quit");
// let hide = CustomMenuItem::new("hide".to_string(), "Hide");
// let tray_menu = SystemTrayMenu::new() // insert the menu items here
//   .add_item(hide)
//   .add_item(quit);
// .add_native_item(SystemTrayMenuItem::Separator)
// let toggle = MenuItemBuilder::with_id("toggle", "Toggle").build(app)?;
// let menu = MenuBuilder::new(app).items(&[&toggle]).build()?;

// Setup Tray
//   let tray = tauri::tray::TrayIconBuilder::with_id("my-tray").build(app)?;
// let _ = TrayIconBuilder::new()
//     .menu(&menu)
//     .on_menu_event(move |_, event| {
//         match event.id().as_ref() {
//             "toggle" => {
//                 println!("toggle clicked");
//             }
//             _ => (),
//         }
//         // match event {
//         //   SystemTrayEvent::LeftClick { position: _, size: _, .. } => {
//         //     let window = app.get_window("main").unwrap();
//         //     window.show().unwrap();
//         //     window.set_focus().unwrap();

//         //     // thread::sleep(Duration::from_millis(100));
//         //     // window.set_always_on_top(false).unwrap();
//         //     println!("system tray received a left click");
//         //   }
//         //   SystemTrayEvent::RightClick { position: _, size: _, .. } => {
//         //     // let window = app.get_window("main").unwrap();
//         //     // window.hide().unwrap();
//         //     println!("system tray received a right click");
//         //   }
//         //   SystemTrayEvent::DoubleClick { position: _, size: _, .. } => {
//         //     println!("system tray received a double click");
//         //   }
//         //   SystemTrayEvent::MenuItemClick { id, .. } =>
//         //     match id.as_str() {
//         //       "quit" => {
//         //         std::process::exit(0);
//         //       }
//         //       "hide" => {
//         //         let window = app.get_window("main").unwrap();
//         //         window.hide().unwrap();
//         //       }
//         //       _ => {}
//         //     }
//         //   _ => {}
//         // }
//     })
//     .on_tray_icon_event(|tray, event| {
//         if event.click_type == ClickType::Left {
//             let app = tray.app_handle();
//             if let Some(webview_window) = app.get_webview_window("main") {
//                 let _ = webview_window.show();
//                 let _ = webview_window.set_focus();
//             }
//         }
//     })
//     .build(app)
//     .unwrap();
