mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Remove async getSubFrames and move sendToFrame loop
- getSubFrames never needed to be async and was needlessly converting it to an array - instead of relying on a bunch of promises that will get executed sometime in the future (after the current function ends). Which is a strange and unexpected use of the JS runtime behaviour. This makes it more explicit. Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
27439907b4
commit
a49127f182
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
import { ipcMain, ipcRenderer, webContents, remote } from "electron";
|
import { ipcMain, ipcRenderer, webContents, remote } from "electron";
|
||||||
import logger from "../main/logger";
|
import logger from "../main/logger";
|
||||||
import { ClusterFrameInfo, clusterFrameMap } from "./cluster-frames";
|
import { clusterFrameMap } from "./cluster-frames";
|
||||||
|
|
||||||
export function handleRequest(channel: string, listener: (...args: any[]) => any) {
|
export function handleRequest(channel: string, listener: (...args: any[]) => any) {
|
||||||
ipcMain.handle(channel, listener);
|
ipcMain.handle(channel, listener);
|
||||||
@ -14,38 +14,31 @@ export async function requestMain(channel: string, ...args: any[]) {
|
|||||||
return ipcRenderer.invoke(channel, ...args);
|
return ipcRenderer.invoke(channel, ...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getSubFrames(): Promise<ClusterFrameInfo[]> {
|
|
||||||
const subFrames: ClusterFrameInfo[] = [];
|
|
||||||
|
|
||||||
clusterFrameMap.forEach(frameInfo => {
|
|
||||||
subFrames.push(frameInfo);
|
|
||||||
});
|
|
||||||
|
|
||||||
return subFrames;
|
|
||||||
}
|
|
||||||
|
|
||||||
export function broadcastMessage(channel: string, ...args: any[]) {
|
export function broadcastMessage(channel: string, ...args: any[]) {
|
||||||
const views = (webContents || remote?.webContents)?.getAllWebContents();
|
const views = (webContents || remote?.webContents)?.getAllWebContents();
|
||||||
|
|
||||||
if (!views) return;
|
if (!views) return;
|
||||||
|
|
||||||
views.forEach(webContent => {
|
|
||||||
const type = webContent.getType();
|
|
||||||
|
|
||||||
logger.silly(`[IPC]: broadcasting "${channel}" to ${type}=${webContent.id}`, { args });
|
|
||||||
webContent.send(channel, ...args);
|
|
||||||
getSubFrames().then((frames) => {
|
|
||||||
frames.map((frameInfo) => {
|
|
||||||
webContent.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args);
|
|
||||||
});
|
|
||||||
}).catch((e) => e);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (ipcRenderer) {
|
if (ipcRenderer) {
|
||||||
ipcRenderer.send(channel, ...args);
|
ipcRenderer.send(channel, ...args);
|
||||||
} else {
|
} else {
|
||||||
ipcMain.emit(channel, ...args);
|
ipcMain.emit(channel, ...args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const view of views) {
|
||||||
|
const type = view.getType();
|
||||||
|
|
||||||
|
logger.silly(`[IPC]: broadcasting "${channel}" to ${type}=${view.id}`, { args });
|
||||||
|
view.send(channel, ...args);
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (const frameInfo of clusterFrameMap.values()) {
|
||||||
|
view.sendToFrame([frameInfo.processId, frameInfo.frameId], channel, ...args);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
logger.error("[IPC]: failed to send IPC message", { error });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function subscribeToBroadcast(channel: string, listener: (...args: any[]) => any) {
|
export function subscribeToBroadcast(channel: string, listener: (...args: any[]) => any) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user