feat: implement desktop authorization recovery handling and session management improvements
This commit is contained in:
@@ -39,6 +39,17 @@ interface WindowModeRequest {
|
||||
animate?: boolean
|
||||
}
|
||||
|
||||
interface DesktopAuthRecoveryRequest {
|
||||
reason: 'desktop-client-token-unauthorized'
|
||||
method: string
|
||||
path: string
|
||||
status: number
|
||||
code?: number
|
||||
message: string
|
||||
requestId: string
|
||||
at: number
|
||||
}
|
||||
|
||||
interface DesktopAppSettings {
|
||||
openAtLogin: boolean
|
||||
keepRunningInBackground: boolean
|
||||
@@ -243,10 +254,19 @@ const desktopBridge = {
|
||||
ipcRenderer.invoke(
|
||||
'desktop:runtime-session-rotate-client-token',
|
||||
) as Promise<DesktopClientRotateResponse>,
|
||||
releaseRuntimeSession: (revoke?: boolean) =>
|
||||
ipcRenderer.invoke('desktop:runtime-session-release', revoke) as Promise<null>,
|
||||
releaseRuntimeSession: (revoke?: boolean, options?: { skipRemote?: boolean }) =>
|
||||
ipcRenderer.invoke('desktop:runtime-session-release', revoke, options) as Promise<null>,
|
||||
setWindowMode: (mode: 'login' | 'main', request?: WindowModeRequest) =>
|
||||
ipcRenderer.invoke('desktop:set-window-mode', mode, request) as Promise<null>,
|
||||
onAuthRecoveryRequested: (listener: (event: DesktopAuthRecoveryRequest) => void) => {
|
||||
const wrapped = (_event: IpcRendererEvent, payload: DesktopAuthRecoveryRequest) => {
|
||||
listener(payload)
|
||||
}
|
||||
ipcRenderer.on('desktop:auth-recovery-requested', wrapped)
|
||||
return () => {
|
||||
ipcRenderer.off('desktop:auth-recovery-requested', wrapped)
|
||||
}
|
||||
},
|
||||
onRuntimeInvalidated: (
|
||||
listener: (event: {
|
||||
reason:
|
||||
|
||||
Reference in New Issue
Block a user