Hold Electron toasts until after the client starts (#30768) (#30769)

Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
ElementRobot
2025-09-16 12:05:08 +01:00
committed by GitHub
parent 2e8e6e92cc
commit 8d07e797c5
2 changed files with 21 additions and 3 deletions

View File

@@ -97,6 +97,7 @@ export default class ElectronPlatform extends BasePlatform {
private badgeOverlayRenderer?: BadgeOverlayRenderer;
private config!: IConfigOptions;
private supportedSettings?: Record<string, boolean>;
private clientStartedPromiseWithResolvers = Promise.withResolvers<void>();
public constructor() {
super();
@@ -184,7 +185,9 @@ export default class ElectronPlatform extends BasePlatform {
await this.ipc.call("callDisplayMediaCallback", source ?? { id: "", name: "", thumbnailURL: "" });
});
this.electron.on("showToast", (ev, { title, description, priority = 40 }) => {
this.electron.on("showToast", async (ev, { title, description, priority = 40 }) => {
await this.clientStartedPromiseWithResolvers.promise;
const key = uniqueId("electron_showToast_");
const onPrimaryClick = (): void => {
ToastStore.sharedInstance().dismissToast(key);
@@ -214,6 +217,10 @@ export default class ElectronPlatform extends BasePlatform {
if (["call_state"].includes(payload.action)) {
this.electron.send("app_onAction", payload);
}
if (payload.action === "client_started") {
this.clientStartedPromiseWithResolvers.resolve();
}
}
private async initialise(): Promise<void> {