From 3f2e1d1e308f2fc78430f6202eb1d92a1a9b54c4 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Mon, 2 Feb 2026 19:01:00 +0000 Subject: [PATCH] Upload preload.js via GUI --- preload.js | 67 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 19 deletions(-) diff --git a/preload.js b/preload.js index c31c2e3..e92714e 100644 --- a/preload.js +++ b/preload.js @@ -2,32 +2,39 @@ const { contextBridge, ipcRenderer } = require('electron'); contextBridge.exposeInMainWorld('electronAPI', { + // Lokale Datei-Operationen 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), writeFile: (data) => ipcRenderer.invoke('writeFile', data), deleteFile: (data) => ipcRenderer.invoke('deleteFile', data), + + // Gitea Datei-Operationen 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), readGiteaFile: (data) => ipcRenderer.invoke('read-gitea-file', data), writeGiteaFile: (data) => ipcRenderer.invoke('write-gitea-file', 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), + uploadLocalFolderToGitea: (data) => ipcRenderer.invoke('upload-local-folder-to-gitea', data), + + // Repository & Git Management + 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), uploadAndPush: (data) => ipcRenderer.invoke('upload-and-push', data), deleteGiteaRepo: (data) => ipcRenderer.invoke('delete-gitea-repo', data), + // Drag & Drop + prepareDownloadDrag: (data) => ipcRenderer.invoke('prepare-download-drag', data), + startNativeDrag: (filePath) => ipcRenderer.send('ondragstart', filePath), + // Release Management listReleases: (data) => ipcRenderer.invoke('list-releases', data), getRelease: (data) => ipcRenderer.invoke('get-release', data), @@ -52,20 +59,42 @@ contextBridge.exposeInMainWorld('electronAPI', { getLocalCommitDetails: (data) => ipcRenderer.invoke('get-local-commit-details', data), searchLocalCommits: (data) => ipcRenderer.invoke('search-local-commits', data), - // progress subscriptions + // === UPDATER APIs === + checkForUpdates: () => ipcRenderer.invoke('check-for-updates'), + getAppVersion: () => ipcRenderer.invoke('get-app-version'), + + // Triggert den tatsächlichen Download des Assets + // WICHTIG: Muss in renderer.js als window.electronAPI.startUpdateDownload(asset) aufgerufen werden + startUpdateDownload: (asset) => ipcRenderer.invoke('start-update-download', asset), + + // === Progress & Update Subscriptions === + onUpdateAvailable: (cb) => { + const listener = (event, info) => cb(info); + ipcRenderer.on('update-available', listener); + return () => ipcRenderer.removeListener('update-available', listener); + }, + + onUpdateProgress: (cb) => { + const listener = (event, percent) => cb(percent); + ipcRenderer.on('update-progress', listener); + return () => ipcRenderer.removeListener('update-progress', listener); + }, + onPushProgress: (cb) => { - ipcRenderer.on('push-progress', (event, percent) => { - try { cb(percent); } catch (_) {} - }); + const listener = (event, percent) => { try { cb(percent); } catch (_) {} }; + ipcRenderer.on('push-progress', listener); + return () => ipcRenderer.removeListener('push-progress', listener); }, + onFolderUploadProgress: (cb) => { - ipcRenderer.on('folder-upload-progress', (event, payload) => { - try { cb(payload); } catch (_) {} - }); + const listener = (event, payload) => { try { cb(payload); } catch (_) {} }; + ipcRenderer.on('folder-upload-progress', listener); + return () => ipcRenderer.removeListener('folder-upload-progress', listener); }, + onFolderDownloadProgress: (cb) => { - ipcRenderer.on('folder-download-progress', (event, payload) => { - try { cb(payload); } catch (_) {} - }); + const listener = (event, payload) => { try { cb(payload); } catch (_) {} }; + ipcRenderer.on('folder-download-progress', listener); + return () => ipcRenderer.removeListener('folder-download-progress', listener); } }); \ No newline at end of file