重启之后清除登录信息

This commit is contained in:
2025-07-15 19:55:59 +08:00
parent 4caff7542e
commit 0b2974e2c9
18 changed files with 1873 additions and 86 deletions

View File

@@ -11,13 +11,12 @@ import { setStoreValue, getStoreValue,deleteStore } from './store.js'
import {checkForUpdates} from "./utils/updateUtils"
import dayjs from 'dayjs'
let mainWindow = null
let difyfullScreenWindow = null
let drageWindow = null
let apiConfigWindow = null
let configWindow = null
import { clearAllSessionData } from './utils/cacheUtils.js'
// 权限授权
async function checkMediaAccess(mediaType){
const result = systemPreferences.getMediaAccessStatus(mediaType)
@@ -109,6 +108,9 @@ export async function createWindow() {
mainWindow.webContents.on('before-input-event', (event, input) => {
if (input.key === 'F12') {
mainWindow.webContents.toggleDevTools()
} else if (input.key === 'F5') {
logger.info('主窗口 F5 快捷键触发')
mainWindow.reload()
}
})
@@ -164,9 +166,11 @@ export async function createWindow() {
// 加载存储的 URL
mainWindow.loadURL(h5_client_url)
// 超过30分钟不活动则退出登录
// 接口超过30分钟不活动则退出登录
await tokenExpireTimer()
setTimeout(()=>{
try {
// 注册全局快捷键
@@ -189,21 +193,44 @@ export async function createWindow() {
});
}
// 添加一个专门的快捷键注册函数
function registerShortcuts(window) {
function registerShortcuts(window=null) {
// 先注销可能存在的F5快捷键
globalShortcut.unregister('F5')
// 注册 F5 刷新快捷键
globalShortcut.register('F5', () => {
const success = globalShortcut.register('F5', () => {
logger.info('F5 快捷键触发')
if (window && !window.isDestroyed()) {
window.reload()
try {
// 获取当前焦点窗口
const focusedWindow = BrowserWindow.getFocusedWindow()
logger.info('当前焦点窗口:', focusedWindow ? '存在' : '不存在')
if (focusedWindow && !focusedWindow.isDestroyed()) {
logger.info('刷新当前焦点窗口')
focusedWindow.reload()
} else if (mainWindow && !mainWindow.isDestroyed()) {
logger.info('没有焦点窗口,刷新主窗口')
mainWindow.reload()
} else if (difyfullScreenWindow && !difyfullScreenWindow.isDestroyed()) {
logger.info('主窗口不可用,刷新全屏窗口')
difyfullScreenWindow.reload()
} else {
logger.warn('没有可用的窗口进行刷新')
}
} catch (error) {
logger.error('F5快捷键执行出错:', error)
}
})
logger.info(`F5快捷键注册${success ? '成功' : '失败'}`)
const isRegistered_F12 = globalShortcut.isRegistered('F12');
logger.info(`Is CommandOrControl+X registered: ${isRegistered_F12}`);
logger.info(`Is F12 registered: ${isRegistered_F12}`);
// 桌面端快要退出的时候,注销快捷键
app.on('will-quit', () => {
@@ -236,6 +263,8 @@ export async function createNewWindow(url, access_token, refresh_token,sandbox=f
difyfullScreenWindow.on('ready-to-show', () => {
difyfullScreenWindow.show()
// 确保快捷键在新窗口显示后也能工作
registerShortcuts(difyfullScreenWindow)
})
let code = `localStorage.setItem("IsHsAiApp","IsHsAiApp");localStorage.setItem("console_token","${access_token}");localStorage.setItem("refresh_token","12");`
@@ -298,6 +327,9 @@ export async function createNewWindow(url, access_token, refresh_token,sandbox=f
difyfullScreenWindow.webContents.on('before-input-event', (event, input) => {
if (input.key === 'F12') {
difyfullScreenWindow.webContents.toggleDevTools()
} else if (input.key === 'F5') {
logger.info('全屏窗口 F5 快捷键触发')
difyfullScreenWindow.reload()
}
})
@@ -467,18 +499,29 @@ export function createDrageWindow() {
drageWindow.setPosition(screenWidth - drageWindow.getSize()[0] -100, screenHeight - drageWindow.getSize()[1] - 100)
}
export async function tokenExpireTimer(){
let lastLogTime = 0; // 记录上次打印日志的时间
const LOG_INTERVAL = 60000; // 日志打印间隔60秒打印一次
const tokenExpireTimer = setInterval(async () => {
logger.info("tokenExpireTimer 触发")
const currentTime = Date.now();
const lastActiveTime = getStoreValue("lastActiveTime")||null
if (lastActiveTime!=null){
logger.info("tokenExpireTimer 触发 对比时间戳")
try {
const nowTime=dayjs();
const lastTime=dayjs(lastActiveTime);
const diff=nowTime.diff(lastTime, 'minute')
logger.info("tokenExpireTimer 触发 对比时间戳差距为:"+diff)
// 只在特定条件下打印日志,减少日志频率
if (currentTime - lastLogTime > LOG_INTERVAL) {
logger.info(`tokenExpireTimer 检查 - 时间差距: ${diff}分钟`)
lastLogTime = currentTime;
}
if ( diff> 30) {
logger.info(`用户超时退出登录 - 时间差距: ${diff}分钟`)
deleteStore("lastActiveTime")
try {
// 清除所有窗口的浏览器缓存
@@ -512,7 +555,7 @@ export async function tokenExpireTimer(){
}
} catch (e) {
logger.error('tokenExpireTimer 执行错误:', e)
}
}
}, 1000 * 10)
@@ -610,3 +653,32 @@ export function closeConfigWindow() {
configWindow = null
}
}
// 测试快捷键是否正常工作
export function testShortcuts() {
logger.info('测试快捷键功能...')
// 检查F5快捷键是否已注册
const isF5Registered = globalShortcut.isRegistered('F5')
logger.info(`F5快捷键是否已注册: ${isF5Registered}`)
// 获取所有已注册的快捷键
const allShortcuts = globalShortcut.isRegistered('F5') ? ['F5'] : []
logger.info(`已注册的快捷键: ${allShortcuts.join(', ')}`)
// 获取当前焦点窗口
const focusedWindow = BrowserWindow.getFocusedWindow()
logger.info(`当前焦点窗口: ${focusedWindow ? '存在' : '不存在'}`)
if (focusedWindow) {
logger.info(`焦点窗口标题: ${focusedWindow.getTitle()}`)
logger.info(`焦点窗口是否销毁: ${focusedWindow.isDestroyed()}`)
}
return {
f5Registered: isF5Registered,
focusedWindow: focusedWindow ? 'exists' : 'none',
mainWindow: mainWindow && !mainWindow.isDestroyed() ? 'exists' : 'none',
difyWindow: difyfullScreenWindow && !difyfullScreenWindow.isDestroyed() ? 'exists' : 'none'
}
}