diff --git a/packages/web3-providers/src/rss3/index.ts b/packages/web3-providers/src/rss3/index.ts index d7172e974f75..fcd78abe545b 100644 --- a/packages/web3-providers/src/rss3/index.ts +++ b/packages/web3-providers/src/rss3/index.ts @@ -1,10 +1,10 @@ import urlcat from 'urlcat' import RSS3 from 'rss3-next' import { RSS3_ENDPOINT } from './constants' -import { RSS3BaseAPI } from '../types' +import { NonFungibleTokenAPI, RSS3BaseAPI } from '../types' import { fetchJSON } from '../helpers' -export class RSS3API implements RSS3BaseAPI.Provider { +export class RSS3API implements RSS3BaseAPI.Provider, NonFungibleTokenAPI.Provider { createRSS3( address: string, sign: (message: string) => Promise = () => { @@ -62,11 +62,39 @@ export class RSS3API implements RSS3BaseAPI.Provider { }>(url) return rsp?.profile } - async getNFTs(address: string) { + async getAssets(address: string) { const url = urlcat(RSS3_ENDPOINT, '/assets/list', { personaID: address, type: RSS3BaseAPI.AssetType.NFT, }) - return fetchJSON(url) + + const { status, assets = [] } = await fetchJSON(url) + if (!status) return [] + return assets.map((asset) => { + return { + is_verified: false, + is_auction: false, + image_url: asset.info.image_preview_url ?? '', + asset_contract: null, + current_price: null, + current_symbol: '', + owner: null, + creator: null, + token_id: asset.id.substr(asset.id.lastIndexOf('-') + 1), + token_address: asset.id.substr(0, asset.id.indexOf('-')), + traits: [], + safelist_request_status: '', + description: '', + name: asset.info.title ?? '', + collection_name: asset.info.collection ?? '', + animation_url: asset.info.animation_url ?? '', + end_time: asset.info.end_date ? new Date(asset.info.end_date) : null, + order_payment_tokens: [], + offer_payment_tokens: [], + slug: null, + top_ownerships: [], + response_: asset, + } + }) } } diff --git a/packages/web3-providers/src/types.ts b/packages/web3-providers/src/types.ts index b082ff0d23df..d43e0c2548b9 100644 --- a/packages/web3-providers/src/types.ts +++ b/packages/web3-providers/src/types.ts @@ -84,7 +84,6 @@ export namespace RSS3BaseAPI { getFootprints(address: string): Promise getNameInfo(id: string): Promise getProfileInfo(address: string): Promise - getNFTs(address: string): Promise } } @@ -287,6 +286,7 @@ export namespace NonFungibleTokenAPI { opts?: Options, ) => Promise getCollections?: (address: string, opts?: Options) => Promise> + getAssets?: (address: string) => Promise } }