187 lines
4.4 KiB
JavaScript
187 lines
4.4 KiB
JavaScript
import { Tray, Menu, app, BrowserWindow } from 'electron'
|
|
import { join } from 'path'
|
|
import icon from '../../resources/icon.png?asset'
|
|
import { getMainWindow, createWindow, createApiConfigWindow, createConfigWindow ,getDragWindow} from './window.js'
|
|
import { getStoreValue, setStoreValue, clearStore } from './store.js'
|
|
import { createDrageWindow, getDrageWindow } from './window.js'
|
|
import logger from './utils/logger'
|
|
import fs from 'fs'
|
|
|
|
let tray = null
|
|
|
|
import {checkForUpdates} from "./utils/updateUtils"
|
|
|
|
async function clearBrowserCache() {
|
|
try {
|
|
// 清除所有窗口的浏览器缓存
|
|
const windows = BrowserWindow.getAllWindows()
|
|
for (const window of windows) {
|
|
const session = window.webContents.session
|
|
await session.clearStorageData({
|
|
storages: [
|
|
'appcache',
|
|
'cookies',
|
|
'filesystem',
|
|
'indexdb',
|
|
'localstorage',
|
|
'shadercache',
|
|
'websql',
|
|
'serviceworkers',
|
|
'cachestorage'
|
|
]
|
|
})
|
|
}
|
|
|
|
logger.info('浏览器缓存清除成功')
|
|
} catch (error) {
|
|
logger.error('清除浏览器缓存失败:', error)
|
|
}
|
|
}
|
|
|
|
export function createTray() {
|
|
// 创建托盘图标
|
|
tray = new Tray(icon)
|
|
|
|
// 设置托盘图标的提示文本
|
|
tray.setToolTip('Dify Market Manager')
|
|
|
|
// 创建右键菜单
|
|
const contextMenu = Menu.buildFromTemplate([
|
|
{
|
|
label: '显示主窗口',
|
|
click: () => {
|
|
const mainWindow = getMainWindow()
|
|
if (mainWindow) {
|
|
mainWindow.show()
|
|
} else {
|
|
createWindow()
|
|
}
|
|
}
|
|
},
|
|
{
|
|
label: '隐藏主窗口',
|
|
click: () => {
|
|
const mainWindow = getMainWindow()
|
|
if (mainWindow) {
|
|
mainWindow.hide()
|
|
}
|
|
}
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '配置',
|
|
submenu: [
|
|
{ type: 'separator' },
|
|
{
|
|
label: '配置客户端地址',
|
|
click: () => {
|
|
createConfigWindow()
|
|
}
|
|
}
|
|
]
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '显示隐藏桌面悬浮',
|
|
click: () => {
|
|
const drageWindow = getDrageWindow()
|
|
if (!drageWindow) {
|
|
createDrageWindow()
|
|
} else {
|
|
if (drageWindow.isVisible()) {
|
|
drageWindow.hide()
|
|
setStoreValue('showDrageWindow', false)
|
|
} else {
|
|
drageWindow.show()
|
|
setStoreValue('showDrageWindow', true)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '检查更新',
|
|
click: async (menuItem) => {
|
|
checkForUpdates(menuItem,true)
|
|
}
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '清除缓存',
|
|
click: async () => {
|
|
await clearBrowserCache()
|
|
|
|
// 删除配置文件
|
|
try {
|
|
const userDataPath = app.getPath('userData')
|
|
const configPath = join(userDataPath, 'config.json')
|
|
if (fs.existsSync(configPath)) {
|
|
fs.unlinkSync(configPath)
|
|
logger.info('配置文件删除成功')
|
|
}
|
|
} catch (error) {
|
|
logger.error('删除配置文件失败:', error)
|
|
}
|
|
|
|
// 重新加载所有窗口
|
|
const windows = BrowserWindow.getAllWindows()
|
|
for (const window of windows) {
|
|
window.reload()
|
|
}
|
|
}
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '退出登录',
|
|
click: async () => {
|
|
await clearBrowserCache()
|
|
// 重新加载主窗口
|
|
const mainWindow = getMainWindow()
|
|
if (mainWindow) {
|
|
mainWindow.reload()
|
|
}
|
|
logger.info('用户已退出登录')
|
|
}
|
|
},
|
|
{ type: 'separator' },
|
|
{
|
|
label: '退出应用',
|
|
click: () => {
|
|
app.isQuiting = true
|
|
// 确保所有窗口都被关闭
|
|
BrowserWindow.getAllWindows().forEach(window => {
|
|
window.destroy()
|
|
})
|
|
app.quit()
|
|
}
|
|
}
|
|
])
|
|
|
|
// 设置托盘图标的右键菜单
|
|
tray.setContextMenu(contextMenu)
|
|
|
|
// 点击托盘图标时显示/隐藏主窗口
|
|
tray.on('click', () => {
|
|
const mainWindow = getMainWindow()
|
|
if (mainWindow) {
|
|
if (mainWindow.isVisible()) {
|
|
mainWindow.hide()
|
|
} else {
|
|
mainWindow.show()
|
|
}
|
|
} else {
|
|
createWindow()
|
|
}
|
|
})
|
|
}
|
|
|
|
export function destroyTray() {
|
|
if (tray) {
|
|
tray.destroy()
|
|
tray = null
|
|
}
|
|
}
|