Initial commit
This commit is contained in:
186
src/main/tray.js
Normal file
186
src/main/tray.js
Normal file
@@ -0,0 +1,186 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user