From f9d6f5f9c0ca51a4e17712c839e275673ec9ac09 Mon Sep 17 00:00:00 2001 From: Francis O'Brien <42175565+F-OBrien@users.noreply.github.com> Date: Mon, 12 Aug 2024 14:15:16 +0100 Subject: [PATCH] send ping before subscriptions (#1441) --- packages/extension-ui/src/Popup/index.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/extension-ui/src/Popup/index.tsx b/packages/extension-ui/src/Popup/index.tsx index b3a7dcc6..194d6a9d 100644 --- a/packages/extension-ui/src/Popup/index.tsx +++ b/packages/extension-ui/src/Popup/index.tsx @@ -14,7 +14,7 @@ import { settings } from '@polkadot/ui-settings'; import { AccountContext, ActionContext, AuthorizeReqContext, MediaContext, MetadataReqContext, SettingsContext, SigningReqContext } from '../components/contexts.js'; import { ErrorBoundary, Loading } from '../components/index.js'; import ToastProvider from '../components/Toast/ToastProvider.js'; -import { subscribeAccounts, subscribeAuthorizeRequests, subscribeMetadataRequests, subscribeSigningRequests } from '../messaging.js'; +import { ping, subscribeAccounts, subscribeAuthorizeRequests, subscribeMetadataRequests, subscribeSigningRequests } from '../messaging.js'; import { buildHierarchy } from '../util/buildHierarchy.js'; import Accounts from './Accounts/index.js'; import AccountManagement from './AuthManagement/AccountManagement.js'; @@ -98,12 +98,14 @@ export default function Popup (): React.ReactElement { ); useEffect((): void => { - Promise.all([ + // initially send a ping message to create a port that will be reused for subsequent + // messages. This ensure onConnect event is fired only once + ping().then(() => Promise.all([ subscribeAccounts(setAccounts), subscribeAuthorizeRequests(setAuthRequests), subscribeMetadataRequests(setMetaRequests), subscribeSigningRequests(setSignRequests) - ]).catch(console.error); + ])).catch(console.error); settings.on('change', (settings): void => { setSettingsCtx(settings);