From 26dcdf61293754ffac28af37bd5a3fa8f2c51ef7 Mon Sep 17 00:00:00 2001 From: Guilherme Gazzo Date: Tue, 5 Apr 2022 00:26:03 -0300 Subject: [PATCH] fix issues related with multiple events attached (#2376) --- src/injected.ts | 8 ++++++++ src/preload.ts | 5 +++++ src/servers/preload/api.ts | 3 +++ src/ui/components/ServersView/ServerPane.tsx | 7 ++++--- 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/injected.ts b/src/injected.ts index 7f0049df19..bd118f0e5b 100644 --- a/src/injected.ts +++ b/src/injected.ts @@ -9,6 +9,7 @@ declare global { console.log('[Rocket.Chat Desktop] Injected.ts'); const start = (): void => { + console.log('[Rocket.Chat Desktop] Injected.ts start fired'); if (typeof window.require !== 'function') { console.log('[Rocket.Chat Desktop] window.require is not defined'); console.log('[Rocket.Chat Desktop] Inject start - retrying in 1 seconds'); @@ -20,9 +21,12 @@ const start = (): void => { window.require('/app/utils/rocketchat.info') ?? {}; if (!serverInfo.version) { + console.log('[Rocket.Chat Desktop] serverInfo.version is not defined'); return; } + console.log('[Rocket.Chat Desktop] Injected.ts serverInfo', serverInfo); + window.RocketChatDesktop.setServerInfo(serverInfo); const { Meteor } = window.require('meteor/meteor'); @@ -101,6 +105,8 @@ const start = (): void => { const destroyPromiseSymbol = Symbol('destroyPromise'); + console.log('[Rocket.Chat Desktop] Injected.ts replaced Notification'); + window.Notification = class RocketChatDesktopNotification extends EventTarget implements Notification @@ -229,4 +235,6 @@ const start = (): void => { }; }; +console.log('[Rocket.Chat Desktop] Injected'); + start(); diff --git a/src/preload.ts b/src/preload.ts index b7f49a5040..e256d5570a 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -23,9 +23,11 @@ declare global { contextBridge.exposeInMainWorld('JitsiMeetElectron', JitsiMeetElectron); const start = async (): Promise => { + console.log('[Rocket.Chat Desktop] preload.ts start'); const serverUrl = await invoke('server-view/get-url'); if (!serverUrl) { + console.log('[Rocket.Chat Desktop] preload.ts serverUrl is not defined'); return; } @@ -41,7 +43,9 @@ const start = async (): Promise => { await invoke('server-view/ready'); + console.log('[Rocket.Chat Desktop] waiting for RocketChatDesktop.onReady'); RocketChatDesktop.onReady(() => { + console.log('[Rocket.Chat Desktop] RocketChatDesktop.onReady fired'); listen( WEBVIEW_DID_NAVIGATE, debounce(() => { @@ -60,4 +64,5 @@ const start = async (): Promise => { }); }; +console.log('[Rocket.Chat Desktop] waiting for window load'); window.addEventListener('load', start); diff --git a/src/servers/preload/api.ts b/src/servers/preload/api.ts index d5587879bf..976e2879cc 100644 --- a/src/servers/preload/api.ts +++ b/src/servers/preload/api.ts @@ -44,6 +44,9 @@ export type RocketChatDesktopAPI = { export const RocketChatDesktop: RocketChatDesktopAPI = { onReady: (c) => { + if (serverInfo) { + c(serverInfo); + } cb = c; }, setServerInfo: (_serverInfo) => { diff --git a/src/ui/components/ServersView/ServerPane.tsx b/src/ui/components/ServersView/ServerPane.tsx index b7124ee815..c062fc09a7 100644 --- a/src/ui/components/ServersView/ServerPane.tsx +++ b/src/ui/components/ServersView/ServerPane.tsx @@ -58,10 +58,11 @@ export const ServerPane: FC = ({ e: 'did-attach' | 'dom-ready', cb: () => void ): void => { - webview.addEventListener(e, () => { + const handler = () => { cb(); - webview.removeEventListener(e, cb); - }); + webview.removeEventListener(e, handler); + }; + webview.addEventListener(e, handler); }; const handleAttachReady = (): void => {