// 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),
}));
