This commit is contained in:
richarjiang
2026-07-15 17:12:04 +08:00
commit f8c8c688a1
26 changed files with 6789 additions and 0 deletions

27
src/preload/index.ts Normal file
View File

@@ -0,0 +1,27 @@
import { contextBridge, ipcRenderer } from 'electron'
import {
IPC_CHANNELS,
type AvailabilityQuery,
type CancelBookingInput,
type CreateBookingInput,
type TennisBookApi,
type UpdateCourtSettingsInput
} from '../shared/contracts'
const api: TennisBookApi = {
listCourts: () => ipcRenderer.invoke(IPC_CHANNELS.listCourts),
getAvailability: (query: AvailabilityQuery) =>
ipcRenderer.invoke(IPC_CHANNELS.getAvailability, query),
getCourtSettings: (courtId: string) =>
ipcRenderer.invoke(IPC_CHANNELS.getCourtSettings, courtId),
updateCourtSettings: (input: UpdateCourtSettingsInput) =>
ipcRenderer.invoke(IPC_CHANNELS.updateCourtSettings, input),
createBooking: (input: CreateBookingInput) =>
ipcRenderer.invoke(IPC_CHANNELS.createBooking, input),
cancelBooking: (input: CancelBookingInput) =>
ipcRenderer.invoke(IPC_CHANNELS.cancelBooking, input),
getPendingBooking: (courtId: string) =>
ipcRenderer.invoke(IPC_CHANNELS.getPendingBooking, courtId)
}
contextBridge.exposeInMainWorld('tennisBook', api)