Skip to content

Commit 3666588

Browse files
authored
fix: update multisig loading (#243)
* fix: update multisig loading https://github.com/subscan-explorer/subscan/issues/5152 * chore: update tab fetch
1 parent 3b1b223 commit 3666588

8 files changed

Lines changed: 220 additions & 183 deletions

File tree

‎src/components/Entries.tsx‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import BaseIdentityIcon from '@polkadot/react-identicon';
22
import { KeyringAddress, KeyringJson } from '@polkadot/ui-keyring/types';
3-
import { Button, Collapse, Empty, Progress, Space, Table, Typography } from 'antd';
3+
import { Button, Collapse, Empty, Progress, Space, Spin, Table, Typography } from 'antd';
44
import { ColumnsType } from 'antd/lib/table';
55
import { intersection, isEmpty } from 'lodash';
66
import { useCallback, useRef, useState } from 'react';
@@ -258,10 +258,12 @@ export function Entries({
258258
return !(isConfirmed || isCancelled) ? (
259259
<>
260260
<Typography.Text copyable={!isEmpty(data) && { text: data }}>
261-
{!isEmpty(data)
262-
? // ? `${data.substring(0, CALL_DATA_LENGTH)}${data.length > CALL_DATA_LENGTH ? '...' : ''}`
263-
toShortString(data, CALL_DATA_LENGTH)
264-
: '-'}
261+
{!isEmpty(data) ? (
262+
// ? `${data.substring(0, CALL_DATA_LENGTH)}${data.length > CALL_DATA_LENGTH ? '...' : ''}`
263+
toShortString(data, CALL_DATA_LENGTH)
264+
) : (
265+
<Spin spinning={true} />
266+
)}
265267
</Typography.Text>
266268
</>
267269
) : (

‎src/components/ExtrinsicLaunch.tsx‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ interface Props {
2525
className?: string;
2626
onTxSuccess?: (res: SubmittableResult) => void;
2727
onTxFail?: (res: SubmittableResult | null) => void;
28+
onTxUpdate?: (res: SubmittableResult) => void;
2829
}
2930

30-
export function ExtrinsicLaunch({ className, onTxSuccess }: Props): React.ReactElement<Props> {
31+
export function ExtrinsicLaunch({ className, onTxSuccess, onTxUpdate }: Props): React.ReactElement<Props> {
3132
const { t } = useTranslation();
3233
const { api } = useApi();
3334
const [accountId, setAccountId] = useState<string | null>(null);
@@ -181,6 +182,7 @@ export function ExtrinsicLaunch({ className, onTxSuccess }: Props): React.ReactE
181182
icon="sign-in-alt"
182183
label={t<string>('Submit Transaction')}
183184
onSuccess={onTxSuccess}
185+
onUpdate={onTxUpdate}
184186
isBusy={isBusy}
185187
multiRoot={multisigAccount?.address}
186188
/>

‎src/components/ExtrinsicRecords.tsx‎

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -230,22 +230,23 @@ export function ExtrinsicRecords() {
230230
setFirst(false);
231231
if (inProgress.length === 0 && confirmedAccount > 0) {
232232
setTabKey('confirmed');
233+
fetchConfirmed();
233234
}
234235
}
235-
}, [loadingInProgress, confirmedAccount, first, inProgress]);
236+
}, [loadingInProgress, confirmedAccount, first, inProgress, fetchConfirmed]);
236237

238+
// Re-fetch list when page changes, only if already on that tab
237239
useEffect(() => {
238-
fetchConfirmed();
239-
fetchCancelled();
240-
}, [networkConfig, fetchCancelled, fetchConfirmed]);
241-
242-
useEffect(() => {
243-
fetchConfirmed();
244-
}, [confirmedPage, fetchConfirmed, networkConfig]);
240+
if (tabKey === 'confirmed') {
241+
fetchConfirmed();
242+
}
243+
}, [confirmedPage]); // eslint-disable-line react-hooks/exhaustive-deps
245244

246245
useEffect(() => {
247-
fetchCancelled();
248-
}, [cancelledPage, fetchCancelled, networkConfig]);
246+
if (tabKey === 'cancelled') {
247+
fetchCancelled();
248+
}
249+
}, [cancelledPage]); // eslint-disable-line react-hooks/exhaustive-deps
249250

250251
// eslint-disable-next-line complexity
251252
const handleChangeTab = (key: string) => {

‎src/components/WalletState.tsx‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,12 @@ export function WalletState(props: WalletStateProps) {
323323
setIsExtrinsicDisplay(false);
324324
queryInProgress();
325325
}}
326+
onTxUpdate={(status) => {
327+
if (status.isInBlock) {
328+
setIsExtrinsicDisplay(false);
329+
queryInProgress();
330+
}
331+
}}
326332
/>
327333
</Modal>
328334

