import {app, Menu, Tray} from "electron";
import {trayPath} from "./icon";
import {AppRuntime} from "../mapi/env";
import {AppConfig} from "../../src/config";
import {t} from "./lang";
import {isMac, isWin} from "../lib/env";

let tray = null;

const showApp = () => {
    if (isMac) {
        app.dock.show();
    }
    AppRuntime.mainWindow.show();
};

const hideApp = () => {
    if (isMac) {
        app.dock.hide();
    }
    AppRuntime.mainWindow.hide();
};

const quitApp = () => {
    app.quit();
};

const ready = () => {
    try {
        tray = new Tray(trayPath);
    } catch (err) {
        console.error('[Tray] Failed to create tray:', err);
        return;
    }

    tray.setToolTip(AppConfig.title);

    if (isWin) {
        tray.on("click", () => {
            showApp();
        });
    }

    const contextMenu = Menu.buildFromTemplate([
        {
            label: t("显示主界面"),
            click: () => {
                showApp();
            },
        },
        {
            label: t("重启"),
            click: () => {
                app.relaunch();
                quitApp();
            },
        },
        {
            label: t("退出"),
            click: () => {
                quitApp();
            },
        },
    ]);

    tray.setContextMenu(contextMenu);
};

const show = () => {
    if (tray) {
        tray.destroy();
        tray = null;
    }
};

export const ConfigTray = {
    ready,
};
