2026-03-05 12:01:06 +01:00
|
|
|
import { contextBridge, ipcRenderer } from "electron";
|
2026-03-05 09:44:31 +01:00
|
|
|
import { electronAPI } from "@electron-toolkit/preload";
|
|
|
|
|
|
|
|
|
|
// Custom APIs for renderer
|
2026-03-05 12:01:06 +01:00
|
|
|
const api = {
|
|
|
|
|
nfc: {
|
|
|
|
|
onTag: (callback: (event: { uid: string }) => void): void => {
|
|
|
|
|
ipcRenderer.on("nfc:tag", (_event, value) => callback(value));
|
|
|
|
|
},
|
|
|
|
|
onRemoved: (callback: (event: { uid: string }) => void): void => {
|
|
|
|
|
ipcRenderer.on("nfc:removed", (_event, value) => callback(value));
|
|
|
|
|
},
|
|
|
|
|
onError: (callback: (event: { message: string }) => void): void => {
|
|
|
|
|
ipcRenderer.on("nfc:error", (_event, value) => callback(value));
|
|
|
|
|
},
|
2026-03-11 17:29:01 +01:00
|
|
|
labelReq: (data: unknown): Promise<void> => {
|
|
|
|
|
return ipcRenderer.invoke("nfc:labelReq", data);
|
|
|
|
|
},
|
2026-03-05 12:01:06 +01:00
|
|
|
ping: (url: string): Promise<boolean> => {
|
|
|
|
|
return ipcRenderer.invoke("ping:url", url);
|
|
|
|
|
},
|
|
|
|
|
removeAllListeners: (): void => {
|
|
|
|
|
ipcRenderer.removeAllListeners("nfc:tag");
|
|
|
|
|
ipcRenderer.removeAllListeners("nfc:removed");
|
|
|
|
|
ipcRenderer.removeAllListeners("nfc:error");
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
};
|
2026-03-05 09:44:31 +01:00
|
|
|
|
|
|
|
|
// Use `contextBridge` APIs to expose Electron APIs to
|
|
|
|
|
// renderer only if context isolation is enabled, otherwise
|
|
|
|
|
// just add to the DOM global.
|
|
|
|
|
if (process.contextIsolated) {
|
|
|
|
|
try {
|
|
|
|
|
contextBridge.exposeInMainWorld("electron", electronAPI);
|
|
|
|
|
contextBridge.exposeInMainWorld("api", api);
|
|
|
|
|
} catch (error) {
|
|
|
|
|
console.error(error);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// @ts-ignore (define in dts)
|
|
|
|
|
window.electron = electronAPI;
|
|
|
|
|
// @ts-ignore (define in dts)
|
|
|
|
|
window.api = api;
|
|
|
|
|
}
|