diff --git a/packages/mask/src/extension/background-script/EthereumServices/providers/Injected.ts b/packages/mask/src/extension/background-script/EthereumServices/providers/Injected.ts index aa8c515a37da..3408c63349ae 100644 --- a/packages/mask/src/extension/background-script/EthereumServices/providers/Injected.ts +++ b/packages/mask/src/extension/background-script/EthereumServices/providers/Injected.ts @@ -22,6 +22,7 @@ async function request(requestArguments: RequestArguments) { else resolve(result) } + setTimeout(() => reject(new Error('The request is timeout.')), 30 * 1000) EVM_Messages.events.INJECTED_PROVIDER_RPC_RESPONSE.on(onResponse) EVM_Messages.events.INJECTED_PROVIDER_RPC_REQUEST.sendToVisiblePages({ payload: { diff --git a/packages/mask/src/plugins/EVM/UI/components/InjectedProviderBridge.tsx b/packages/mask/src/plugins/EVM/UI/components/InjectedProviderBridge.tsx index cd5d5fb723f3..df28827d1f60 100644 --- a/packages/mask/src/plugins/EVM/UI/components/InjectedProviderBridge.tsx +++ b/packages/mask/src/plugins/EVM/UI/components/InjectedProviderBridge.tsx @@ -23,13 +23,11 @@ export function InjectedProviderBridge(props: InjectedProviderBridgeProps) { result, error: null, }) - } catch (error) { - if (error instanceof Error) { - EVM_Messages.events.INJECTED_PROVIDER_RPC_RESPONSE.sendToBackgroundPage({ - payload, - error, - }) - } + } catch (error: unknown) { + EVM_Messages.events.INJECTED_PROVIDER_RPC_RESPONSE.sendToBackgroundPage({ + payload, + error: error instanceof Error ? error : new Error(), + }) } }) }, []) diff --git a/packages/mask/src/plugins/EVM/messages.ts b/packages/mask/src/plugins/EVM/messages.ts index 6095e8a1cccc..60729f5efce6 100644 --- a/packages/mask/src/plugins/EVM/messages.ts +++ b/packages/mask/src/plugins/EVM/messages.ts @@ -1,4 +1,5 @@ import { createPluginMessage, createPluginRPC, PluginMessageEmitter } from '@masknet/plugin-infra' +import { serializer } from '@masknet/shared-base' import type { JsonRpcPayload } from 'web3-core-helpers' import { PLUGIN_ID } from './constants' @@ -17,6 +18,7 @@ export interface EVM_Messages { } export const EVM_Messages: { events: PluginMessageEmitter } = { - events: createPluginMessage(PLUGIN_ID), + events: createPluginMessage(PLUGIN_ID, serializer), } + export const EVM_RPC = createPluginRPC(PLUGIN_ID, () => import('./services'), EVM_Messages.events.rpc) diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/ConnectionProgress.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/ConnectionProgress.tsx index fcdc2055ea24..ba5cac5ef9f7 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/ConnectionProgress.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/ConnectWalletDialog/ConnectionProgress.tsx @@ -55,7 +55,7 @@ export function ConnectionProgress(props: ConnectionProgressProps) { ) : null} {!loading && error ? ( - {error.message ?? + {error.message || `Failed to connect to ${resolveCalculatedProviderName( providerType, injectedProviderType, diff --git a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx index 667d81385452..326fb43979e9 100644 --- a/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx +++ b/packages/mask/src/plugins/Wallet/SNSAdaptor/SelectProviderDialog/index.tsx @@ -226,7 +226,7 @@ function SelectProviderDialogUI(props: SelectProviderDialogUIProps) { const downloadLink = resolveInjectedProviderDownloadLink(expectedType) if (downloadLink) window.open(downloadLink, '_blank', 'noopener noreferrer') }, - [injectedProviderReady, injectedProviderType], + [injectedProviderReady, injectedProviderType, onConnectProvider], ) // not available for the native app