重启之后清除登录信息
This commit is contained in:
@@ -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'
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user