Files
XCDesktop/electron/state.ts

69 lines
1.3 KiB
TypeScript
Raw Normal View History

2026-03-08 01:34:54 +08:00
import { BrowserWindow } from 'electron'
interface ElectronAppState {
mainWindow: BrowserWindow | null
serverPort: number
isDev: boolean
}
class ElectronState {
private state: ElectronAppState = {
mainWindow: null,
serverPort: 3001,
isDev: false,
}
private windows = new Map<number, BrowserWindow>()
2026-03-08 01:34:54 +08:00
getMainWindow(): BrowserWindow | null {
return this.state.mainWindow
}
setMainWindow(window: BrowserWindow | null): void {
this.state.mainWindow = window
}
getServerPort(): number {
return this.state.serverPort
}
setServerPort(port: number): void {
this.state.serverPort = port
}
isDevelopment(): boolean {
return this.state.isDev
}
setDevelopment(isDev: boolean): void {
this.state.isDev = isDev
}
addWindow(window: BrowserWindow): void {
this.windows.set(window.id, window)
}
removeWindow(id: number): void {
this.windows.delete(id)
}
getWindow(id: number): BrowserWindow | undefined {
return this.windows.get(id)
}
getAllWindows(): BrowserWindow[] {
return Array.from(this.windows.values())
}
2026-03-08 01:34:54 +08:00
reset(): void {
this.windows.clear()
2026-03-08 01:34:54 +08:00
this.state = {
mainWindow: null,
serverPort: 3001,
isDev: false,
}
}
}
export const electronState = new ElectronState()