diff --git a/packages/mask/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx b/packages/mask/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx index 0dd592250c51..afc8526485c8 100644 --- a/packages/mask/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx +++ b/packages/mask/src/extension/options-page/DashboardComponents/CollectibleList/index.tsx @@ -247,8 +247,11 @@ export function CollectionList({ const [selectedCollection, setSelectedCollection] = useState('all') const { resolvedAddress: address } = addressName - const { data: collectionsFormRemote } = useCollections(address, chainId) + useEffect(() => { + setSelectedCollection('all') + }, [address]) + const { data: collectionsFormRemote } = useCollections(address, chainId) const { data: collectibles, state: loadingCollectibleDone, diff --git a/packages/web3-shared/evm/hooks/useSocket.ts b/packages/web3-shared/evm/hooks/useSocket.ts index 1fd8cda7ffb8..232b6f8ce36b 100644 --- a/packages/web3-shared/evm/hooks/useSocket.ts +++ b/packages/web3-shared/evm/hooks/useSocket.ts @@ -2,7 +2,7 @@ import { useWeb3Context } from '../context' import { useAsyncRetry } from 'react-use' import type { NotifyFn, RequestMessage } from '@masknet/web3-shared-base' import { v4 as uuid } from 'uuid' -import { useCallback, useState } from 'react' +import { useCallback, useEffect, useState } from 'react' type SocketMessage = Omit @@ -20,11 +20,18 @@ export const useSocket = (message: SocketMessage) => { const [error, setError] = useState() const [id, setId] = useState(uuid()) const { value: socket, loading } = useAsyncRetry(() => providerSocket, []) + const requestId = `${message.id}_${id}` + + useEffect(() => { + setState(SocketState.init) + setData([]) + setError(undefined) + }, [message.id]) const { retry } = useAsyncRetry(async () => { if (!socket || !message.id || loading) return - const requestId = `${message.id}_${id}` const notifyUpdatedHook: NotifyFn = (info) => { + if (requestId !== info.id) return if (!info.done) { setState(SocketState.receiving) } else { @@ -33,7 +40,6 @@ export const useSocket = (message: SocketMessage) => { } setError(info.error) if (!socket) return - const requestId = `${message.id}_${id}` setData(socket.getResult(requestId)) } @@ -41,7 +47,7 @@ export const useSocket = (message: SocketMessage) => { // Get data from cache setData(socket.getResult(requestId)) setState(SocketState.sent) - }, [message.id, socket, loading, id]) + }, [requestId, socket, loading]) const handleRetry = useCallback(() => { setId(uuid())