Files
ESH-Media/preload.js
eshmeshek 2857a40d1e feat: trusted-domains OAuth popups, og:image bookmark posters, periodic updater
- main.js: trusted-domains list with default Google/Yandex/GitHub/etc.;
  cross-domain confirmation skipped for trusted; setWindowOpenHandler
  returns action:'allow' for trusted so OAuth popups work (postMessage
  back to opener, popup self-closes). Fixes YouTube/Google login reset.
- main.js: get-page-meta IPC extracts og:image / twitter:image / JSON-LD
  image from current view; HDRezka also tries .b-sidecover img for hi-res.
- Header: bookmark button pulls og:image as poster and the page's title;
  duplicate detection switched from hostname to full URL so multiple
  movies from same site can coexist.
- BookmarksBar: site icon rendered next to source domain when distinct
  from poster; img onerror falls back to placeholder.
- Settings: trusted domains chip list with add/remove/reset.
- Updater: proper semver compare (only show if latest > current),
  direct installer URL detection per platform, hourly re-check.

Bookmark schema gains optional siteIcon; existing bookmarks remain valid.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 18:56:12 +03:00

34 lines
1.7 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('electron', {
createView: (name, url, imageUrl, zoom, useProxy) =>
ipcRenderer.send('create-view', name, url, imageUrl, zoom, useProxy),
confirm: (text, funcName) => ipcRenderer.send('confirm', text, funcName),
removeView: (name) => ipcRenderer.send('remove-view', name),
hideView: () => ipcRenderer.send('hide-view'),
showView: (name) => ipcRenderer.send('show-view', name),
adjustView: (expanded) => ipcRenderer.send('adjust-view', expanded),
on: (channel, func) => {
const listener = (_event, ...args) => func(...args);
ipcRenderer.on(channel, listener);
return () => ipcRenderer.removeListener(channel, listener);
},
handleAction: (action) => ipcRenderer.send('action', action),
setProxy: (host, port) => ipcRenderer.send('set-proxy', host, port),
expandWithHeader: () => ipcRenderer.send('expandWithHeader'),
collapseWithHeader: () => ipcRenderer.send('collapseWithHeader'),
backwardPage: () => ipcRenderer.send('backwardPage'),
forwardPage: () => ipcRenderer.send('forwardPage'),
refreshPage: () => ipcRenderer.send('refreshPage'),
getCurrentPage: () => ipcRenderer.invoke('get-current-page'),
getPageMeta: () => ipcRenderer.invoke('get-page-meta'),
readConfig: () => ipcRenderer.invoke('read-config'),
writeConfig: (data) => ipcRenderer.send('write-config', data),
searchMovies: (query, sites) => ipcRenderer.invoke('search-movies', query, sites),
searchTmdb: (query, apiKey) => ipcRenderer.invoke('search-tmdb', query, apiKey),
discoverTmdb: (params) => ipcRenderer.invoke('discover-tmdb', params),
toggleKiosk: () => ipcRenderer.invoke('toggle-kiosk'),
isKiosk: () => ipcRenderer.invoke('is-kiosk'),
});