From bc8215a23119d9a914480f642ed4cc0f9ee83f9d Mon Sep 17 00:00:00 2001 From: F-OBrien Date: Fri, 9 Aug 2024 09:49:05 +0100 Subject: [PATCH] send ping before subscriptions --- 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 b3a7dcc61d..194d6a9df9 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);