mirror of
https://github.com/hellodigua/ChatLab.git
synced 2026-04-23 01:39:37 +08:00
65 lines
2.5 KiB
TypeScript
65 lines
2.5 KiB
TypeScript
import { ElectronAPI } from '@electron-toolkit/preload'
|
|
import type {
|
|
AnalysisSession,
|
|
MemberActivity,
|
|
MemberNameHistory,
|
|
HourlyActivity,
|
|
DailyActivity,
|
|
WeekdayActivity,
|
|
MessageType,
|
|
ImportProgress,
|
|
RepeatAnalysis,
|
|
CatchphraseAnalysis,
|
|
NightOwlAnalysis,
|
|
DragonKingAnalysis,
|
|
DivingAnalysis,
|
|
} 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[]>
|
|
getWeekdayActivity: (sessionId: string, filter?: TimeFilter) => Promise<WeekdayActivity[]>
|
|
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>
|
|
getNightOwlAnalysis: (sessionId: string, filter?: TimeFilter) => Promise<NightOwlAnalysis>
|
|
getDragonKingAnalysis: (sessionId: string, filter?: TimeFilter) => Promise<DragonKingAnalysis>
|
|
getDivingAnalysis: (sessionId: string, filter?: TimeFilter) => Promise<DivingAnalysis>
|
|
}
|
|
|
|
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 }
|