diff --git a/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTAvatarRing.tsx b/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTAvatarRing.tsx
index bd20c64ce021..e54532753bbf 100644
--- a/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTAvatarRing.tsx
+++ b/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTAvatarRing.tsx
@@ -11,21 +11,21 @@ interface NFTAvatarRingProps {
strokeWidth: number
fontSize: number
text: string
+ price: string
width: number
id: string
}
export function NFTAvatarRing(props: NFTAvatarRingProps) {
const { classes } = useStyles()
- const { stroke, strokeWidth, fontSize, text, width, id } = props
+ const { stroke, strokeWidth, fontSize, text, width, id, price } = props
const avatarSize = width + 3
const R = avatarSize / 2
const path_r = R - strokeWidth + fontSize / 2
- const x1 = R - path_r / 2
- const y1 = R + Math.sqrt(Math.pow(path_r, 2) - Math.pow(path_r / 2, 2))
- const x2 = R + path_r / 2
-
+ const x1 = R - path_r
+ const y1 = R
+ const x2 = R + path_r
return (
)
diff --git a/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTBadge.tsx b/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTBadge.tsx
index e21c25c31aa2..c18db7129f6b 100644
--- a/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTBadge.tsx
+++ b/packages/mask/src/plugins/Avatar/SNSAdaptor/NFTBadge.tsx
@@ -3,7 +3,6 @@ import { resolveOpenSeaLink } from '@masknet/web3-shared-evm'
import Link from '@mui/material/Link'
import BigNumber from 'bignumber.js'
import { useNFT } from '../hooks'
-import { useNFTVerified } from '../hooks/useNFTVerified'
import type { AvatarMetaDB } from '../types'
import { NFTAvatarRing } from './NFTAvatarRing'
@@ -48,7 +47,6 @@ export function NFTBadge(props: NFTBadgeProps) {
)
const { amount, symbol, name } = value
- const { loading: loadingNFTVerified } = useNFTVerified(avatar.address)
return (
diff --git a/packages/mask/src/plugins/Avatar/Services/db.ts b/packages/mask/src/plugins/Avatar/Services/db.ts
index 027e99713d20..2bd399a5d3a5 100644
--- a/packages/mask/src/plugins/Avatar/Services/db.ts
+++ b/packages/mask/src/plugins/Avatar/Services/db.ts
@@ -17,26 +17,29 @@ async function fetchData() {
}
async function _fetch() {
- const c = cache.get('avatar')
- let f, json
- if (c) {
- f = c[1]
- if (!f) {
- f = fetchData()
- cache.set('avatar', [Date.now(), f])
- }
- if (Date.now() - c[0] >= EXPIRED_TIME) {
- json = await f
- f = fetchData()
- cache.set('avatar', [Date.now(), f])
- return json
- }
- } else {
- f = fetchData()
+ let c = cache.get('avatar')
+ if (!c) {
+ const f = fetchData()
cache.set('avatar', [Date.now(), f])
+ } else {
+ const [t, f] = c
+ if (!f || Date.now() - t >= EXPIRED_TIME) {
+ const _f = fetchData()
+ cache.set('avatar', [Date.now(), _f])
+ }
}
- json = await f
- return json
+
+ c = cache.get('avatar')
+ if (!c) return []
+ const [_, f] = c
+
+ return f
+ .then((data) => data)
+ .catch((err) => {
+ console.log(err)
+ cache.delete('avatar')
+ return []
+ })
}
export async function getNFTAvatarFromJSON(userId: string) {
diff --git a/packages/mask/src/plugins/Avatar/Services/index.ts b/packages/mask/src/plugins/Avatar/Services/index.ts
index f7099f436b50..3ed77abe52f8 100644
--- a/packages/mask/src/plugins/Avatar/Services/index.ts
+++ b/packages/mask/src/plugins/Avatar/Services/index.ts
@@ -16,6 +16,7 @@ export async function getNFTAvatar(userId: string) {
if (!result) {
result = await getNFTAvatarFromJSON(userId)
}
+
return result
}
diff --git a/packages/mask/src/plugins/Avatar/Services/verified.ts b/packages/mask/src/plugins/Avatar/Services/verified.ts
index d211199fcd81..9943f3ec82cf 100644
--- a/packages/mask/src/plugins/Avatar/Services/verified.ts
+++ b/packages/mask/src/plugins/Avatar/Services/verified.ts
@@ -18,26 +18,29 @@ async function fetchData() {
}
async function _fetch() {
- const c = cache.get('verified')
- let f, json
- if (c) {
- f = c[1]
- if (!f) {
- f = fetchData()
- cache.set('verified', [Date.now(), f])
- }
- if (Date.now() - c[0] >= EXPIRED_TIME) {
- json = await f
- f = fetchData()
- cache.set('verified', [Date.now(), f])
- return json
- }
- } else {
- f = fetchData()
+ let c = cache.get('verified')
+ if (!c) {
+ const f = fetchData()
cache.set('verified', [Date.now(), f])
+ } else {
+ const [t, f] = c
+ if (!f || Date.now() - t >= EXPIRED_TIME) {
+ const _f = fetchData()
+ cache.set('verified', [Date.now(), _f])
+ }
}
- json = await f
- return json
+
+ c = cache.get('verified')
+ if (!c) return []
+ const [_, f] = c
+
+ return f
+ .then((data) => data)
+ .catch((err) => {
+ console.log(err)
+ cache.delete('verified')
+ return []
+ })
}
export async function getNFTContractVerifiedFromJSON(address: string) {
diff --git a/packages/mask/src/plugins/Avatar/hooks/useNFTVerified.ts b/packages/mask/src/plugins/Avatar/hooks/useNFTVerified.ts
index 10118d6c8c73..bd4cf3ab4f75 100644
--- a/packages/mask/src/plugins/Avatar/hooks/useNFTVerified.ts
+++ b/packages/mask/src/plugins/Avatar/hooks/useNFTVerified.ts
@@ -4,5 +4,8 @@ import { PluginNFTAvatarRPC } from '../messages'
import type { NFTVerified } from '../types'
export function useNFTVerified(address: string): AsyncState {
- return useAsync(async () => PluginNFTAvatarRPC.getNFTContractVerifiedFromJSON(address), [address])
+ return useAsync(async () => {
+ if (!address) return
+ return PluginNFTAvatarRPC.getNFTContractVerifiedFromJSON(address)
+ }, [address])
}
diff --git a/packages/web3-providers/src/opensea/utils.ts b/packages/web3-providers/src/opensea/utils.ts
index 277706868925..fd66b6f79783 100644
--- a/packages/web3-providers/src/opensea/utils.ts
+++ b/packages/web3-providers/src/opensea/utils.ts
@@ -5,11 +5,11 @@ export function getOrderUnitPrice(currentPrice?: string, decimals?: number, quan
if (!currentPrice || !decimals || !quantity) return
const _currentPrice = new BigNumber(currentPrice).div(pow10(decimals))
const _quantity = new BigNumber(quantity).div(pow10(isOne(quantity) ? 0 : 8))
- return _currentPrice.dividedBy(_quantity).decimalPlaces(4, 1)
+ return _currentPrice.dividedBy(_quantity).decimalPlaces(4, 2)
}
export function getOrderUSDPrice(currentPrice?: string, usdPrice?: string, decimals?: number) {
if (!currentPrice || !decimals) return
const quantity = new BigNumber(currentPrice).div(pow10(decimals))
- return new BigNumber(usdPrice ?? 0).multipliedBy(quantity).decimalPlaces(2, 1)
+ return new BigNumber(usdPrice ?? 0).multipliedBy(quantity).decimalPlaces(2, 2)
}