mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-04 04:04:44 -07:00
53 lines
2.2 KiB
TypeScript
53 lines
2.2 KiB
TypeScript
import { contextBridge, ipcRenderer, type IpcRendererEvent } from 'electron';
|
|
import type { KoboldAPI, AppAPI, UpdateInfo } from '../src/types/electron.js';
|
|
|
|
const koboldAPI: KoboldAPI = {
|
|
isInstalled: () => ipcRenderer.invoke('kobold:isInstalled'),
|
|
getInstalledVersion: () => ipcRenderer.invoke('kobold:getInstalledVersion'),
|
|
getInstalledVersions: () => ipcRenderer.invoke('kobold:getInstalledVersions'),
|
|
getCurrentVersion: () => ipcRenderer.invoke('kobold:getCurrentVersion'),
|
|
setCurrentVersion: (version: string) =>
|
|
ipcRenderer.invoke('kobold:setCurrentVersion', version),
|
|
getVersionFromBinary: (binaryPath: string) =>
|
|
ipcRenderer.invoke('kobold:getVersionFromBinary', binaryPath),
|
|
checkForUpdates: () => ipcRenderer.invoke('kobold:checkForUpdates'),
|
|
getLatestReleaseWithStatus: () =>
|
|
ipcRenderer.invoke('kobold:getLatestReleaseWithStatus'),
|
|
getROCmDownload: () => ipcRenderer.invoke('kobold:getROCmDownload'),
|
|
downloadROCm: () => ipcRenderer.invoke('kobold:downloadROCm'),
|
|
getLatestRelease: () => ipcRenderer.invoke('kobold:getLatestRelease'),
|
|
getAllReleases: () => ipcRenderer.invoke('kobold:getAllReleases'),
|
|
getPlatform: () => ipcRenderer.invoke('kobold:getPlatform'),
|
|
getCurrentInstallDir: () => ipcRenderer.invoke('kobold:getCurrentInstallDir'),
|
|
selectInstallDirectory: () =>
|
|
ipcRenderer.invoke('kobold:selectInstallDirectory'),
|
|
downloadRelease: (asset) =>
|
|
ipcRenderer.invoke('kobold:downloadRelease', asset),
|
|
launchKoboldCpp: (args) => ipcRenderer.invoke('kobold:launchKoboldCpp', args),
|
|
openInstallDialog: () => ipcRenderer.invoke('kobold:openInstallDialog'),
|
|
onDownloadProgress: (callback) => {
|
|
ipcRenderer.on(
|
|
'download-progress',
|
|
(_: IpcRendererEvent, progress: number) => callback(progress)
|
|
);
|
|
},
|
|
onUpdateAvailable: (callback) => {
|
|
ipcRenderer.on(
|
|
'update-available',
|
|
(_: IpcRendererEvent, updateInfo: UpdateInfo) => callback(updateInfo)
|
|
);
|
|
},
|
|
removeAllListeners: (channel) => {
|
|
ipcRenderer.removeAllListeners(channel);
|
|
},
|
|
};
|
|
|
|
const appAPI: AppAPI = {
|
|
getVersion: () => ipcRenderer.invoke('app:getVersion'),
|
|
openExternal: (url) => ipcRenderer.invoke('app:openExternal', url),
|
|
};
|
|
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
kobold: koboldAPI,
|
|
app: appAPI,
|
|
});
|