diff --git a/preload.js b/preload.js new file mode 100644 index 0000000..c028ece --- /dev/null +++ b/preload.js @@ -0,0 +1,44 @@ +// preload.js — expose IPC to renderer +const { contextBridge, ipcRenderer } = require('electron'); + +contextBridge.exposeInMainWorld('electronAPI', { + selectFolder: () => ipcRenderer.invoke('select-folder'), + selectFile: () => ipcRenderer.invoke('select-file'), + saveCredentials: (data) => ipcRenderer.invoke('save-credentials', data), + loadCredentials: () => ipcRenderer.invoke('load-credentials'), + createRepo: (data) => ipcRenderer.invoke('create-repo', data), + pushProject: (data) => ipcRenderer.invoke('push-project', data), + getBranches: (data) => ipcRenderer.invoke('getBranches', data), + getCommitLogs: (data) => ipcRenderer.invoke('getCommitLogs', data), + getFileTree: (data) => ipcRenderer.invoke('getFileTree', data), + readFile: (data) => ipcRenderer.invoke('readFile', data), + deleteFile: (data) => ipcRenderer.invoke('deleteFile', data), + listGiteaRepos: (data) => ipcRenderer.invoke('list-gitea-repos', data), + getGiteaRepoContents: (data) => ipcRenderer.invoke('get-gitea-repo-contents', data), + getGiteaFileContent: (data) => ipcRenderer.invoke('get-gitea-file-content', data), + uploadGiteaFile: (data) => ipcRenderer.invoke('upload-gitea-file', data), + uploadLocalFolderToGitea: (data) => ipcRenderer.invoke('upload-local-folder-to-gitea', data), + downloadGiteaFolder: (data) => ipcRenderer.invoke('download-gitea-folder', data), + downloadGiteaFile: (data) => ipcRenderer.invoke('download-gitea-file', data), + prepareDownloadDrag: (data) => ipcRenderer.invoke('prepare-download-drag', data), + startNativeDrag: (filePath) => ipcRenderer.send('ondragstart', filePath), + uploadAndPush: (data) => ipcRenderer.invoke('upload-and-push', data), + deleteGiteaRepo: (data) => ipcRenderer.invoke('delete-gitea-repo', data), + + // progress subscriptions + onPushProgress: (cb) => { + ipcRenderer.on('push-progress', (event, percent) => { + try { cb(percent); } catch (_) {} + }); + }, + onFolderUploadProgress: (cb) => { + ipcRenderer.on('folder-upload-progress', (event, payload) => { + try { cb(payload); } catch (_) {} + }); + }, + onFolderDownloadProgress: (cb) => { + ipcRenderer.on('folder-download-progress', (event, payload) => { + try { cb(payload); } catch (_) {} + }); + } +}); \ No newline at end of file