mirror of
https://gh.catmak.name/https://github.com/mihomo-party-org/mihomo-party
synced 2025-12-27 13:10:30 +08:00
chore: delete debug log
This commit is contained in:
parent
d030a8722d
commit
cb3eedfcb8
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
### 新功能 (Feat)
|
### 新功能 (Feat)
|
||||||
- 如果当前没有以管理员模式运行,TUN 开关保持关闭
|
- 如果当前没有以管理员模式运行,TUN 开关保持关闭
|
||||||
|
- 区分 app 日志与 core 日志输出为不同文件
|
||||||
|
|
||||||
### 修复 (Fix)
|
### 修复 (Fix)
|
||||||
- 修复某些系统下的悬浮窗开启崩溃的问题
|
- 修复某些系统下的悬浮窗开启崩溃的问题
|
||||||
|
|||||||
@ -9,30 +9,19 @@ import { floatingWindowLogger } from '../utils/logger'
|
|||||||
|
|
||||||
export let floatingWindow: BrowserWindow | null = null
|
export let floatingWindow: BrowserWindow | null = null
|
||||||
|
|
||||||
// 悬浮窗日志记录 - 使用统一的日志工具
|
function logError(message: string, error?: any): void {
|
||||||
async function logFloatingWindow(message: string, error?: any): Promise<void> {
|
floatingWindowLogger.log(`FloatingWindow Error: ${message}`, error).catch(() => {})
|
||||||
await floatingWindowLogger.log(message, error)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createFloatingWindow(): Promise<void> {
|
async function createFloatingWindow(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
await logFloatingWindow('Starting to create floating window...')
|
const floatingWindowState = windowStateKeeper({ file: 'floating-window-state.json' })
|
||||||
const floatingWindowState = windowStateKeeper({
|
|
||||||
file: 'floating-window-state.json'
|
|
||||||
})
|
|
||||||
await logFloatingWindow('Window state keeper initialized')
|
|
||||||
const { customTheme = 'default.css', floatingWindowCompatMode = true } = await getAppConfig()
|
const { customTheme = 'default.css', floatingWindowCompatMode = true } = await getAppConfig()
|
||||||
await logFloatingWindow(`App config loaded, theme: ${customTheme}, compatMode: ${floatingWindowCompatMode}`)
|
|
||||||
|
|
||||||
const safeMode = process.env.FLOATING_SAFE_MODE === 'true'
|
const safeMode = process.env.FLOATING_SAFE_MODE === 'true'
|
||||||
const forceWin10Mode = process.env.FLOATING_WIN10_MODE === 'true'
|
const useCompatMode = floatingWindowCompatMode ||
|
||||||
const useCompatMode = floatingWindowCompatMode || forceWin10Mode || safeMode
|
process.env.FLOATING_COMPAT_MODE === 'true' ||
|
||||||
|
safeMode
|
||||||
await logFloatingWindow(`Safe mode: ${safeMode}`)
|
|
||||||
await logFloatingWindow(`Force Win10 mode: ${forceWin10Mode}`)
|
|
||||||
await logFloatingWindow(`Compat mode from config: ${floatingWindowCompatMode}`)
|
|
||||||
await logFloatingWindow(`Platform: ${process.platform}, System version: ${process.getSystemVersion()}`)
|
|
||||||
await logFloatingWindow(`Using compatibility mode: ${useCompatMode}`)
|
|
||||||
|
|
||||||
const windowOptions: Electron.BrowserWindowConstructorOptions = {
|
const windowOptions: Electron.BrowserWindowConstructorOptions = {
|
||||||
width: 120,
|
width: 120,
|
||||||
@ -40,16 +29,16 @@ async function createFloatingWindow(): Promise<void> {
|
|||||||
x: floatingWindowState.x,
|
x: floatingWindowState.x,
|
||||||
y: floatingWindowState.y,
|
y: floatingWindowState.y,
|
||||||
show: false,
|
show: false,
|
||||||
frame: safeMode ? true : false,
|
frame: safeMode,
|
||||||
alwaysOnTop: !safeMode,
|
alwaysOnTop: !safeMode,
|
||||||
resizable: safeMode,
|
resizable: safeMode,
|
||||||
transparent: !safeMode && !useCompatMode, // 兼容模式下禁用透明
|
transparent: !safeMode && !useCompatMode,
|
||||||
skipTaskbar: !safeMode,
|
skipTaskbar: !safeMode,
|
||||||
minimizable: safeMode,
|
minimizable: safeMode,
|
||||||
maximizable: safeMode,
|
maximizable: safeMode,
|
||||||
fullscreenable: false,
|
fullscreenable: false,
|
||||||
closable: safeMode,
|
closable: safeMode,
|
||||||
backgroundColor: safeMode ? '#ffffff' : (useCompatMode ? '#f0f0f0' : '#00000000'), // 兼容模式使用浅灰色
|
backgroundColor: safeMode ? '#ffffff' : (useCompatMode ? '#f0f0f0' : '#00000000'),
|
||||||
webPreferences: {
|
webPreferences: {
|
||||||
preload: join(__dirname, '../preload/index.js'),
|
preload: join(__dirname, '../preload/index.js'),
|
||||||
spellcheck: false,
|
spellcheck: false,
|
||||||
@ -59,91 +48,46 @@ async function createFloatingWindow(): Promise<void> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// windows 添加兼容性处理
|
|
||||||
if (process.platform === 'win32') {
|
if (process.platform === 'win32') {
|
||||||
windowOptions.hasShadow = !safeMode
|
windowOptions.hasShadow = !safeMode
|
||||||
windowOptions.webPreferences!.offscreen = false
|
windowOptions.webPreferences!.offscreen = false
|
||||||
}
|
}
|
||||||
|
|
||||||
await logFloatingWindow(`Creating BrowserWindow with options: ${JSON.stringify(windowOptions, null, 2)}`)
|
|
||||||
|
|
||||||
try {
|
|
||||||
floatingWindow = new BrowserWindow(windowOptions)
|
floatingWindow = new BrowserWindow(windowOptions)
|
||||||
await logFloatingWindow('BrowserWindow created successfully')
|
|
||||||
} catch (error) {
|
|
||||||
await logFloatingWindow('Failed to create BrowserWindow', error)
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
await logFloatingWindow('Attaching window state management...')
|
|
||||||
floatingWindowState.manage(floatingWindow)
|
floatingWindowState.manage(floatingWindow)
|
||||||
await logFloatingWindow('Window state management attached')
|
|
||||||
} catch (error) {
|
|
||||||
await logFloatingWindow('Failed to attach window state management', error)
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
await logFloatingWindow('Setting up event listeners...')
|
// 事件监听器
|
||||||
|
floatingWindow.webContents.on('render-process-gone', (_, details) => {
|
||||||
try {
|
logError('Render process gone', details.reason)
|
||||||
await logFloatingWindow('Adding render-process-gone listener...')
|
|
||||||
floatingWindow.webContents.on('render-process-gone', async (_, details) => {
|
|
||||||
await logFloatingWindow('Render process gone', details.reason)
|
|
||||||
floatingWindow = null
|
floatingWindow = null
|
||||||
})
|
})
|
||||||
await logFloatingWindow('Render-process-gone listener added')
|
|
||||||
} catch (error) {
|
|
||||||
await logFloatingWindow('Failed to add render-process-gone listener', error)
|
|
||||||
throw error
|
|
||||||
}
|
|
||||||
|
|
||||||
await logFloatingWindow('Adding ready-to-show listener...')
|
floatingWindow.on('ready-to-show', () => {
|
||||||
floatingWindow.on('ready-to-show', async () => {
|
|
||||||
try {
|
|
||||||
await logFloatingWindow('Window ready to show, applying theme...')
|
|
||||||
applyTheme(customTheme)
|
applyTheme(customTheme)
|
||||||
await logFloatingWindow('Theme applied, showing window...')
|
|
||||||
floatingWindow?.show()
|
floatingWindow?.show()
|
||||||
await logFloatingWindow('Window shown, setting always on top...')
|
|
||||||
floatingWindow?.setAlwaysOnTop(true, 'screen-saver')
|
floatingWindow?.setAlwaysOnTop(true, 'screen-saver')
|
||||||
await logFloatingWindow('Floating window setup completed successfully')
|
|
||||||
} catch (error) {
|
|
||||||
await logFloatingWindow('Error in ready-to-show', error)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
await logFloatingWindow('Ready-to-show listener added')
|
|
||||||
|
|
||||||
await logFloatingWindow('Adding moved listener...')
|
|
||||||
floatingWindow.on('moved', () => {
|
floatingWindow.on('moved', () => {
|
||||||
if (floatingWindow) floatingWindowState.saveState(floatingWindow)
|
floatingWindow && floatingWindowState.saveState(floatingWindow)
|
||||||
})
|
})
|
||||||
await logFloatingWindow('Moved listener added')
|
|
||||||
await logFloatingWindow('Adding IPC listener...')
|
// IPC 监听器
|
||||||
ipcMain.on('updateFloatingWindow', () => {
|
ipcMain.on('updateFloatingWindow', () => {
|
||||||
if (floatingWindow) {
|
if (floatingWindow) {
|
||||||
floatingWindow?.webContents.send('controledMihomoConfigUpdated')
|
floatingWindow.webContents.send('controledMihomoConfigUpdated')
|
||||||
floatingWindow?.webContents.send('appConfigUpdated')
|
floatingWindow.webContents.send('appConfigUpdated')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
await logFloatingWindow('IPC listener added')
|
|
||||||
|
|
||||||
await logFloatingWindow('Loading page...')
|
// 加载页面
|
||||||
if (is.dev && process.env['ELECTRON_RENDERER_URL']) {
|
const url = is.dev && process.env['ELECTRON_RENDERER_URL']
|
||||||
const devUrl = `${process.env['ELECTRON_RENDERER_URL']}/floating.html`
|
? `${process.env['ELECTRON_RENDERER_URL']}/floating.html`
|
||||||
await logFloatingWindow(`Loading dev URL: ${devUrl}`)
|
: join(__dirname, '../renderer/floating.html')
|
||||||
await floatingWindow.loadURL(devUrl)
|
|
||||||
} else {
|
is.dev ? await floatingWindow.loadURL(url) : await floatingWindow.loadFile(url)
|
||||||
const filePath = join(__dirname, '../renderer/floating.html')
|
|
||||||
await logFloatingWindow(`Loading file: ${filePath}`)
|
|
||||||
await floatingWindow.loadFile(filePath)
|
|
||||||
}
|
|
||||||
await logFloatingWindow('Page loaded successfully')
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await logFloatingWindow('Failed to create floating window', error)
|
logError('Failed to create floating window', error)
|
||||||
if (error instanceof Error) {
|
|
||||||
await logFloatingWindow(`Error stack: ${error.stack}`)
|
|
||||||
}
|
|
||||||
floatingWindow = null
|
floatingWindow = null
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
@ -152,26 +96,20 @@ async function createFloatingWindow(): Promise<void> {
|
|||||||
export async function showFloatingWindow(): Promise<void> {
|
export async function showFloatingWindow(): Promise<void> {
|
||||||
try {
|
try {
|
||||||
if (floatingWindow && !floatingWindow.isDestroyed()) {
|
if (floatingWindow && !floatingWindow.isDestroyed()) {
|
||||||
await logFloatingWindow('Showing existing floating window')
|
|
||||||
floatingWindow.show()
|
floatingWindow.show()
|
||||||
} else {
|
} else {
|
||||||
await logFloatingWindow('Creating new floating window')
|
|
||||||
await createFloatingWindow()
|
await createFloatingWindow()
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await logFloatingWindow('Failed to show floating window', error)
|
logError('Failed to show floating window', error)
|
||||||
|
|
||||||
// 如果已经是兼容模式还是崩溃,说明问题很严重,自动禁用悬浮窗
|
// 如果已经是兼容模式还是崩溃,自动禁用悬浮窗
|
||||||
const { floatingWindowCompatMode = true } = await getAppConfig()
|
const { floatingWindowCompatMode = true } = await getAppConfig()
|
||||||
if (floatingWindowCompatMode) {
|
if (floatingWindowCompatMode) {
|
||||||
await logFloatingWindow('Compatibility mode was already enabled, disabling floating window completely')
|
|
||||||
await patchAppConfig({ showFloatingWindow: false })
|
await patchAppConfig({ showFloatingWindow: false })
|
||||||
} else {
|
} else {
|
||||||
await logFloatingWindow('Enabling compatibility mode and retrying')
|
|
||||||
await patchAppConfig({ floatingWindowCompatMode: true })
|
await patchAppConfig({ floatingWindowCompatMode: true })
|
||||||
}
|
}
|
||||||
|
|
||||||
await logFloatingWindow('Disabled floating window in config due to error')
|
|
||||||
throw error
|
throw error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user