From b8f0828f2e39390d1d8e895bb180aca039df11c6 Mon Sep 17 00:00:00 2001 From: tom goriunov Date: Thu, 10 Aug 2023 16:23:05 -0400 Subject: [PATCH] support new socket events for token balances (#1082) base implementation --- lib/socket/types.ts | 8 +- playwright/fixtures/socketServer.ts | 5 +- playwright/index.ts | 1 + types/api/address.ts | 5 + ui/address/AddressTokens.pw.tsx | 110 +++++++++++++++++- ui/address/AddressTokens.tsx | 88 ++++++++++++-- ...x_default_update-balances-via-socket-1.png | Bin 0 -> 32292 bytes ...x_default_update-balances-via-socket-2.png | Bin 0 -> 39379 bytes 8 files changed, 204 insertions(+), 13 deletions(-) create mode 100644 ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-1.png create mode 100644 ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-2.png diff --git a/lib/socket/types.ts b/lib/socket/types.ts index 49ea8c687f..ebc220fe46 100644 --- a/lib/socket/types.ts +++ b/lib/socket/types.ts @@ -1,6 +1,6 @@ import type { Channel } from 'phoenix'; -import type { AddressCoinBalanceHistoryItem } from 'types/api/address'; +import type { AddressCoinBalanceHistoryItem, AddressTokensBalancesSocketMessage } from 'types/api/address'; import type { NewBlockSocketResponse } from 'types/api/block'; import type { SmartContractVerificationResponse } from 'types/api/contract'; import type { RawTracesResponse } from 'types/api/rawTrace'; @@ -18,6 +18,9 @@ SocketMessage.NewDeposits | SocketMessage.AddressBalance | SocketMessage.AddressCurrentCoinBalance | SocketMessage.AddressTokenBalance | +SocketMessage.AddressTokenBalancesErc20 | +SocketMessage.AddressTokenBalancesErc721 | +SocketMessage.AddressTokenBalancesErc1155 | SocketMessage.AddressCoinBalance | SocketMessage.AddressTxs | SocketMessage.AddressTxsPending | @@ -49,6 +52,9 @@ export namespace SocketMessage { export type AddressCurrentCoinBalance = SocketMessageParamsGeneric<'current_coin_balance', { coin_balance: string; block_number: number; exchange_rate: string }>; export type AddressTokenBalance = SocketMessageParamsGeneric<'token_balance', { block_number: number }>; + export type AddressTokenBalancesErc20 = SocketMessageParamsGeneric<'updated_token_balances_erc_20', AddressTokensBalancesSocketMessage>; + export type AddressTokenBalancesErc721 = SocketMessageParamsGeneric<'updated_token_balances_erc_721', AddressTokensBalancesSocketMessage>; + export type AddressTokenBalancesErc1155 = SocketMessageParamsGeneric<'updated_token_balances_erc_1155', AddressTokensBalancesSocketMessage>; export type AddressCoinBalance = SocketMessageParamsGeneric<'coin_balance', { coin_balance: AddressCoinBalanceHistoryItem }>; export type AddressTxs = SocketMessageParamsGeneric<'transaction', { transactions: Array }>; export type AddressTxsPending = SocketMessageParamsGeneric<'pending_transaction', { transactions: Array }>; diff --git a/playwright/fixtures/socketServer.ts b/playwright/fixtures/socketServer.ts index 09733e5615..43c3726371 100644 --- a/playwright/fixtures/socketServer.ts +++ b/playwright/fixtures/socketServer.ts @@ -2,7 +2,7 @@ import type { TestFixture, Page } from '@playwright/test'; import type { WebSocket } from 'ws'; import { WebSocketServer } from 'ws'; -import type { AddressCoinBalanceHistoryItem } from 'types/api/address'; +import type { AddressCoinBalanceHistoryItem, AddressTokensBalancesSocketMessage } from 'types/api/address'; import type { NewBlockSocketResponse } from 'types/api/block'; import type { SmartContractVerificationResponse } from 'types/api/contract'; import type { TokenTransfer } from 'types/api/tokenTransfer'; @@ -59,6 +59,9 @@ export const joinChannel = async(socket: WebSocket, channelName: string) => { export function sendMessage(socket: WebSocket, channel: Channel, msg: 'coin_balance', payload: { coin_balance: AddressCoinBalanceHistoryItem }): void; export function sendMessage(socket: WebSocket, channel: Channel, msg: 'token_balance', payload: { block_number: number }): void; +export function sendMessage(socket: WebSocket, channel: Channel, msg: 'updated_token_balances_erc_20', payload: AddressTokensBalancesSocketMessage): void; +export function sendMessage(socket: WebSocket, channel: Channel, msg: 'updated_token_balances_erc_721', payload: AddressTokensBalancesSocketMessage): void; +export function sendMessage(socket: WebSocket, channel: Channel, msg: 'updated_token_balances_erc_1155', payload: AddressTokensBalancesSocketMessage): void; export function sendMessage(socket: WebSocket, channel: Channel, msg: 'transaction', payload: { transaction: number }): void; export function sendMessage(socket: WebSocket, channel: Channel, msg: 'transaction', payload: { transactions: Array }): void; export function sendMessage(socket: WebSocket, channel: Channel, msg: 'pending_transaction', payload: { pending_transaction: number }): void; diff --git a/playwright/index.ts b/playwright/index.ts index 4409831f7f..879cfa0127 100644 --- a/playwright/index.ts +++ b/playwright/index.ts @@ -8,6 +8,7 @@ import * as router from 'next/router'; const NEXT_ROUTER_MOCK = { query: {}, pathname: '', + push: () => Promise.resolve(), }; beforeMount(async({ hooksConfig }) => { diff --git a/types/api/address.ts b/types/api/address.ts index 9e2a55206f..32a4745af2 100644 --- a/types/api/address.ts +++ b/types/api/address.ts @@ -59,6 +59,11 @@ export interface AddressTokensResponse { } | null; } +export interface AddressTokensBalancesSocketMessage { + overflow: boolean; + token_balances: Array; +} + export interface AddressTransactionsResponse { items: Array; next_page_params: { diff --git a/ui/address/AddressTokens.pw.tsx b/ui/address/AddressTokens.pw.tsx index 7f5714d563..3cf3b34e93 100644 --- a/ui/address/AddressTokens.pw.tsx +++ b/ui/address/AddressTokens.pw.tsx @@ -2,14 +2,15 @@ import { Box } from '@chakra-ui/react'; import { test as base, expect, devices } from '@playwright/experimental-ct-react'; import React from 'react'; -import { withName } from 'mocks/address/address'; +import * as addressMock from 'mocks/address/address'; import * as tokensMock from 'mocks/address/tokens'; +import * as socketServer from 'playwright/fixtures/socketServer'; import TestApp from 'playwright/TestApp'; import buildApiUrl from 'playwright/utils/buildApiUrl'; import AddressTokens from './AddressTokens'; -const ADDRESS_HASH = withName.hash; +const ADDRESS_HASH = addressMock.withName.hash; const API_URL_ADDRESS = buildApiUrl('address', { hash: ADDRESS_HASH }); const API_URL_TOKENS = buildApiUrl('address_tokens', { hash: ADDRESS_HASH }); @@ -37,7 +38,7 @@ const test = base.extend({ await page.route(API_URL_ADDRESS, (route) => route.fulfill({ status: 200, - body: JSON.stringify(withName), + body: JSON.stringify(addressMock.withName), })); await page.route(API_URL_TOKENS + '?type=ERC-20', (route) => route.fulfill({ status: 200, @@ -173,3 +174,106 @@ test.describe('mobile', () => { await expect(component).toHaveScreenshot(); }); }); + +base.describe('update balances via socket', () => { + const test = base.extend({ + createSocket: socketServer.createSocket, + }); + test.describe.configure({ mode: 'serial' }); + + test('', async({ mount, page, createSocket }) => { + test.slow(); + + const hooksConfig = { + router: { + query: { hash: ADDRESS_HASH, tab: 'tokens_erc20' }, + isReady: true, + }, + }; + + const response20 = { + items: [ tokensMock.erc20a, tokensMock.erc20b ], + next_page_params: null, + }; + const response721 = { + items: [ tokensMock.erc721a, tokensMock.erc721b ], + next_page_params: null, + }; + const response1155 = { + items: [ tokensMock.erc1155a ], + next_page_params: null, + }; + + await page.route(API_URL_ADDRESS, (route) => route.fulfill({ + status: 200, + body: JSON.stringify(addressMock.validator), + })); + await page.route(API_URL_TOKENS + '?type=ERC-20', (route) => route.fulfill({ + status: 200, + body: JSON.stringify(response20), + })); + await page.route(API_URL_TOKENS + '?type=ERC-721', (route) => route.fulfill({ + status: 200, + body: JSON.stringify(response721), + })); + await page.route(API_URL_TOKENS + '?type=ERC-1155', (route) => route.fulfill({ + status: 200, + body: JSON.stringify(response1155), + })); + + const component = await mount( + + + + + + , + { hooksConfig }, + ); + + await page.waitForResponse(API_URL_TOKENS + '?type=ERC-20'); + await page.waitForResponse(API_URL_TOKENS + '?type=ERC-721'); + await page.waitForResponse(API_URL_TOKENS + '?type=ERC-1155'); + + await expect(component).toHaveScreenshot(); + + const socket = await createSocket(); + const channel = await socketServer.joinChannel(socket, `addresses:${ ADDRESS_HASH.toLowerCase() }`); + socketServer.sendMessage(socket, channel, 'updated_token_balances_erc_20', { + overflow: false, + token_balances: [ + { + ...tokensMock.erc20a, + token: { + ...tokensMock.erc20a.token, + exchange_rate: '0.01', + }, + }, + { + ...tokensMock.erc20c, + value: '9852000000000000', + token: { + ...tokensMock.erc20c.token, + address: '0xE2cf36D00C57e01371b94B4206ae2CF841931Adc', + name: 'Tether USD', + symbol: 'USDT', + }, + }, + ], + }); + socketServer.sendMessage(socket, channel, 'updated_token_balances_erc_721', { + overflow: false, + token_balances: [ + { + ...tokensMock.erc721c, + token: { + ...tokensMock.erc721c.token, + exchange_rate: '20', + }, + }, + ], + }); + + await expect(component).toHaveScreenshot(); + }); +}); diff --git a/ui/address/AddressTokens.tsx b/ui/address/AddressTokens.tsx index 05b842bbc2..1d693bd4d6 100644 --- a/ui/address/AddressTokens.tsx +++ b/ui/address/AddressTokens.tsx @@ -1,11 +1,18 @@ import { Box } from '@chakra-ui/react'; +import { useQueryClient } from '@tanstack/react-query'; import { useRouter } from 'next/router'; import React from 'react'; +import type { SocketMessage } from 'lib/socket/types'; +import type { AddressTokenBalance, AddressTokensBalancesSocketMessage, AddressTokensResponse } from 'types/api/address'; import type { TokenType } from 'types/api/token'; import type { PaginationParams } from 'ui/shared/pagination/types'; +import { getResourceKey } from 'lib/api/useApiQuery'; import useIsMobile from 'lib/hooks/useIsMobile'; +import getQueryParamString from 'lib/router/getQueryParamString'; +import useSocketChannel from 'lib/socket/useSocketChannel'; +import useSocketMessage from 'lib/socket/useSocketMessage'; import { ADDRESS_TOKEN_BALANCE_ERC_1155, ADDRESS_TOKEN_BALANCE_ERC_20, ADDRESS_TOKEN_BALANCE_ERC_721 } from 'stubs/address'; import { generateListStub } from 'stubs/utils'; import { tokenTabsByType } from 'ui/pages/Address'; @@ -30,51 +37,116 @@ const TAB_LIST_PROPS_MOBILE = { columnGap: 3, }; +const tokenBalanceItemIdentityFactory = (match: AddressTokenBalance) => (item: AddressTokenBalance) => (( + match.token.address === item.token.address && + match.token_id === item.token_id && + match.token_instance?.id === item.token_instance?.id +)); + const AddressTokens = () => { const router = useRouter(); const isMobile = useIsMobile(); const scrollRef = React.useRef(null); - const tab = router.query.tab?.toString(); - const tokenType: TokenType = (Object.keys(tokenTabsByType) as Array).find(key => tokenTabsByType[key] === tab) || 'ERC-20'; + const tab = getQueryParamString(router.query.tab); + const hash = getQueryParamString(router.query.hash); const erc20Query = useQueryWithPages({ resourceName: 'address_tokens', - pathParams: { hash: router.query.hash?.toString() }, + pathParams: { hash }, filters: { type: 'ERC-20' }, scrollRef, options: { refetchOnMount: false, - enabled: tokenType === 'ERC-20', placeholderData: generateListStub<'address_tokens'>(ADDRESS_TOKEN_BALANCE_ERC_20, 10, { next_page_params: null }), }, }); const erc721Query = useQueryWithPages({ resourceName: 'address_tokens', - pathParams: { hash: router.query.hash?.toString() }, + pathParams: { hash }, filters: { type: 'ERC-721' }, scrollRef, options: { refetchOnMount: false, - enabled: tokenType === 'ERC-721', placeholderData: generateListStub<'address_tokens'>(ADDRESS_TOKEN_BALANCE_ERC_721, 10, { next_page_params: null }), }, }); const erc1155Query = useQueryWithPages({ resourceName: 'address_tokens', - pathParams: { hash: router.query.hash?.toString() }, + pathParams: { hash }, filters: { type: 'ERC-1155' }, scrollRef, options: { refetchOnMount: false, - enabled: tokenType === 'ERC-1155', placeholderData: generateListStub<'address_tokens'>(ADDRESS_TOKEN_BALANCE_ERC_1155, 10, { next_page_params: null }), }, }); + const queryClient = useQueryClient(); + + const updateTokensData = React.useCallback((type: TokenType, payload: AddressTokensBalancesSocketMessage) => { + const queryKey = getResourceKey('address_tokens', { pathParams: { hash }, queryParams: { type } }); + + queryClient.setQueryData(queryKey, (prevData: AddressTokensResponse | undefined) => { + const items = prevData?.items.map((currentItem) => { + const updatedData = payload.token_balances.find(tokenBalanceItemIdentityFactory(currentItem)); + return updatedData ?? currentItem; + }) || []; + + const extraItems = prevData?.next_page_params ? + [] : + payload.token_balances.filter((socketItem) => !items.some(tokenBalanceItemIdentityFactory(socketItem))); + + if (!prevData) { + return { + items: extraItems, + next_page_params: null, + }; + } + + return { + items: items.concat(extraItems), + next_page_params: prevData.next_page_params, + }; + }); + }, [ hash, queryClient ]); + + const handleTokenBalancesErc20Message: SocketMessage.AddressTokenBalancesErc20['handler'] = React.useCallback((payload) => { + updateTokensData('ERC-20', payload); + }, [ updateTokensData ]); + + const handleTokenBalancesErc721Message: SocketMessage.AddressTokenBalancesErc721['handler'] = React.useCallback((payload) => { + updateTokensData('ERC-721', payload); + }, [ updateTokensData ]); + + const handleTokenBalancesErc1155Message: SocketMessage.AddressTokenBalancesErc1155['handler'] = React.useCallback((payload) => { + updateTokensData('ERC-1155', payload); + }, [ updateTokensData ]); + + const channel = useSocketChannel({ + topic: `addresses:${ hash.toLowerCase() }`, + isDisabled: erc20Query.isPlaceholderData || erc721Query.isPlaceholderData || erc1155Query.isPlaceholderData, + }); + + useSocketMessage({ + channel, + event: 'updated_token_balances_erc_20', + handler: handleTokenBalancesErc20Message, + }); + useSocketMessage({ + channel, + event: 'updated_token_balances_erc_721', + handler: handleTokenBalancesErc721Message, + }); + useSocketMessage({ + channel, + event: 'updated_token_balances_erc_1155', + handler: handleTokenBalancesErc1155Message, + }); + const tabs = [ { id: tokenTabsByType['ERC-20'], title: 'ERC-20', component: }, { id: tokenTabsByType['ERC-721'], title: 'ERC-721', component: }, diff --git a/ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-1.png b/ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-1.png new file mode 100644 index 0000000000000000000000000000000000000000..22d750d9c79d7d5f7c3e3b1aa1fd70772f1c9055 GIT binary patch literal 32292 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 literal 0 HcmV?d00001 diff --git a/ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-2.png b/ui/address/__screenshots__/AddressTokens.pw.tsx_default_update-balances-via-socket-2.png new file mode 100644 index 0000000000000000000000000000000000000000..25890b133af9f33ac29da8de6a10709327990c29 GIT binary patch literal 39379 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 Dzr&tv literal 0 HcmV?d00001