From 765b2c1c66df9b9f4967dd7aace1d91b2d25a43d Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 14 Jun 2022 00:39:44 +0800 Subject: [PATCH 1/3] fix: bugfix for mask wallet --- .../plugin-infra/src/web3-state/Provider.ts | 2 +- .../src/web3/useFungibleAssets.ts | 6 ++- packages/plugins/EVM/src/state/Provider.ts | 38 ++++++++++++++++++- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/packages/plugin-infra/src/web3-state/Provider.ts b/packages/plugin-infra/src/web3-state/Provider.ts index bf6a8898ce01..fc9c1e5464b3 100644 --- a/packages/plugin-infra/src/web3-state/Provider.ts +++ b/packages/plugin-infra/src/web3-state/Provider.ts @@ -72,7 +72,7 @@ export class ProviderState< this.setupProviders() } - private setupSubscriptions() { + protected setupSubscriptions() { const site = this.site if (!site) return diff --git a/packages/plugin-infra/src/web3/useFungibleAssets.ts b/packages/plugin-infra/src/web3/useFungibleAssets.ts index c68fc1bfcf7a..9e93b328ec8d 100644 --- a/packages/plugin-infra/src/web3/useFungibleAssets.ts +++ b/packages/plugin-infra/src/web3/useFungibleAssets.ts @@ -31,6 +31,8 @@ export function useFungibleAssets>>(async () => { if (!account || !hub) return EMPTY_LIST @@ -45,6 +47,8 @@ export function useFungibleAssets x.schema === schemaType) : assets return filteredAssets @@ -95,5 +99,5 @@ export function useFungibleAssets { constructor(context: Plugin.Shared.SharedContext) { @@ -23,9 +24,42 @@ export class Provider extends ProviderState ChainId.Mainnet, getDefaultNetworkType: () => NetworkType.Ethereum, getDefaultProviderType: (site) => - site === ExtensionSite.Popup ? ProviderType.MaskWallet : ProviderType.None, + getEnumAsArray(ExtensionSite).some(({ value }) => value === site) + ? ProviderType.MaskWallet + : ProviderType.None, getNetworkTypeFromChainId: (chainId: ChainId) => chainResolver.chainNetworkType(chainId) ?? NetworkType.Ethereum, }) } + + override setupSubscriptions() { + const site = this.site + if (!site) return + + this.providerType = mapSubscription(this.storage.providers.subscription, (providers) => providers[site]) + + this.chainId = mapSubscription( + mergeSubscription(this.providerType, this.storage.accounts.subscription, this.context.chainId), + ([providerType, accounts, chainId]) => { + if (providerType === ProviderType.MaskWallet) return chainId + return accounts[providerType].chainId + }, + ) + this.account = mapSubscription( + mergeSubscription(this.providerType, this.storage.accounts.subscription, this.context.account), + ([providerType, accounts, maskAccount]) => { + if (providerType === ProviderType.MaskWallet) return maskAccount + + return accounts[providerType].account + }, + ) + this.networkType = mapSubscription( + mergeSubscription(this.providerType, this.storage.accounts.subscription, this.context.chainId), + ([providerType, accounts, chainId]) => { + if (providerType === ProviderType.MaskWallet) return this.options.getNetworkTypeFromChainId(chainId) + + return this.options.getNetworkTypeFromChainId(accounts[providerType].chainId) + }, + ) + } } From 3a4becfe3bcb56061675969ae262f4e04052f97a Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 14 Jun 2022 01:09:38 +0800 Subject: [PATCH 2/3] fix: add fallback empty array for debank and zerion --- packages/plugin-infra/src/web3/useFungibleAssets.ts | 5 +---- packages/web3-providers/src/debank/index.ts | 4 ++++ packages/web3-providers/src/helpers.ts | 8 ++++++++ packages/web3-providers/src/zerion/index.ts | 2 ++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/plugin-infra/src/web3/useFungibleAssets.ts b/packages/plugin-infra/src/web3/useFungibleAssets.ts index 9e93b328ec8d..9ad4595ab5c0 100644 --- a/packages/plugin-infra/src/web3/useFungibleAssets.ts +++ b/packages/plugin-infra/src/web3/useFungibleAssets.ts @@ -31,8 +31,6 @@ export function useFungibleAssets>>(async () => { if (!account || !hub) return EMPTY_LIST @@ -48,7 +46,6 @@ export function useFungibleAssets x.schema === schemaType) : assets return filteredAssets @@ -99,5 +96,5 @@ export function useFungibleAssets x.isMainnet).map((x) => ({ + ...createNativeToken(x.chainId), + balance: '0', + })) +} diff --git a/packages/web3-providers/src/zerion/index.ts b/packages/web3-providers/src/zerion/index.ts index 3c72631d0e69..1d782edd53a8 100644 --- a/packages/web3-providers/src/zerion/index.ts +++ b/packages/web3-providers/src/zerion/index.ts @@ -14,6 +14,7 @@ import type { } from './type' import { formatAssets, formatTransactions } from './format' import type { FungibleTokenAPI, HistoryAPI } from '../types' +import { getAllEVMNativeAssets } from '../helpers' const ZERION_API = 'wss://api-v4.zerion.io' // cspell:disable-next-line @@ -130,6 +131,7 @@ export class ZerionAPI result = [...result, ...assets.flat()] } + if (!result.length) return createPageable(getAllEVMNativeAssets(), createIndicator(options?.indicator)) return createPageable(result, createIndicator(options?.indicator)) } From f6fb33941560b69f731340f7dc928d5a0da80a16 Mon Sep 17 00:00:00 2001 From: nuanyang233 Date: Tue, 14 Jun 2022 01:17:47 +0800 Subject: [PATCH 3/3] fix: make offer only support mainnet --- .../plugins/Collectible/SNSAdaptor/OpenSea/ActionBar.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/mask/src/plugins/Collectible/SNSAdaptor/OpenSea/ActionBar.tsx b/packages/mask/src/plugins/Collectible/SNSAdaptor/OpenSea/ActionBar.tsx index dd1557b11135..cce3789f3c96 100644 --- a/packages/mask/src/plugins/Collectible/SNSAdaptor/OpenSea/ActionBar.tsx +++ b/packages/mask/src/plugins/Collectible/SNSAdaptor/OpenSea/ActionBar.tsx @@ -8,9 +8,10 @@ import { MakeOfferDialog } from './MakeOfferDialog' import { PostListingDialog } from './PostListingDialog' import { CheckoutDialog } from './CheckoutDialog' import { ChainBoundary } from '../../../../web3/UI/ChainBoundary' -import { useAccount, useChainId } from '@masknet/plugin-infra/web3' +import { useAccount } from '@masknet/plugin-infra/web3' import { isSameAddress, NetworkPluginID } from '@masknet/web3-shared-base' import { useAssetOrder } from '../../hooks/useAssetOrder' +import { ChainId } from '@masknet/web3-shared-evm' const useStyles = makeStyles()((theme) => { return { @@ -35,7 +36,6 @@ export function ActionBar(props: ActionBarProps) { const { classes } = useStyles() const { asset } = CollectibleState.useContainer() const account = useAccount(NetworkPluginID.PLUGIN_EVM) - const chainId = useChainId(NetworkPluginID.PLUGIN_EVM) const { value: assetOrder } = useAssetOrder(asset.value?.address, asset.value?.tokenId) const { @@ -54,7 +54,10 @@ export function ActionBar(props: ActionBarProps) { const isOwner = isSameAddress(asset.value.owner?.address, account) return ( - + {!isOwner && asset.value.auction ? (