- Restore transfer-tab-data IPC for transferring tab state - Create usePopOutTab hook to receive tab data in new window - Update handlePopOut to transfer data and close tab in main window - Add PopOutTabData interface for type safety
68 lines
4.4 KiB
TypeScript
68 lines
4.4 KiB
TypeScript
import { contextBridge, ipcRenderer } from 'electron'
|
|
|
|
console.log('--- PRELOAD SCRIPT LOADED SUCCESSFULLY ---')
|
|
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
exportPDF: (title: string, htmlContent?: string) => ipcRenderer.invoke('export-pdf', title, htmlContent),
|
|
selectHtmlFile: () => ipcRenderer.invoke('select-html-file'),
|
|
updateTitlebarButtons: (symbolColor: string) => ipcRenderer.invoke('update-titlebar-buttons', symbolColor),
|
|
onRemoteClipboardSyncToRemote: (callback: () => void) => {
|
|
ipcRenderer.on('remote-clipboard-sync-to-remote', callback);
|
|
return () => ipcRenderer.removeListener('remote-clipboard-sync-to-remote', callback);
|
|
},
|
|
onRemoteClipboardSyncFromRemote: (callback: () => void) => {
|
|
ipcRenderer.on('remote-clipboard-sync-from-remote', callback);
|
|
return () => ipcRenderer.removeListener('remote-clipboard-sync-from-remote', callback);
|
|
},
|
|
onRemoteClipboardAutoSync: (callback: (text: string) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, text: string) => callback(text);
|
|
ipcRenderer.on('remote-clipboard-auto-sync', handler);
|
|
return () => ipcRenderer.removeListener('remote-clipboard-auto-sync', handler);
|
|
},
|
|
onDownloadProgress: (callback: (data: { progress: number; id: string }) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, data: { progress: number; id: string }) => callback(data);
|
|
ipcRenderer.on('download-progress', handler);
|
|
return () => ipcRenderer.removeListener('download-progress', handler);
|
|
},
|
|
onUploadProgress: (callback: (data: { progress: number; id: string }) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, data: { progress: number; id: string }) => callback(data);
|
|
ipcRenderer.on('upload-progress', handler);
|
|
return () => ipcRenderer.removeListener('upload-progress', handler);
|
|
},
|
|
clipboardReadText: () => ipcRenderer.invoke('clipboard-read-text'),
|
|
clipboardWriteText: (text: string) => ipcRenderer.invoke('clipboard-write-text', text),
|
|
remoteFetchDrives: (serverHost: string, port: number, password?: string) =>
|
|
ipcRenderer.invoke('remote-fetch-drives', serverHost, port, password),
|
|
remoteFetchFiles: (serverHost: string, port: number, filePath: string, password?: string) =>
|
|
ipcRenderer.invoke('remote-fetch-files', serverHost, port, filePath, password),
|
|
remoteUploadFile: (id: string, serverHost: string, port: number, filePath: string, remotePath: string, password?: string) =>
|
|
ipcRenderer.invoke('remote-upload-file', id, serverHost, port, filePath, remotePath, password),
|
|
remoteDownloadFile: (id: string, serverHost: string, port: number, fileName: string, remotePath: string, localPath: string, password?: string) =>
|
|
ipcRenderer.invoke('remote-download-file', id, serverHost, port, fileName, remotePath, localPath, password),
|
|
opencodeStartServer: () => ipcRenderer.invoke('opencode-start-server'),
|
|
opencodeStopServer: () => ipcRenderer.invoke('opencode-stop-server'),
|
|
xcOpenCodeWebStart: () => ipcRenderer.invoke('xc-opencode-web-start'),
|
|
xcOpenCodeWebStop: () => ipcRenderer.invoke('xc-opencode-web-stop'),
|
|
xcOpenCodeWebGetStatus: () => ipcRenderer.invoke('xc-opencode-web-get-status'),
|
|
xcOpenCodeWebGetPort: () => ipcRenderer.invoke('xc-opencode-web-get-port'),
|
|
sddStart: () => ipcRenderer.invoke('sdd-start'),
|
|
sddStop: () => ipcRenderer.invoke('sdd-stop'),
|
|
sddGetStatus: () => ipcRenderer.invoke('sdd-get-status'),
|
|
sddGetPort: () => ipcRenderer.invoke('sdd-get-port'),
|
|
terminalStart: () => ipcRenderer.invoke('terminal-start'),
|
|
terminalStop: () => ipcRenderer.invoke('terminal-stop'),
|
|
terminalGetStatus: () => ipcRenderer.invoke('terminal-get-status'),
|
|
terminalGetPort: () => ipcRenderer.invoke('terminal-get-port'),
|
|
createWindow: (tabData: { route: string; title: string }) => ipcRenderer.invoke('create-window', tabData),
|
|
transferTabData: (windowId: number, tabData: any) => ipcRenderer.invoke('transfer-tab-data', windowId, tabData),
|
|
onTabDataReceived: (callback: (tabData: any) => void) => {
|
|
const handler = (_event: Electron.IpcRendererEvent, tabData: any) => callback(tabData);
|
|
ipcRenderer.on('tab-data-received', handler);
|
|
return () => ipcRenderer.removeListener('tab-data-received', handler);
|
|
},
|
|
windowMinimize: () => ipcRenderer.invoke('window-minimize'),
|
|
windowMaximize: () => ipcRenderer.invoke('window-maximize'),
|
|
windowClose: () => ipcRenderer.invoke('window-close'),
|
|
windowIsMaximized: () => ipcRenderer.invoke('window-is-maximized'),
|
|
})
|