‎src/hooks/combineQuery.ts‎

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
} from './subscan';
1616

1717
export interface MultisigAccountDetailResult {
18-
multisigAccount: { id: string; threshold: number; members: string[] };
18+
multisigAccount: { id: string; threshold: number; members: string[] } | null;
1919
}
2020

2121
export interface MultisigRecordCountResult {
@@ -26,31 +26,43 @@ export function useMultisigAccountDetail(network: NetConfigV2 | undefined) {
2626
const subquery = useSubqueryMultisigAccountDetail(network);
2727
const subscan = useSubscanMultisigAccountDetail(network);
2828

29-
const fetcher = network?.api?.subscan ? subscan : subquery;
29+
const useSubscan = !!network?.api?.subscan;
30+
const fetchFn = useSubscan ? subscan.fetchData : subquery.fetchData;
31+
const data = useSubscan ? subscan.data : subquery.data;
32+
const loading = useSubscan ? subscan.loading : subquery.loading;
3033

31-
const fetchData = useCallback((account: string) => {
32-
if (!account) {
33-
return;
34-
}
35-
fetcher.fetchData(account);
36-
}, []);
34+
const fetchData = useCallback(
35+
(account: string) => {
36+
if (!account) {
37+
return;
38+
}
39+
fetchFn(account);
40+
},
41+
[fetchFn]
42+
);
3743

38-
return { fetchData, data: fetcher.data, loading: fetcher.loading };
44+
return { fetchData, data, loading };
3945
}
4046

4147
export function useMultisigRecordCount(network: NetConfigV2 | undefined) {
4248
const subquery = usSubqueryMultisigRecordCount(network);
4349
const subscan = usSubscanMultisigRecordCount(network);
4450

45-
const fetcher = network?.api?.subscan ? subscan : subquery;
51+
const useSubscan = !!network?.api?.subscan;
52+
const fetchFn = useSubscan ? subscan.fetchData : subquery.fetchData;
53+
const data = useSubscan ? subscan.data : subquery.data;
54+
const loading = useSubscan ? subscan.loading : subquery.loading;
4655

47-
const fetchData = useCallback((account: string, status: string) => {
48-
if (!account) {
49-
return;
50-
}
51-
fetcher.fetchData(account, status);
52-
}, []);
53-
return { fetchData, data: fetcher.data, loading: fetcher.loading };
56+
const fetchData = useCallback(
57+
(account: string, status: string) => {
58+
if (!account) {
59+
return;
60+
}
61+
fetchFn(account, status);
62+
},
63+
[fetchFn]
64+
);
65+
return { fetchData, data, loading };
5466
}
5567

5668
export function useMultisigRecords(
@@ -70,16 +82,19 @@ export function useMultisigRecords(
7082
const subquery = useSubqueryMultisigRecords(network);
7183
const subscan = useSubscanMultisigRecords(network);
7284

73-
const fetcher = network?.api?.subscan ? subscan : subquery;
85+
const useSubscan = !!network?.api?.subscan;
86+
const fetchFn = useSubscan ? subscan.fetchData : subquery.fetchData;
87+
const data = useSubscan ? subscan.data : subquery.data;
88+
const loading = useSubscan ? subscan.loading : subquery.loading;
7489

7590
// eslint-disable-next-line no-magic-numbers
7691
const fetchData = useCallback(() => {
7792
if (!account) {
7893
return;
7994
}
80-
fetcher.fetchData(account, status, offset, limit);
81-
}, [account, offset, status]);
82-
return { fetchData, data: fetcher.data, loading: fetcher.loading };
95+
fetchFn(account, status, offset, limit);
96+
}, [account, offset, status, limit, fetchFn]);
97+
return { fetchData, data, loading };
8398
}
8499

85100
export function useDataSourceTools(network: NetConfigV2 | undefined) {

‎src/hooks/multisig.ts‎

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@ export function useMultisig(acc?: string) {
2727
};
2828
const { fetchData: fetchInProgress, data: inProgressData } = useMultisigRecords(networkConfig, fetchInprogressParams);
2929

30-
useEffect(() => {
31-
fetchInProgress();
32-
}, [networkConfig, fetchInProgress]);
33-
3430
const queryInProgress = useCallback(
3531
// eslint-disable-next-line complexity
3632
async (silent = false) => {

0 commit comments

Comments
 (0)