ff436704ec
- Settings now shows 'Biz Connect for Desktop · Version x.y.z' with a Check for updates button (desktop only, feature-detected). - preload exposes checkForUpdates(); main.js adds the check-updates IPC (returns available/current/dev/error) and, when a build finishes downloading, shows a Restart now / Later dialog instead of only the silent on-next-launch install. - desktop version bumped 0.1.4 -> 0.1.5. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
29 lines
1.7 KiB
JavaScript
29 lines
1.7 KiB
JavaScript
// Minimal, safe bridge into the web UI. Runs with contextIsolation, so it only exposes a
|
|
// frozen marker the web app can feature-detect against (e.g. to hide the PWA install prompt
|
|
// or prefer native push). No Node APIs are exposed to page JS.
|
|
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
// Pull the stable install id + version/os from main (synchronous, one-time at preload).
|
|
let info = { installId: '', appVersion: '', os: '' };
|
|
try { info = ipcRenderer.sendSync('get-install-info') || info; } catch (_) {}
|
|
|
|
contextBridge.exposeInMainWorld('__NATIVE__', 'desktop');
|
|
contextBridge.exposeInMainWorld('bizConnectNative', Object.freeze({
|
|
platform: 'desktop',
|
|
version: info.appVersion || '0.1.0',
|
|
installId: info.installId || '',
|
|
os: info.os || '',
|
|
// Bring the app window to the foreground (e.g. when a notification is clicked) — the web
|
|
// Notification's window.focus() can't raise an Electron window; the main process must.
|
|
focusApp: () => ipcRenderer.send('focus-window'),
|
|
// Show the unread-chat count as a badge on the taskbar icon. count=number of chats with
|
|
// unread; dataUrl=a small PNG badge the renderer drew (null to clear).
|
|
setUnread: (count, dataUrl) => ipcRenderer.send('set-unread', { count, dataUrl }),
|
|
// Native Windows toast with an inline reply box. Resolves to {text} (replied), {open} (clicked)
|
|
// or null. Lets the user reply to a chat straight from the notification.
|
|
replyNotify: (payload) => ipcRenderer.invoke('reply-notification', payload),
|
|
// Manual "Check for updates" from Settings. Resolves {status:'available'|'current'|'dev'|'error', version?}.
|
|
// On 'available' the shell downloads in the background and prompts to restart when ready.
|
|
checkForUpdates: () => ipcRenderer.invoke('check-updates'),
|
|
}));
|