mirror of
https://github.com/tiddly-gittly/TidGi-Desktop.git
synced 2025-12-06 02:30:47 -08:00
29 lines
1.4 KiB
TypeScript
29 lines
1.4 KiB
TypeScript
import { MetaDataChannel } from '@/constants/channels';
|
|
import { IPossibleWindowMeta, WindowMeta, WindowNames } from '@services/windows/WindowProperties';
|
|
import { contextBridge, ipcRenderer } from 'electron';
|
|
|
|
const metaDataArguments = process.argv
|
|
.filter((item) => item.startsWith(MetaDataChannel.browserViewMetaData))
|
|
.map((item) => item.replace(MetaDataChannel.browserViewMetaData, ''));
|
|
export const windowName = (metaDataArguments[0] as WindowNames) ?? WindowNames.main;
|
|
const extraMetaJSONString = decodeURIComponent(metaDataArguments[1] ?? '{}');
|
|
let extraMeta: WindowMeta[WindowNames] = {};
|
|
try {
|
|
extraMeta = JSON.parse(extraMetaJSONString) as WindowMeta[WindowNames];
|
|
} catch (error) {
|
|
console.error(
|
|
`Failed to parse extraMeta. ${(error as Error).message} extraMeta is ${extraMetaJSONString} and process.argv is ${JSON.stringify(process.argv)}`,
|
|
);
|
|
}
|
|
|
|
export let browserViewMetaData = { windowName, ...extraMeta };
|
|
contextBridge.exposeInMainWorld('meta', () => browserViewMetaData);
|
|
ipcRenderer.on(MetaDataChannel.getViewMetaData, (event, payload?: { ipcToken: string }) => {
|
|
ipcRenderer.send(`${MetaDataChannel.getViewMetaData}-${payload?.ipcToken ?? ''}`, browserViewMetaData);
|
|
});
|
|
/**
|
|
* Receive update or windowMeta from server service.
|
|
*/
|
|
ipcRenderer.on(MetaDataChannel.pushViewMetaData, (event, payload?: IPossibleWindowMeta) => {
|
|
browserViewMetaData = { ...browserViewMetaData, ...payload };
|
|
});
|