Something went wrong. Try again.
A local-first note taking app
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142import { contextBridge, ipcRenderer } from 'electron';
contextBridge.exposeInMainWorld('textile', { platform: process.platform, onOpenSettings: (callback: () => void) => { const listener = () => callback(); ipcRenderer.on('app:open-settings', listener); return () => ipcRenderer.off('app:open-settings', listener); }, startHabitatLogin: (url: string, redirectUri: string) => ipcRenderer.invoke('auth:start-habitat-login', { redirectUri, url }), contextMenu: { show: (items: Array<{ id: string; label: string; type?: 'normal' | 'separator' }>) => ipcRenderer.invoke('context-menu:show', { items }), }, vault: { showOpenDialog: () => ipcRenderer.invoke('vault:show-open-dialog'), readdir: (dirPath: string) => ipcRenderer.invoke('vault:readdir', { dirPath }), readFile: (filePath: string) => ipcRenderer.invoke('vault:read-file', { filePath }), writeFile: (filePath: string, content: string) => ipcRenderer.invoke('vault:write-file', { filePath, content }), fileExists: (filePath: string) => ipcRenderer.invoke('vault:file-exists', { filePath }), mkdir: (dirPath: string) => ipcRenderer.invoke('vault:mkdir', { dirPath }), rename: (oldPath: string, newPath: string) => ipcRenderer.invoke('vault:rename', { oldPath, newPath }), delete: (filePath: string) => ipcRenderer.invoke('vault:delete', { filePath }), copyFile: (srcPath: string, destPath: string) => ipcRenderer.invoke('vault:copy-file', { srcPath, destPath }), }, subtext: { getFullState: (vaultPath: string) => ipcRenderer.invoke('subtext:get-full-state', { vaultPath }), applyUpdate: (vaultPath: string, update: Uint8Array) => ipcRenderer.invoke('subtext:apply-update', { vaultPath, update }), listFiles: () => ipcRenderer.invoke('subtext:list-files'), fileExists: (vaultPath: string) => ipcRenderer.invoke('subtext:file-exists', { vaultPath }), createFile: (vaultPath: string, initialState: Uint8Array) => ipcRenderer.invoke('subtext:create-file', { vaultPath, initialState }), renameFile: (oldVaultPath: string, newVaultPath: string) => ipcRenderer.invoke('subtext:rename-file', { oldVaultPath, newVaultPath }), status: () => ipcRenderer.invoke('subtext:status'), },});