From 7b80b45c2cf5121ac58c303a24204853b85488f2 Mon Sep 17 00:00:00 2001 From: guanbinrui Date: Mon, 27 Jan 2025 15:15:42 +0800 Subject: [PATCH 1/3] chore: bump version to 2.31.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 825ab39e33f..ee42bc10f9d 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "yarn": ">=999.0.0", "npm": ">=999.0.0" }, - "version": "2.31.0", + "version": "2.31.1", "private": true, "license": "AGPL-3.0-or-later", "scripts": { From f684b2a5b313638a187f1a95e1b86ad1bd6a75f9 Mon Sep 17 00:00:00 2001 From: Wukong Sun Date: Wed, 29 Jan 2025 21:15:03 +0800 Subject: [PATCH 2/3] feat: add scroll scr token (#12082) --- .../web3-hooks/evm/src/useOKXTokenList.ts | 27 +++++++++++++++++-- .../src/Web3/Base/apis/HubFungible.ts | 5 ++-- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/packages/web3-hooks/evm/src/useOKXTokenList.ts b/packages/web3-hooks/evm/src/useOKXTokenList.ts index 8d5cde248ca..2dd0a3eb7ca 100644 --- a/packages/web3-hooks/evm/src/useOKXTokenList.ts +++ b/packages/web3-hooks/evm/src/useOKXTokenList.ts @@ -1,11 +1,34 @@ import { OKX } from '@masknet/web3-providers' -import type { ChainId } from '@masknet/web3-shared-evm' +import { TokenType, type FungibleToken } from '@masknet/web3-shared-base' +import { ChainId, SchemaType } from '@masknet/web3-shared-evm' import { skipToken, useQuery } from '@tanstack/react-query' export function useOKXTokenList(chainId: ChainId | undefined, enabled = true) { return useQuery({ enabled: enabled && !!chainId, queryKey: ['okx-tokens', chainId], - queryFn: chainId ? () => OKX.getTokens(chainId) : skipToken, + queryFn: + chainId ? + async () => { + const list = await OKX.getTokens(chainId) + if (chainId === ChainId.Scroll && list && !list.some((x) => x.symbol === 'SCR')) { + const scrAddr = '0xd29687c813D741E2F938F4aC377128810E217b1b' + const SCR_Token: FungibleToken = { + id: scrAddr, + chainId: ChainId.Scroll, + type: TokenType.Fungible, + schema: SchemaType.ERC20, + address: scrAddr, + symbol: 'SCR', + name: 'Scroll', + decimals: 18, + logoURL: + 'https://www.okx.com/cdn/web3/currency/token/small/534352-0xd29687c813d741e2f938f4ac377128810e217b1b-97?v=1738011884368', + } + return [...list, SCR_Token] + } + return list + } + : skipToken, }) } diff --git a/packages/web3-providers/src/Web3/Base/apis/HubFungible.ts b/packages/web3-providers/src/Web3/Base/apis/HubFungible.ts index dad4219d034..d0f4d313f61 100644 --- a/packages/web3-providers/src/Web3/Base/apis/HubFungible.ts +++ b/packages/web3-providers/src/Web3/Base/apis/HubFungible.ts @@ -27,12 +27,13 @@ export abstract class BaseHubFungible extends AbstractBaseH initial?: BaseHubOptions, ): Promise>> { const options = this.HubOptions.fill({ ...initial, chainId }) - const providers = this.getProvidersFungible(initial) + const allProviders = this.getProvidersFungible(initial) return queryClient.fetchQuery({ queryKey: ['get-fungible-token-list', options.chainId, initial], queryFn: async () => { + const providers = allProviders.filter((x) => x.getNonFungibleTokenList) return attemptUntil( - providers.map((x) => () => x.getFungibleTokenList?.(options.chainId)), + providers.map((x) => () => x.getFungibleTokenList!(options.chainId)), EMPTY_LIST, ) }, From cbd6351dedfe5b2caa70c9ba29c290dcbb686416 Mon Sep 17 00:00:00 2001 From: Wukong Sun Date: Fri, 31 Jan 2025 12:58:17 +0800 Subject: [PATCH 3/3] fix: hard code logo url for scr (#12084) --- .../web3-providers/src/Cloudflare/index.ts | 6 ++++ packages/web3-providers/src/types/Firefly.ts | 31 ++++++++++--------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/packages/web3-providers/src/Cloudflare/index.ts b/packages/web3-providers/src/Cloudflare/index.ts index 025e178fd98..c83ffe63b11 100644 --- a/packages/web3-providers/src/Cloudflare/index.ts +++ b/packages/web3-providers/src/Cloudflare/index.ts @@ -11,6 +11,12 @@ import type { TokenIconAPI } from '../entry-types.js' class CloudflareAPI implements TokenIconAPI.Provider { async getFungibleTokenIconURLs(chainId: ChainId, address: string): Promise { + // TODO hardcoded for SCR on Scroll chain + if (address.toLowerCase() === '0xd29687c813d741e2f938f4ac377128810e217b1b') { + return [ + 'https://www.okx.com/cdn/web3/currency/token/small/534352-0xd29687c813d741e2f938f4ac377128810e217b1b-97?v=1738011884368', + ] + } const { NATIVE_TOKEN_ASSET_BASE_URI = EMPTY_LIST, ERC20_TOKEN_ASSET_BASE_URI = EMPTY_LIST } = getTokenAssetBaseURLConstants(chainId) const formattedAddress = formatEthereumAddress(address) diff --git a/packages/web3-providers/src/types/Firefly.ts b/packages/web3-providers/src/types/Firefly.ts index 93800cee69c..03872bb2ef9 100644 --- a/packages/web3-providers/src/types/Firefly.ts +++ b/packages/web3-providers/src/types/Firefly.ts @@ -396,20 +396,23 @@ export namespace FireflyRedPacketAPI { [RedPacketNftMetaKey]?: object [SolanaRedPacketMetaKey]?: object } - redpacket: { - /** the same as meta */ - payload: object - canClaim: boolean - canRefund: boolean - canSend: boolean - isPasswordValid: boolean - isClaimed: boolean - isEmpty: boolean - isExpired: boolean - isRefunded: boolean - claimedNumber: number - claimedAmount: string - } | null + redpacket: + | { + /** the same as meta */ + payload: object + canClaim: boolean + canRefund: boolean + canSend: boolean + isPasswordValid: boolean + isClaimed: boolean + isEmpty: boolean + isExpired: boolean + isRefunded: boolean + claimedNumber: number + claimedAmount: string + } + // In the backend service, it would be null during fetching the redpacket info. + | null } export type ParseResponse = FireflyResponse