use tauri::image::Image;
use tauri::menu::{MenuBuilder, MenuItemBuilder};
use tauri::tray::TrayIconBuilder;
use tauri::{Emitter, Manager};

pub fn setup(app: &tauri::App) -> Result<(), Box<dyn std::error::Error>> {
    let show = MenuItemBuilder::with_id("show", "Show Lumotia").build(app)?;
    let status = MenuItemBuilder::with_id("status", "Ready")
        .enabled(false)
        .build(app)?;
    // Phase 5: always-visible shortcut into the evening wind-down page.
    // The page itself only renders once the user has enabled the
    // ritual; clicking this when disabled is harmless (just takes them
    // there), and Settings is where the toggle lives.
    let wind_down = MenuItemBuilder::with_id("wind-down", "Evening wind-down").build(app)?;
    let quit = MenuItemBuilder::with_id("quit", "Quit").build(app)?;

    let menu = MenuBuilder::new(app)
        .item(&show)
        .separator()
        .item(&status)
        .separator()
        .item(&wind_down)
        .separator()
        .item(&quit)
        .build()?;

    let icon = app
        .default_window_icon()
        .cloned()
        .unwrap_or_else(|| Image::new(&[0u8; 4], 1, 1));

    let _tray = TrayIconBuilder::new()
        .icon(icon)
        .tooltip("Lumotia — Ready")
        .menu(&menu)
        .on_menu_event(move |app, event| match event.id().as_ref() {
            "show" => {
                if let Some(window) = app.get_webview_window("main") {
                    let _ = window.show();
                    let _ = window.set_focus();
                }
            }
            "wind-down" => {
                if let Some(window) = app.get_webview_window("main") {
                    let _ = window.show();
                    let _ = window.set_focus();
                }
                // The frontend layout listens for this event and routes
                // to the Phase 5 wind-down page.
                let _ = app.emit("lumotia:open-wind-down", ());
            }
            "quit" => {
                app.exit(0);
            }
            _ => {}
        })
        .on_tray_icon_event(|tray, event| {
            if let tauri::tray::TrayIconEvent::Click {
                button: tauri::tray::MouseButton::Left,
                ..
            } = event
            {
                if let Some(window) = tray.app_handle().get_webview_window("main") {
                    let _ = window.show();
                    let _ = window.set_focus();
                }
            }
        })
        .build(app)?;

    Ok(())
}
