diff --git a/packages/icons/brands/X2Y2.svg b/packages/icons/brands/X2Y2.svg deleted file mode 100644 index fcf52da5940b..000000000000 --- a/packages/icons/brands/X2Y2.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/packages/icons/icon-generated-as-jsx.js b/packages/icons/icon-generated-as-jsx.js index e410ca933542..599689192651 100644 --- a/packages/icons/icon-generated-as-jsx.js +++ b/packages/icons/icon-generated-as-jsx.js @@ -638,11 +638,6 @@ export const WETH = /*#__PURE__*/ __createIcon('WETH', [ u: () => new URL('./brands/WETH.svg', import.meta.url).href, }, ]) -export const X2Y2 = /*#__PURE__*/ __createIcon('X2Y2', [ - { - u: () => new URL('./brands/X2Y2.svg', import.meta.url).href, - }, -]) export const XLog = /*#__PURE__*/ __createIcon('XLog', [ { u: () => new URL('./brands/XLog.svg', import.meta.url).href, diff --git a/packages/icons/icon-generated-as-url.js b/packages/icons/icon-generated-as-url.js index e6553edb637a..f44f406604e7 100644 --- a/packages/icons/icon-generated-as-url.js +++ b/packages/icons/icon-generated-as-url.js @@ -115,7 +115,6 @@ export function twitter_x_round_dark_url() { return new URL("./brands/TwitterXRo export function twitter_x_round_light_url() { return new URL("./brands/TwitterXRound.light.svg", import.meta.url).href } export function uniswap_url() { return new URL("./brands/Uniswap.svg", import.meta.url).href } export function weth_url() { return new URL("./brands/WETH.svg", import.meta.url).href } -export function x_2_y_2_url() { return new URL("./brands/X2Y2.svg", import.meta.url).href } export function x_log_dark_url() { return new URL("./brands/XLog.dark.svg", import.meta.url).href } export function x_log_url() { return new URL("./brands/XLog.svg", import.meta.url).href } export function you_tube_url() { return new URL("./brands/YouTube.svg", import.meta.url).href } diff --git a/packages/plugins/Collectible/src/SiteAdaptor/Shared/DetailsCard.tsx b/packages/plugins/Collectible/src/SiteAdaptor/Shared/DetailsCard.tsx index 6704c442184e..841da07d6fda 100644 --- a/packages/plugins/Collectible/src/SiteAdaptor/Shared/DetailsCard.tsx +++ b/packages/plugins/Collectible/src/SiteAdaptor/Shared/DetailsCard.tsx @@ -11,7 +11,6 @@ const PLATFORM_COSTS: { [k in SourceType]?: number } = { [SourceType.OpenSea]: 2.5, - [SourceType.X2Y2]: 0.5, [SourceType.LooksRare]: 2, } diff --git a/packages/plugins/Collectible/src/helpers/url.ts b/packages/plugins/Collectible/src/helpers/url.ts index 74a2078cef2e..5761abe073c6 100644 --- a/packages/plugins/Collectible/src/helpers/url.ts +++ b/packages/plugins/Collectible/src/helpers/url.ts @@ -93,15 +93,6 @@ const RULES = [ address: (matched: string) => matched.replace('zora', ZORA_COLLECTION_ADDRESS), }, - // x2y2 - { - hosts: ['x2y2.io'], - pathname: /^\/eth\/(0x[\dA-Fa-f]{40})\/(\d+)/, - pluginID: NetworkPluginID.PLUGIN_EVM, - chainId: ChainIdEVM.Mainnet, - provider: SourceType.X2Y2, - }, - // looksrare { hosts: ['looksrare.org'], diff --git a/packages/plugins/Collectible/tests/helpers.ts b/packages/plugins/Collectible/tests/helpers.ts index 150fdb8218b6..ae44b56a5817 100644 --- a/packages/plugins/Collectible/tests/helpers.ts +++ b/packages/plugins/Collectible/tests/helpers.ts @@ -85,18 +85,6 @@ describe('getPayloadFromURL', () => { }, }, - // x2y2 - { - give: 'https://x2y2.io/eth/0x6d19568A959FCB4211852F6472d3df7b67C6Cd54/332', - expected: { - pluginID: NetworkPluginID.PLUGIN_EVM, - chainId: ChainIdEVM.Mainnet, - address: '0x6d19568A959FCB4211852F6472d3df7b67C6Cd54', - tokenId: '332', - provider: SourceType.X2Y2, - }, - }, - // loosrare { give: 'https://looksrare.org/collections/0x60E4d786628Fea6478F785A6d7e704777c86a7c6/28850', diff --git a/packages/shared/src/UI/components/SourceProviderIcon/index.tsx b/packages/shared/src/UI/components/SourceProviderIcon/index.tsx index e39a1165af71..14bb4fcde767 100644 --- a/packages/shared/src/UI/components/SourceProviderIcon/index.tsx +++ b/packages/shared/src/UI/components/SourceProviderIcon/index.tsx @@ -13,7 +13,6 @@ const IconMap: Partial> = { [SourceType.CoinGecko]: Icons.CoinGecko, [SourceType.Uniswap]: Icons.Uniswap, [SourceType.LooksRare]: Icons.LooksRare, - [SourceType.X2Y2]: Icons.X2Y2, [SourceType.SimpleHash]: Icons.SimpleHash, } diff --git a/packages/shared/src/UI/components/SourceProviderSwitcher/index.tsx b/packages/shared/src/UI/components/SourceProviderSwitcher/index.tsx index a85c8b52d4ff..06cfa8cf8513 100644 --- a/packages/shared/src/UI/components/SourceProviderSwitcher/index.tsx +++ b/packages/shared/src/UI/components/SourceProviderSwitcher/index.tsx @@ -4,7 +4,7 @@ import { SourceType } from '@masknet/web3-shared-base' import { Stack } from '@mui/material' import { SourceProviderIcon } from '../index.js' -const sourceList = [SourceType.LooksRare, SourceType.OpenSea, SourceType.Rarible, SourceType.X2Y2] +const sourceList = [SourceType.LooksRare, SourceType.OpenSea, SourceType.Rarible] interface SourceProviderSwitcherProps { // default is all diff --git a/packages/web3-providers/src/Trending/constants.ts b/packages/web3-providers/src/Trending/constants.ts index ee7f285ff41a..5ca1f6634ab4 100644 --- a/packages/web3-providers/src/Trending/constants.ts +++ b/packages/web3-providers/src/Trending/constants.ts @@ -71,7 +71,6 @@ export const CURRENCIES_MAP: Record { | TokenListAPI.Provider >( { - [SourceType.X2Y2]: X2Y2.X2Y2, [SourceType.Chainbase]: ChainbaseNonFungibleToken.ChainbaseNonFungibleToken, [SourceType.Zerion]: ZerionNonFungibleToken.ZerionNonFungibleToken, [SourceType.NFTScan]: NFTScanNonFungibleTokenEVM.NFTScanNonFungibleTokenEVM, @@ -41,7 +39,6 @@ export class HubNonFungibleAPI extends BaseHubNonFungible { [ SimpleHashEVM.SimpleHashEVM, NFTScanNonFungibleTokenEVM.NFTScanNonFungibleTokenEVM, - X2Y2.X2Y2, ZerionNonFungibleToken.ZerionNonFungibleToken, AlchemyEVM.AlchemyEVM, Zora.Zora, diff --git a/packages/web3-providers/src/X2Y2/constants.ts b/packages/web3-providers/src/X2Y2/constants.ts deleted file mode 100644 index d4bc382811ac..000000000000 --- a/packages/web3-providers/src/X2Y2/constants.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const X2Y2_API_URL = 'https://x2y2-proxy.r2d2.to' -export const X2Y2_PAGE_SIZE = 20 diff --git a/packages/web3-providers/src/X2Y2/index.ts b/packages/web3-providers/src/X2Y2/index.ts deleted file mode 100644 index 8e1ff963ff4d..000000000000 --- a/packages/web3-providers/src/X2Y2/index.ts +++ /dev/null @@ -1,181 +0,0 @@ -import urlcat from 'urlcat' -import { first, last } from 'lodash-es' -import { - OrderSide, - type NonFungibleTokenOrder, - type NonFungibleTokenEvent, - type NonFungibleTokenContract, - SourceType, -} from '@masknet/web3-shared-base' -import { createPageable, createIndicator, createNextIndicator, EMPTY_LIST } from '@masknet/shared-base' -import { ChainId, createERC20Token, isZeroAddress, SchemaType } from '@masknet/web3-shared-evm' -import { EVMChainResolver } from '../Web3/EVM/apis/ResolverAPI.js' -import { X2Y2_API_URL, X2Y2_PAGE_SIZE } from './constants.js' -import type { Contract, Event, Order } from './types.js' -import { resolveActivityType } from '../helpers/resolveActivityType.js' -import { fetchSquashedJSON } from '../helpers/fetchJSON.js' -import type { BaseHubOptions, NonFungibleTokenAPI } from '../entry-types.js' - -async function fetchFromX2Y2(pathname: string) { - const response = await fetchSquashedJSON< - | { - success: boolean - next?: string - data?: T | null - } - | undefined - >(urlcat(X2Y2_API_URL, pathname)) - // The `undefined` can be given a default value when deconstructed, but `null` can't. - return response?.success ? ([response.data ?? undefined, response.next] as const) : EMPTY_LIST -} - -class X2Y2API implements NonFungibleTokenAPI.Provider { - createPermalink(address: string, tokenId: string) { - return urlcat('https://x2y2.io/eth/:contract/:tokenId', { - contract: address, - tokenId, - }) - } - createOrder(address: string, tokenId: string, order: Order): NonFungibleTokenOrder { - return { - id: order.item_hash, - chainId: ChainId.Mainnet, - assetPermalink: this.createPermalink(address, tokenId), - quantity: '1', - hash: order.item_hash, - side: order.type === 'buy' ? OrderSide.Buy : OrderSide.Sell, - maker: - order.maker ? - { - address: order.maker, - } - : undefined, - taker: - order.taker ? - { - address: order.taker, - } - : undefined, - createdAt: Number.parseInt(order.created_at, 10), - expiredAt: Number.parseInt(order.end_at, 10), - priceInToken: { - amount: order.price, - token: - isZeroAddress(order.currency) ? - EVMChainResolver.nativeCurrency(ChainId.Mainnet) - : createERC20Token(ChainId.Mainnet, order.currency), - }, - source: SourceType.X2Y2, - } - } - - createEvent(address: string, tokenId: string, event: Event): NonFungibleTokenEvent { - return { - id: event.id.toString(), - chainId: ChainId.Mainnet, - type: resolveActivityType(event.type), - assetPermalink: this.createPermalink(address, tokenId), - quantity: '1', - hash: event.order.item_hash, - from: { - address: event.from_address, - }, - to: { - address: event.to_address, - }, - timestamp: Number.parseInt(event.created_at, 10) * 1000, - paymentToken: - isZeroAddress(event.order.currency) ? - EVMChainResolver.nativeCurrency(ChainId.Mainnet) - : createERC20Token(ChainId.Mainnet, event.order.currency), - source: SourceType.X2Y2, - } - } - - createContract(address: string, contract: Contract): NonFungibleTokenContract { - return { - chainId: ChainId.Mainnet, - name: contract.name, - symbol: contract.symbol, - address, - schema: contract.erc_type === 721 ? SchemaType.ERC721 : SchemaType.ERC1155, - } - } - - async getOrders(address: string, tokenId: string, side: OrderSide, options?: BaseHubOptions) { - const [data = EMPTY_LIST, next] = await fetchFromX2Y2( - urlcat('/v1/orders', { - cursor: options?.indicator?.id, - contract: address, - token_id: tokenId, - sort: 'created_at', - direction: 'desc', - limit: X2Y2_PAGE_SIZE, - }), - ) - - const orders = data - .filter( - (x) => (x.type === 'sell' && side === OrderSide.Sell) || (x.type === 'buy' && side === OrderSide.Buy), - ) - .map((x) => this.createOrder(address, tokenId, x)) - - return createPageable( - orders, - createIndicator(options?.indicator), - orders.length && next ? createNextIndicator(options?.indicator, next) : undefined, - ) - } - async getEvents(address: string, tokenId: string, options?: BaseHubOptions) { - const cursors = options?.indicator?.id?.split('_') - const listCursor = first(cursors) - const saleCursor = last(cursors) - - const result = await Promise.all([ - listCursor || !options?.indicator?.index ? - fetchFromX2Y2( - urlcat('/v1/events', { - cursor: listCursor ?? '', - contract: address, - token_id: tokenId, - // list, sale, cancel_listing - type: 'list', - }), - ) - : EMPTY_LIST, - saleCursor || !options?.indicator?.index ? - fetchFromX2Y2( - urlcat('/v1/events', { - cursor: saleCursor ?? '', - contract: address, - token_id: tokenId, - // list, sale, cancel_listing - type: 'sale', - }), - ) - : EMPTY_LIST, - ]) - - const [[listData = EMPTY_LIST, listNext], [saleData = EMPTY_LIST, saleNext]] = result - const data = [...listData, ...saleData] - - const next = `${listNext}_${saleNext}` - const events = data.map((x) => this.createEvent(address, tokenId, x)) - - return createPageable( - events, - createIndicator(options?.indicator), - events.length && next ? createNextIndicator(options?.indicator, next) : undefined, - ) - } - async getContract(address: string) { - const [contract] = await fetchFromX2Y2( - urlcat('/v1/contracts/:contract', { - contract: address, - }), - ) - if (!contract) return - return this.createContract(address, contract) - } -} -export const X2Y2 = new X2Y2API() diff --git a/packages/web3-providers/src/X2Y2/types.ts b/packages/web3-providers/src/X2Y2/types.ts deleted file mode 100644 index f3d497948eed..000000000000 --- a/packages/web3-providers/src/X2Y2/types.ts +++ /dev/null @@ -1,53 +0,0 @@ -export interface Order { - maker: string - id: number - currency: string - taker?: string - price: string - created_at: string - item_hash: string - type: 'sell' | 'buy' - token: Token - is_collection_offer: boolean - end_at: string -} - -export interface Contract { - name: string - royalty_fee: number - nsfw: boolean - verified: boolean - erc_type: number - slug: string - contract: string - suspicious: boolean - symbol: string -} - -interface Token { - token_id: number - contract: string -} - -export interface Event { - from_address: string - id: number - order: { - maker: string - id: number - currency: string - taker?: string - price: string - created_at: string - item_hash: string - type: string - token: Token - is_collection_offer: false - end_at: string - } - tx?: string - created_at: string - to_address: string - type: 'offer_listing' - token: Token -} diff --git a/packages/web3-shared/base/src/helpers/resolver.ts b/packages/web3-shared/base/src/helpers/resolver.ts index 4755a631301d..046ab2b4232f 100644 --- a/packages/web3-shared/base/src/helpers/resolver.ts +++ b/packages/web3-shared/base/src/helpers/resolver.ts @@ -48,7 +48,6 @@ export const resolveSourceTypeName = createLookupTableResolver