Files
ChatLab/electron/preload/index.d.ts
2025-11-27 22:17:06 +08:00

57 lines
2.1 KiB
TypeScript

import { ElectronAPI } from '@electron-toolkit/preload'
import type {
AnalysisSession,
MemberActivity,
MemberNameHistory,
HourlyActivity,
DailyActivity,
MessageType,
ImportProgress,
RepeatAnalysis,
CatchphraseAnalysis,
} from '../../src/types/chat'
interface TimeFilter {
startTs?: number
endTs?: number
}
interface ChatApi {
selectFile: () => Promise<{ filePath?: string; format?: string; error?: string } | null>
import: (filePath: string) => Promise<{ success: boolean; sessionId?: string; error?: string }>
getSessions: () => Promise<AnalysisSession[]>
getSession: (sessionId: string) => Promise<AnalysisSession | null>
deleteSession: (sessionId: string) => Promise<boolean>
getAvailableYears: (sessionId: string) => Promise<number[]>
getMemberActivity: (sessionId: string, filter?: TimeFilter) => Promise<MemberActivity[]>
getMemberNameHistory: (sessionId: string, memberId: number) => Promise<MemberNameHistory[]>
getHourlyActivity: (sessionId: string, filter?: TimeFilter) => Promise<HourlyActivity[]>
getDailyActivity: (sessionId: string, filter?: TimeFilter) => Promise<DailyActivity[]>
getMessageTypeDistribution: (
sessionId: string,
filter?: TimeFilter
) => Promise<Array<{ type: MessageType; count: number }>>
getTimeRange: (sessionId: string) => Promise<{ start: number; end: number } | null>
getDbDirectory: () => Promise<string | null>
getSupportedFormats: () => Promise<Array<{ name: string; platform: string }>>
onImportProgress: (callback: (progress: ImportProgress) => void) => () => void
getRepeatAnalysis: (sessionId: string, filter?: TimeFilter) => Promise<RepeatAnalysis>
getCatchphraseAnalysis: (sessionId: string, filter?: TimeFilter) => Promise<CatchphraseAnalysis>
}
interface Api {
send: (channel: string, data?: unknown) => void
receive: (channel: string, func: (...args: unknown[]) => void) => void
removeListener: (channel: string, func: (...args: unknown[]) => void) => void
}
declare global {
interface Window {
electron: ElectronAPI
api: Api
chatApi: ChatApi
}
}
export { ChatApi, Api }