Skip to content

Commit 32e7b98

Browse files
authored
fix: nft related issues (#12213)
* fix: mf-6697 report nft * fix: mf-6695 switch chain in sidebar * fix: mf-6696 load erc1155 * fix: tag image * fix: mf-6706 mf-6699 nftscan supported chains * fix: mf-6702 collectible plugin supports base chain * fix: mf-6701 magiceden offers * fix mf-6708 adjust collectible card style * fix: mf-6707 portal container
1 parent ec7edb3 commit 32e7b98

File tree

30 files changed

+169
-233
lines changed

30 files changed

+169
-233
lines changed

packages/mask/content-script/site-adaptors/twitter.com/injection/NFT/NFTAvatarEditProfile.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
1-
import { useEffect } from 'react'
1+
import Services from '#services'
22
import { MutationObserverWatcher } from '@dimensiondev/holoflows-kit'
3-
import { makeStyles } from '@masknet/theme'
43
import { NFTAvatarButton } from '@masknet/plugin-avatar'
54
import { ConnectPersonaBoundary } from '@masknet/shared'
6-
import { PluginID, CrossIsolationMessages, currentPersonaIdentifier } from '@masknet/shared-base'
5+
import { CrossIsolationMessages, currentPersonaIdentifier, PluginID } from '@masknet/shared-base'
76
import { useValueRef } from '@masknet/shared-base-ui'
8-
import { startWatch } from '../../../../utils/startWatch.js'
7+
import { makeStyles } from '@masknet/theme'
8+
import { useEffect } from 'react'
9+
import { usePersonasFromDB } from '../../../../../shared-ui/hooks/usePersonasFromDB.js'
10+
import { useLastRecognizedIdentity, useThemeSettings } from '../../../../components/DataSource/useActivatedUI.js'
911
import { attachReactTreeWithContainer } from '../../../../utils/shadow-root/renderInShadowRoot.js'
12+
import { startWatch } from '../../../../utils/startWatch.js'
13+
import { ButtonStyle, type ButtonProps } from '../../constant.js'
1014
import { searchEditProfileSelector } from '../../utils/selector.js'
1115
import { injectOpenNFTAvatarEditProfileButtonAtEditProfileDialog } from './NFTAvatarEditProfileDialog.js'
12-
import { ButtonStyle, type ButtonProps } from '../../constant.js'
13-
import { useLastRecognizedIdentity, useThemeSettings } from '../../../../components/DataSource/useActivatedUI.js'
14-
import { usePersonasFromDB } from '../../../../../shared-ui/hooks/usePersonasFromDB.js'
15-
import Services from '#services'
1616

1717
export function injectOpenNFTAvatarEditProfileButton(signal: AbortSignal) {
1818
injectOpenNFTAvatarEditProfileButtonAtProfilePage(signal)

packages/mask/dashboard/components/OutletPortal.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import { memo } from 'react'
33
import { useOutletContext } from 'react-router-dom'
44

55
export interface PortalContainerProps {
6-
portalContainerRef: React.RefObject<HTMLDivElement | null>
6+
portalContainer: HTMLDivElement | null
77
}
88

99
interface OutletPortalProps extends Omit<PortalProps, 'container'> {}
1010
export const OutletPortal = memo<OutletPortalProps>(function OutletPortal(props) {
11-
const { portalContainerRef } = useOutletContext<PortalContainerProps>()
12-
return <Portal container={() => portalContainerRef.current} {...props}></Portal>
11+
const { portalContainer } = useOutletContext<PortalContainerProps>()
12+
return <Portal container={portalContainer} {...props}></Portal>
1313
})

packages/mask/dashboard/pages/SetupPersona/Backup/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { Trans } from '@lingui/react/macro'
22
import { MaskTabList, makeStyles } from '@masknet/theme'
33
import { TabContext } from '@mui/lab'
44
import { Box, Tab, Typography } from '@mui/material'
5-
import { memo, useRef } from 'react'
5+
import { memo, useState } from 'react'
66
import { Outlet } from 'react-router-dom'
77
import { StorageType } from '../types.js'
88
import { usePathTab, type TabPathTuple } from '@masknet/shared'
@@ -59,7 +59,7 @@ export const Component = memo(function Backup() {
5959

6060
const [tab, handleTabChange] = usePathTab(tuples)
6161

62-
const portalContainerRef = useRef<HTMLDivElement>(null)
62+
const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null)
6363

6464
return (
6565
<Box>
@@ -90,10 +90,10 @@ export const Component = memo(function Backup() {
9090
</TabContext>
9191
</div>
9292
<div className={classes.panelContainer}>
93-
<Outlet context={{ portalContainerRef }} />
93+
<Outlet context={{ portalContainer }} />
9494
</div>
9595
</Box>
96-
<Box className={classes.exclaveActions} ref={portalContainerRef}></Box>
96+
<div className={classes.exclaveActions} ref={setPortalContainer} />
9797
</Box>
9898
)
9999
})

packages/mask/dashboard/pages/SetupPersona/Recovery/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { DashboardRoutes } from '@masknet/shared-base'
44
import { MaskTabList, makeStyles } from '@masknet/theme'
55
import { TabContext } from '@mui/lab'
66
import { Box, Tab, Typography } from '@mui/material'
7-
import { memo, useRef } from 'react'
7+
import { memo, useState } from 'react'
88
import { Link, Outlet } from 'react-router-dom'
99
import { RecoveryMethod } from './types.js'
1010

@@ -77,7 +77,7 @@ export const Component = memo(function Recovery() {
7777

7878
const [tab, handleTabChange] = usePathTab(tuples)
7979

80-
const portalContainerRef = useRef<HTMLDivElement>(null)
80+
const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null)
8181

8282
return (
8383
<Box className={classes.container}>
@@ -122,10 +122,10 @@ export const Component = memo(function Recovery() {
122122
</TabContext>
123123
</div>
124124
<div className={classes.panelContainer}>
125-
<Outlet context={{ portalContainerRef }} />
125+
<Outlet context={{ portalContainer }} />
126126
</div>
127127
</Box>
128-
<Box className={classes.exclaveActions} ref={portalContainerRef}></Box>
128+
<div className={classes.exclaveActions} ref={setPortalContainer} />
129129
</Box>
130130
)
131131
})

packages/mask/popups/components/TokenPicker/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,6 @@ export const TokenPicker = memo(function TokenPicker({
201201
networks={filteredNetworks}
202202
pluginID={NetworkPluginID.PLUGIN_EVM}
203203
chainId={sidebarChainId}
204-
hideAllButton
205204
onChainChange={handleChainChange}
206205
/>
207206
: null}

packages/mask/popups/pages/Wallet/AddToken/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,6 @@ export const Component = memo(function AddToken() {
163163
<div className={classes.content}>
164164
<SelectNetworkSidebar
165165
className={classes.sidebar}
166-
hideAllButton
167166
chainId={chainId}
168167
onChainChange={(chainId) => setChainId(chainId ?? ChainId.Mainnet)}
169168
networks={allNetworks}

packages/mask/popups/pages/Wallet/components/WalletAssets/WalletCollections.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export const WalletCollections = memo(function WalletCollections({ onAddToken, s
116116
ref={ref}
117117
classes={{ grid: classes.grid }}
118118
gridProps={gridProps}
119-
disableSidebar
119+
disableSidebar={false}
120120
disableWindowScroll
121121
scrollElementRef={scrollTargetRef}
122122
emptyText={collectiblesEmptyText}

packages/plugins/Collectible/src/SiteAdaptor/Card/CollectibleCard.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ const useStyles = makeStyles()((theme) => {
1717
overContent: {
1818
backgroundColor: theme.palette.maskColor.white,
1919
boxSizing: 'border-box',
20+
paddingBottom: '16px !important',
2021
},
2122
}
2223
})

packages/plugins/Collectible/src/SiteAdaptor/Card/tabs/AboutTab.tsx

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,14 @@ import { FigureCard } from '../../Shared/FigureCard.js'
99
import { PriceCard } from '../../Shared/PriceCard.js'
1010
import { CollectibleCard } from '../CollectibleCard.js'
1111

12-
const useStyles = makeStyles<{ hidePriceCard: boolean }>()((theme, { hidePriceCard }) => ({
12+
const useStyles = makeStyles()((theme) => ({
1313
body: {
1414
display: 'flex',
1515
flexDirection: 'column',
1616
alignItems: 'center',
17+
gap: theme.spacing(2),
1718
minHeight: 300,
1819
},
19-
basic: {
20-
width: '100%',
21-
marginBottom: hidePriceCard ? 0 : 16,
22-
},
2320
}))
2421

2522
const resolveTopListing = (orders: Array<NonFungibleTokenOrder<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>>) => {
@@ -40,10 +37,9 @@ interface AboutTabProps {
4037

4138
export function AboutTab(props: AboutTabProps) {
4239
const { asset, isLoading } = props
43-
const { orders, offers, sourceType } = Context.useContainer()
40+
const { offers } = Context.useContainer()
4441
const topListing = useMemo(() => resolveTopListing(offers), [offers])
45-
const hidePriceCard = !topListing && Boolean(orders.error) && !sourceType
46-
const { classes } = useStyles({ hidePriceCard })
42+
const { classes } = useStyles()
4743

4844
if (isLoading || !asset)
4945
return (
@@ -56,9 +52,7 @@ export function AboutTab(props: AboutTabProps) {
5652
return (
5753
<CollectibleCard>
5854
<div className={classes.body}>
59-
<div className={classes.basic}>
60-
<FigureCard hideSubTitle asset={asset} />
61-
</div>
55+
<FigureCard hideSubTitle asset={asset} />
6256
<PriceCard topListing={topListing} />
6357
</div>
6458
</CollectibleCard>

packages/plugins/Collectible/src/SiteAdaptor/index.tsx

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Trans } from '@lingui/react/macro'
12
import { Icons } from '@masknet/icons'
23
import { usePluginWrapper, usePostInfoDetails, type Plugin } from '@masknet/plugin-infra/content-script'
34
import { CollectionList, UserAssetsProvider } from '@masknet/shared'
@@ -6,7 +7,9 @@ import { makeStyles } from '@masknet/theme'
67
import { extractTextFromTypedMessage } from '@masknet/typed-message'
78
import type { Web3Helper } from '@masknet/web3-helpers'
89
import { Web3ContextProvider } from '@masknet/web3-hooks-base'
10+
import { NFTSCAN_CHAIN_IDS } from '@masknet/web3-providers'
911
import { SearchResultType } from '@masknet/web3-shared-base'
12+
import type { ChainId } from '@masknet/web3-shared-evm'
1013
import { Telemetry } from '@masknet/web3-telemetry'
1114
import { EventID, EventType } from '@masknet/web3-telemetry/types'
1215
import { Box } from '@mui/material'
@@ -16,7 +19,6 @@ import { PLUGIN_ID, PLUGIN_NAME } from '../constants.js'
1619
import { getPayloadFromURLs } from '../helpers/index.js'
1720
import { DialogInspector } from './DialogInspector.js'
1821
import { PostInspector } from './PostInspector.js'
19-
import { Trans } from '@lingui/react/macro'
2022

2123
function useInspectCollectible(pluginID?: NetworkPluginID) {
2224
return useCallback(
@@ -89,13 +91,19 @@ const site: Plugin.SiteAdaptor.Definition = {
8991
GlobalInjection() {
9092
return <DialogInspector />
9193
},
92-
PostInspector() {
94+
PostInspector: function CollectiblePostInspector() {
9395
const links = usePostInfoDetails.mentionedLinks()
9496
const payload = getPayloadFromURLs(links)
95-
usePluginWrapper(!!payload)
96-
return payload ? <PostInspector payload={payload} /> : null
97+
console.log({ payload, links }, ...links)
98+
const isSupported =
99+
payload?.chainId ?
100+
NFTSCAN_CHAIN_IDS.includes(payload.chainId as ChainId) ||
101+
payload.pluginID === NetworkPluginID.PLUGIN_SOLANA
102+
: false
103+
usePluginWrapper(isSupported)
104+
return isSupported && payload ? <PostInspector payload={payload} /> : null
97105
},
98-
DecryptedInspector(props) {
106+
DecryptedInspector: function CollectibleDecryptedInspector(props) {
99107
const links = parseURLs(extractTextFromTypedMessage(props.message, { linkAsText: true }).unwrapOr(''))
100108
const payload = getPayloadFromURLs(links)
101109
usePluginWrapper(!!payload)

0 commit comments

Comments
 (0)