import { contextBridge, ipcRenderer } from "electron"; console.log("setting PreLoad") contextBridge.exposeInMainWorld('electron', { login: (credentials: { email: string, password: string }) => ipcRenderer.invoke('login-request', credentials), logout: () => ipcRenderer.invoke('logout-request'), forgotPassword: (email: string) => ipcRenderer.invoke("forgot-password", email), getToken: (TOKEN_KEY: "ACCESS_TOKEN" | "REFRESH_TOKEN") => ipcRenderer.invoke('get-token', TOKEN_KEY), uploadScreenshot: () => ipcRenderer.invoke('upload-screenshot'), getActiveAppDetails: () => ipcRenderer.invoke('get-active-app'), toggleCloseBtn: (shouldEnable: boolean) => ipcRenderer.invoke('toggle-close-btn', shouldEnable), resizeWindow: (width: number, height: number) => ipcRenderer.invoke('resize-window', width, height), getProjectList: () => ipcRenderer.invoke("get-project-list"), getRunningApps: () => ipcRenderer.invoke('get-running-apps'), captureAppScreenShot: (appTitle: string): Promise => ipcRenderer.invoke('capture-specific-window', appTitle), onWindowUpdate: (callback) => ipcRenderer.on("window:updated", (_, data) => callback(data)), startProjectTracking: (data) => ipcRenderer.invoke("start-project-tracking", data), stopProjectTracking: (data) => ipcRenderer.invoke("stop-project-tracking", data), trackingTabsOpeningClosing: (data) => ipcRenderer.invoke("tracking-tabs-opening-and-closing", data), getProjectLogs: ( projectID: string, fromDate?: string, toDate?: string ) => ipcRenderer.invoke("get-project-logs", { projectID, fromDate, toDate }), getProfile: () => ipcRenderer.invoke("get-profile"), changePassword: (data: { oldPassword: string; password: string; cPassword: string }) => ipcRenderer.invoke("change-password", data), onTokenExpired: (callback) => { // Remove old listeners ipcRenderer.removeAllListeners("token-expired"); // Add single-use listener ipcRenderer.once("token-expired", () => { console.log("⚠️ Token expired event received in PRELOAD (ONE TIME)"); callback(); }); }, getProjectSummary: (projectId: string, date: string) => ipcRenderer.invoke("get-project-summary", { projectId, date }), createTimesheet: (data: any) => ipcRenderer.invoke('create-timesheet', data), createPTOAndSickLeaveRequest: (data) => ipcRenderer.invoke("create-leave-request", data), getSchedules: () => ipcRenderer.invoke("get-schedules"), getPayslips: (vaId: string) => ipcRenderer.invoke("get-payslips", vaId), } satisfies Window['electron']); // function ipcInvoke( // key: Key // ): Promise { // return ipcRenderer.invoke(key); // } // function ipcOn( // key: Key, // callback: (payload: EventPayloadMapping[Key]) => void // ) { // const cb = (_: Electron.IpcRendererEvent, payload: any) => callback(payload); // ipcRenderer.on(key, cb); // return () => ipcRenderer.off(key, cb); // } // function ipcSend( // key: Key, // payload: EventPayloadMapping[Key] // ) { // ipcRenderer.send(key, payload); // }