Files
daily_stock_analysis/apps/dsa-desktop/preload.js
zhulinsen 46d5bf3472 fix: 恢复桌面端报告分享图 (#2169)
* fix: enable desktop report share images

* fix: include default share image branding

* fix(review-feedback-2169): Keep custom branding paired with its QR code

* fix: show default share image nickname

* fix(review-feedback-2169): Document the atomic branding fallback

* fix(review-feedback-2169): Remove the hard-coded social account default

* fix(review-feedback-2169): Remove the bundled account QR fallback

* fix(review-feedback-2169): update docs/share-images

* fix(review-feedback-2169): [Verification blocker] 当前 Head 的阻断型 CI

* fix(review-feedback-2169): 补一条回归:用包含超长 fenced-code 行和超长原始 URL 的完整/通用报告分别走 build share image html
2026-08-09 13:53:00 +08:00

68 lines
2.2 KiB
JavaScript

const { contextBridge, ipcRenderer } = require('electron');
const DESKTOP_VERSION_ARG_PREFIX = '--dsa-desktop-version=';
const DESKTOP_GET_UPDATE_STATE_CHANNEL = 'desktop:get-update-state';
const DESKTOP_CHECK_FOR_UPDATES_CHANNEL = 'desktop:check-for-updates';
const DESKTOP_INSTALL_DOWNLOADED_UPDATE_CHANNEL = 'desktop:install-downloaded-update';
const DESKTOP_OPEN_RELEASE_PAGE_CHANNEL = 'desktop:open-release-page';
const DESKTOP_RENDER_SHARE_IMAGE_CHANNEL = 'desktop:render-share-image';
const DESKTOP_UPDATE_STATE_EVENT = 'desktop:update-state';
function readDesktopVersion(argv = process.argv) {
const versionArg = argv.find(
(value) => typeof value === 'string' && value.startsWith(DESKTOP_VERSION_ARG_PREFIX)
);
return versionArg ? versionArg.slice(DESKTOP_VERSION_ARG_PREFIX.length) : '';
}
function createDesktopBridge({
version = readDesktopVersion(),
renderer = ipcRenderer,
} = {}) {
return {
version,
getUpdateState() {
return renderer.invoke(DESKTOP_GET_UPDATE_STATE_CHANNEL);
},
checkForUpdates() {
return renderer.invoke(DESKTOP_CHECK_FOR_UPDATES_CHANNEL);
},
installDownloadedUpdate() {
return renderer.invoke(DESKTOP_INSTALL_DOWNLOADED_UPDATE_CHANNEL);
},
openReleasePage(releaseUrl) {
return renderer.invoke(DESKTOP_OPEN_RELEASE_PAGE_CHANNEL, releaseUrl);
},
renderShareImage(recordId) {
return renderer.invoke(DESKTOP_RENDER_SHARE_IMAGE_CHANNEL, recordId);
},
onUpdateStateChange(listener) {
if (typeof listener !== 'function') {
return () => undefined;
}
const handler = (_event, payload) => {
listener(payload);
};
renderer.on(DESKTOP_UPDATE_STATE_EVENT, handler);
return () => {
renderer.removeListener(DESKTOP_UPDATE_STATE_EVENT, handler);
};
},
};
}
contextBridge.exposeInMainWorld('dsaDesktop', createDesktopBridge());
module.exports = {
DESKTOP_CHECK_FOR_UPDATES_CHANNEL,
DESKTOP_GET_UPDATE_STATE_CHANNEL,
DESKTOP_INSTALL_DOWNLOADED_UPDATE_CHANNEL,
DESKTOP_OPEN_RELEASE_PAGE_CHANNEL,
DESKTOP_RENDER_SHARE_IMAGE_CHANNEL,
DESKTOP_UPDATE_STATE_EVENT,
DESKTOP_VERSION_ARG_PREFIX,
createDesktopBridge,
readDesktopVersion,
};