Skip to content

Commit f38ad4e

Browse files
authored
refactor: remove NFT search from DSearch and NFT hover Web3 profile card (#12382)
- Remove NFT search capability from DSearch engine (NFTScan imports, handlers, rules) - Delete searchCollectionListByTwitterHandle method and NFT early-return - Delete MentionModifier component (NFT collection hover on @mentions) - Delete CollectionProjectAvatarBadge component - Simplify AvatarBadge to always use ProfileAvatarBadge - Remove isCollectionProjectPopper from entire TrendingView pipeline - Clean up NFT telemetry in SearchResultInspector - Remove NFT MSW handlers from vitest setup - Simplify Trader shouldDisplay to only FungibleToken - Clean up NonFungibleCollectionResult residual types in TagModifier and ProfileTab
1 parent 4558930 commit f38ad4e

26 files changed

Lines changed: 79 additions & 718 deletions

File tree

packages/mask/content-script/components/InjectedComponents/ProfileCard/ProfileBar.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ export const ProfileBar = memo<ProfileBarProps>(function ProfileBar({
207207
anchorBounding,
208208
anchorEl,
209209
type: TrendingAPI.TagType.HASH,
210-
isCollectionProjectPopper: true,
211210
currentResult,
212211
})
213212

packages/mask/content-script/components/InjectedComponents/SearchResultInspector.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,11 @@ export function SearchResultInspector(props: SearchResultInspectorProps) {
7373
useEffect(() => {
7474
if (profileTabType || !resultList?.length) return
7575
const type = resultList[0].type
76-
let timer1: NodeJS.Timeout | undefined
77-
let timer2: NodeJS.Timeout | undefined
78-
if (
79-
type === SearchResultType.CollectionListByTwitterHandle ||
80-
type === SearchResultType.NonFungibleCollection ||
81-
type === SearchResultType.NonFungibleToken
82-
)
83-
timer1 = setTimeout(() => Telemetry.captureEvent(EventType.Access, EventID.EntryTimelineDsearchNft), 500)
76+
let timer: NodeJS.Timeout | undefined
8477
if (type === SearchResultType.FungibleToken)
85-
timer2 = setTimeout(() => Telemetry.captureEvent(EventType.Access, EventID.EntryTimelineDsearchToken), 500)
78+
timer = setTimeout(() => Telemetry.captureEvent(EventType.Access, EventID.EntryTimelineDsearchToken), 500)
8679
return () => {
87-
timer1 && clearTimeout(timer1)
88-
timer2 && clearTimeout(timer2)
80+
timer && clearTimeout(timer)
8981
}
9082
}, [resultList, profileTabType])
9183

packages/mask/content-script/site-adaptors/twitter.com/customization/render-fragments.tsx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,7 @@ export const IMAGE_RENDER_IGNORE = 'IMAGE_RENDER_IGNORE'
1010
export const TwitterRenderFragments: RenderFragmentsContextType = {
1111
AtLink: memo(function (props) {
1212
const target = '/' + props.children.slice(1)
13-
const link = <Link href={target} children={props.children} fontSize="inherit" />
14-
const MentionModifier = useActivatedPluginsSiteAdaptor(false).find((x) => x.MentionModifier)?.MentionModifier
15-
if (!MentionModifier) return link
16-
return <MentionModifier {...props} href={target} fallback={link} />
13+
return <Link href={target} children={props.children} fontSize="inherit" />
1714
}),
1815
HashLink: memo(function (props) {
1916
const text = props.children.slice(1)

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { BooleanPreference, MaskMessages, PluginID, ProfileTabs } from '@masknet
66
import { makeStyles } from '@masknet/theme'
77
import type { Web3Helper } from '@masknet/web3-helpers'
88
import { useSnapshotSpacesByTwitterHandle } from '@masknet/web3-hooks-base'
9-
import type { FungibleTokenResult, NonFungibleCollectionResult } from '@masknet/web3-shared-base'
9+
import type { FungibleTokenResult } from '@masknet/web3-shared-base'
1010
import Color from 'color'
1111
import { useEffect, useRef, useState } from 'react'
1212
import { useAsync, useWindowSize } from 'react-use'
@@ -203,10 +203,8 @@ function ProfileTabForTokenAndPersona() {
203203
const currentVisitingUserId = currentVisitingSocialIdentity?.identifier?.userId
204204
const collectionList = useCollectionByTwitterHandle(currentVisitingUserId)
205205
const collectionResult = collectionList?.[0]
206-
const twitterHandle =
207-
(collectionResult as NonFungibleCollectionResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>)?.collection
208-
?.socialLinks?.twitter ||
209-
(collectionResult as FungibleTokenResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>)?.socialLinks?.twitter
206+
const twitterHandle = (collectionResult as FungibleTokenResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>)
207+
?.socialLinks?.twitter
210208
const { classes } = useStyles({
211209
minWidth:
212210
currentVisitingUserId && twitterHandle?.toLowerCase().endsWith(currentVisitingUserId.toLowerCase()) ?

packages/plugins/ProfileCard/src/SiteAdaptor/AvatarBadge/AvatarBadge.tsx

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,14 @@
1-
import { useCollectionByTwitterHandle } from '@masknet/shared'
21
import { NetworkPluginID, type SocialAccount, type SocialIdentity } from '@masknet/shared-base'
32
import type { Web3Helper } from '@masknet/web3-helpers'
43
import { Box, type IconButtonProps } from '@mui/material'
5-
import { CollectionProjectAvatarBadge } from './CollectionProjectAvatarBadge.js'
64
import { ProfileAvatarBadge } from './ProfileAvatarBadge.js'
75

86
interface Props extends IconButtonProps {
97
userId: string
108
identity?: SocialIdentity
119
socialAccounts?: Array<SocialAccount<Web3Helper.ChainIdAll>>
1210
}
13-
export function AvatarBadge({ userId, identity, socialAccounts }: Props) {
14-
const collectionList = useCollectionByTwitterHandle(userId)
15-
if (collectionList?.[0]) {
16-
return (
17-
<Box display="flex" alignItems="top" justifyContent="center">
18-
<div style={{ display: 'flex', alignItems: 'top', justifyContent: 'center' }}>
19-
<CollectionProjectAvatarBadge
20-
userId={userId}
21-
address={collectionList[0].address ?? ''}
22-
identity={identity}
23-
/>
24-
</div>
25-
</Box>
26-
)
27-
}
28-
11+
export function AvatarBadge({ userId, socialAccounts }: Props) {
2912
return socialAccounts?.filter((x) => x.pluginID === NetworkPluginID.PLUGIN_EVM).length ?
3013
<Box display="flex" alignItems="top" justifyContent="center">
3114
<div style={{ display: 'flex', alignItems: 'top', justifyContent: 'center' }}>

packages/plugins/ProfileCard/src/SiteAdaptor/AvatarBadge/CollectionProjectAvatarBadge.tsx

Lines changed: 0 additions & 63 deletions
This file was deleted.

packages/plugins/Trader/src/SiteAdaptor/components/MentionModifier.tsx

Lines changed: 0 additions & 79 deletions
This file was deleted.

packages/plugins/Trader/src/SiteAdaptor/components/TagModifier.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { makeStyles } from '@masknet/theme'
55
import type { Web3Helper } from '@masknet/web3-helpers'
66
import { DSearch } from '@masknet/web3-providers'
77
import { TrendingAPI } from '@masknet/web3-providers/types'
8-
import type { FungibleTokenResult, NonFungibleCollectionResult } from '@masknet/web3-shared-base'
8+
import type { FungibleTokenResult } from '@masknet/web3-shared-base'
99
import { Link } from '@mui/material'
1010
import { useQuery } from '@tanstack/react-query'
1111
import { memo, useRef, useState } from 'react'
@@ -28,9 +28,7 @@ const useStyles = makeStyles()(() => ({
2828
},
2929
}))
3030

31-
type TagSearchResult =
32-
| FungibleTokenResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>
33-
| NonFungibleCollectionResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>
31+
type TagSearchResult = FungibleTokenResult<Web3Helper.ChainIdAll, Web3Helper.SchemaTypeAll>
3432

3533
export const TagModifier = memo<PropsOf<Plugin.SiteAdaptor.Definition['TagModifier']>>(function TagModifier({
3634
children,

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import { ExchangeInjection } from './trader/ExchangeInjection.js'
1616
import { TrendingViewProvider } from './trending/context.js'
1717
import { TagInspector } from './trending/TagInspector.js'
1818
import { TrendingView } from './trending/TrendingView.js'
19-
import { MentionModifier } from './components/MentionModifier.js'
2019

2120
function openDialog() {
2221
return CrossIsolationMessages.events.swapDialogEvent.sendToLocal({
@@ -38,7 +37,6 @@ const site: Plugin.SiteAdaptor.Definition = {
3837
<Web3ContextProvider network={pluginID} chainId={chainId}>
3938
<TrendingViewProvider
4039
isDSearch={!isProfilePage}
41-
isCollectionProjectPopper={false}
4240
isProfilePage={!!isProfilePage}
4341
isTokenTagPopper={false}
4442
isPreciseSearch={EVMUtils.isValidAddress(keyword)}>
@@ -54,12 +52,7 @@ const site: Plugin.SiteAdaptor.Definition = {
5452
},
5553
Utils: {
5654
shouldDisplay(result) {
57-
return [
58-
SearchResultType.FungibleToken,
59-
SearchResultType.NonFungibleToken,
60-
SearchResultType.NonFungibleCollection,
61-
SearchResultType.CollectionListByTwitterHandle,
62-
].includes(result.type)
55+
return [SearchResultType.FungibleToken].includes(result.type)
6356
},
6457
},
6558
},
@@ -72,7 +65,6 @@ const site: Plugin.SiteAdaptor.Definition = {
7265
)
7366
},
7467
TagModifier,
75-
MentionModifier,
7668
ApplicationEntries:
7769
// temporarily disabled
7870
process.env.MASK_ENABLE_EXCHANGE ?

packages/plugins/Trader/src/SiteAdaptor/trending/NonFungibleTickersTable.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,8 @@ export function NonFungibleTickersTable({ id, chainId, result }: NonFungibleTick
124124
const theme = useTheme()
125125
const containerRef = useRef(null)
126126
const themeMode = useSiteThemeMode(theme)
127-
const { isCollectionProjectPopper, isTokenTagPopper } = useContext(TrendingViewContext)
128-
const { classes } = useStyles({ isPopper: isCollectionProjectPopper || isTokenTagPopper, themeMode })
127+
const { isTokenTagPopper } = useContext(TrendingViewContext)
128+
const { classes } = useStyles({ isPopper: isTokenTagPopper, themeMode })
129129
const Utils = useWeb3Utils(result.pluginID)
130130
const { activities, fetchActivities, loadingActivities } = useNonFungibleTokenActivities(
131131
result.pluginID,

0 commit comments

Comments
 (0)