Commit 5d98955a authored by Igor Stuev's avatar Igor Stuev Committed by GitHub

Merge pull request #1068 from blockscout/socket-fix

request after socket fix if error
parents 6e1d3fd0 6fb0f572
...@@ -35,7 +35,7 @@ const InfoItem = chakra(({ label, value, className, isLoading }: { label: string ...@@ -35,7 +35,7 @@ const InfoItem = chakra(({ label, value, className, isLoading }: { label: string
)); ));
const ContractCode = ({ addressHash, noSocket }: Props) => { const ContractCode = ({ addressHash, noSocket }: Props) => {
const [ isSocketOpen, setIsSocketOpen ] = React.useState(false); const [ isQueryEnabled, setIsQueryEnabled ] = React.useState(false);
const [ isChangedBytecodeSocket, setIsChangedBytecodeSocket ] = React.useState<boolean>(); const [ isChangedBytecodeSocket, setIsChangedBytecodeSocket ] = React.useState<boolean>();
const queryClient = useQueryClient(); const queryClient = useQueryClient();
...@@ -45,7 +45,7 @@ const ContractCode = ({ addressHash, noSocket }: Props) => { ...@@ -45,7 +45,7 @@ const ContractCode = ({ addressHash, noSocket }: Props) => {
const { data, isPlaceholderData, isError } = useApiQuery('contract', { const { data, isPlaceholderData, isError } = useApiQuery('contract', {
pathParams: { hash: addressHash }, pathParams: { hash: addressHash },
queryOptions: { queryOptions: {
enabled: Boolean(addressHash) && (noSocket || isSocketOpen), enabled: Boolean(addressHash) && (noSocket || isQueryEnabled),
refetchOnMount: false, refetchOnMount: false,
placeholderData: addressInfo?.is_verified ? stubs.CONTRACT_CODE_VERIFIED : stubs.CONTRACT_CODE_UNVERIFIED, placeholderData: addressInfo?.is_verified ? stubs.CONTRACT_CODE_VERIFIED : stubs.CONTRACT_CODE_UNVERIFIED,
}, },
...@@ -64,10 +64,13 @@ const ContractCode = ({ addressHash, noSocket }: Props) => { ...@@ -64,10 +64,13 @@ const ContractCode = ({ addressHash, noSocket }: Props) => {
}); });
}, [ addressHash, refetchQueries ]); }, [ addressHash, refetchQueries ]);
const enableQuery = React.useCallback(() => setIsQueryEnabled(true), []);
const channel = useSocketChannel({ const channel = useSocketChannel({
topic: `addresses:${ addressHash?.toLowerCase() }`, topic: `addresses:${ addressHash?.toLowerCase() }`,
isDisabled: !addressHash, isDisabled: !addressHash,
onJoin: () => setIsSocketOpen(true), onJoin: enableQuery,
onSocketError: enableQuery,
}); });
useSocketMessage({ useSocketMessage({
channel, channel,
......
...@@ -41,7 +41,7 @@ import TokenVerifiedInfo from 'ui/token/TokenVerifiedInfo'; ...@@ -41,7 +41,7 @@ import TokenVerifiedInfo from 'ui/token/TokenVerifiedInfo';
export type TokenTabs = 'token_transfers' | 'holders' | 'inventory'; export type TokenTabs = 'token_transfers' | 'holders' | 'inventory';
const TokenPageContent = () => { const TokenPageContent = () => {
const [ isSocketOpen, setIsSocketOpen ] = React.useState(false); const [ isQueryEnabled, setIsQueryEnabled ] = React.useState(false);
const [ totalSupplySocket, setTotalSupplySocket ] = React.useState<number>(); const [ totalSupplySocket, setTotalSupplySocket ] = React.useState<number>();
const router = useRouter(); const router = useRouter();
const isMobile = useIsMobile(); const isMobile = useIsMobile();
...@@ -65,7 +65,7 @@ const TokenPageContent = () => { ...@@ -65,7 +65,7 @@ const TokenPageContent = () => {
const contractQuery = useApiQuery('address', { const contractQuery = useApiQuery('address', {
pathParams: { hash: hashString }, pathParams: { hash: hashString },
queryOptions: { queryOptions: {
enabled: isSocketOpen && Boolean(router.query.hash), enabled: isQueryEnabled && Boolean(router.query.hash),
placeholderData: addressStubs.ADDRESS_INFO, placeholderData: addressStubs.ADDRESS_INFO,
}, },
}); });
...@@ -92,10 +92,13 @@ const TokenPageContent = () => { ...@@ -92,10 +92,13 @@ const TokenPageContent = () => {
}); });
}, [ queryClient, hashString ]); }, [ queryClient, hashString ]);
const enableQuery = React.useCallback(() => setIsQueryEnabled(true), []);
const channel = useSocketChannel({ const channel = useSocketChannel({
topic: `tokens:${ hashString?.toLowerCase() }`, topic: `tokens:${ hashString?.toLowerCase() }`,
isDisabled: !hashString, isDisabled: !hashString,
onJoin: () => setIsSocketOpen(true), onJoin: enableQuery,
onSocketError: enableQuery,
}); });
useSocketMessage({ useSocketMessage({
channel, channel,
......
...@@ -17,7 +17,7 @@ import TxSocketAlert from 'ui/tx/TxSocketAlert'; ...@@ -17,7 +17,7 @@ import TxSocketAlert from 'ui/tx/TxSocketAlert';
import useFetchTxInfo from 'ui/tx/useFetchTxInfo'; import useFetchTxInfo from 'ui/tx/useFetchTxInfo';
const TxRawTrace = () => { const TxRawTrace = () => {
const [ isSocketOpen, setIsSocketOpen ] = React.useState(false); const [ isQueryEnabled, setIsQueryEnabled ] = React.useState(false);
const [ rawTraces, setRawTraces ] = React.useState<RawTracesResponse>(); const [ rawTraces, setRawTraces ] = React.useState<RawTracesResponse>();
const router = useRouter(); const router = useRouter();
const hash = getQueryParamString(router.query.hash); const hash = getQueryParamString(router.query.hash);
...@@ -26,7 +26,7 @@ const TxRawTrace = () => { ...@@ -26,7 +26,7 @@ const TxRawTrace = () => {
const { data, isPlaceholderData, isError } = useApiQuery('tx_raw_trace', { const { data, isPlaceholderData, isError } = useApiQuery('tx_raw_trace', {
pathParams: { hash }, pathParams: { hash },
queryOptions: { queryOptions: {
enabled: Boolean(hash) && Boolean(txInfo.data?.status) && isSocketOpen, enabled: Boolean(hash) && Boolean(txInfo.data?.status) && isQueryEnabled,
placeholderData: TX_RAW_TRACE, placeholderData: TX_RAW_TRACE,
}, },
}); });
...@@ -35,10 +35,13 @@ const TxRawTrace = () => { ...@@ -35,10 +35,13 @@ const TxRawTrace = () => {
setRawTraces(payload); setRawTraces(payload);
}, [ ]); }, [ ]);
const enableQuery = React.useCallback(() => setIsQueryEnabled(true), []);
const channel = useSocketChannel({ const channel = useSocketChannel({
topic: `transactions:${ hash }`, topic: `transactions:${ hash }`,
isDisabled: !hash || txInfo.isPlaceholderData || !txInfo.data?.status, isDisabled: !hash || txInfo.isPlaceholderData || !txInfo.data?.status,
onJoin: () => setIsSocketOpen(true), onJoin: enableQuery,
onSocketError: enableQuery,
}); });
useSocketMessage({ useSocketMessage({
channel, channel,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment