Files
prism/src/types/desktopIntegration.ts
T
2026-08-16 14:38:12 -04:00

75 lines
2.0 KiB
TypeScript

import type { RollingCaptureDurationSeconds } from './audioClip'
export type LoginLaunchMode = 'show' | 'tray'
export type LoginItemStatus =
| 'unavailable'
| 'disabled'
| 'enabled'
| 'requires-approval'
| 'blocked'
| 'error'
export interface DesktopIntegrationPreferences {
closeToTray: boolean
loginLaunchMode: LoginLaunchMode
}
export interface DesktopIntegrationSnapshot extends DesktopIntegrationPreferences {
openAtLogin: boolean
loginItemStatus: LoginItemStatus
loginItemError: string | null
}
export interface TrayProfileOption {
id: string
name: string
}
export interface TrayAudioSourceOption {
id: string
label: string
isDefault?: boolean
}
export interface TrayRendererState {
profiles: TrayProfileOption[]
activeProfileId: string | null
hasUnsavedProfileChanges: boolean
captureStatus: 'idle' | 'connecting' | 'capturing' | 'error'
activeSourceLabel: string | null
captureMode: 'system' | 'device'
selectedSystemSourceId: string | null
selectedDeviceId: string | null
rollingCaptureSeconds: RollingCaptureDurationSeconds | null
systemSources: TrayAudioSourceOption[]
inputSources: TrayAudioSourceOption[]
}
export type TrayRendererCommand =
| { type: 'load-profile'; profileId: string }
| { type: 'select-system-source'; sourceId: string }
| { type: 'select-input-source'; deviceId: string | null }
| { type: 'set-rolling-capture'; durationSeconds: RollingCaptureDurationSeconds | null }
| { type: 'set-capture-running'; running: boolean }
| { type: 'open-settings' }
export const DEFAULT_DESKTOP_INTEGRATION_PREFERENCES: DesktopIntegrationPreferences = {
closeToTray: false,
loginLaunchMode: 'show',
}
export const DEFAULT_TRAY_RENDERER_STATE: TrayRendererState = {
profiles: [],
activeProfileId: null,
hasUnsavedProfileChanges: false,
captureStatus: 'idle',
activeSourceLabel: null,
captureMode: 'system',
selectedSystemSourceId: null,
selectedDeviceId: null,
rollingCaptureSeconds: null,
systemSources: [],
inputSources: [],
}