From 22fd482f3a4330c27389144ca8e8f14859622a05 Mon Sep 17 00:00:00 2001 From: vzxh Date: Mon, 16 May 2022 13:38:45 +0800 Subject: [PATCH] feat: add approve type and timestamp in approve record --- public/locales/en/translation.json | 4 +- public/locales/zh/translation.json | 4 +- src/components/Entries.tsx | 60 ++++++++++++++++++++++------- src/components/ExtrinsicRecords.tsx | 2 + src/config/chains/crab.json | 2 +- src/config/chains/darwinia.json | 2 +- src/config/chains/kusama.json | 2 +- src/config/chains/pangolin.json | 2 +- src/config/chains/polkadot.json | 2 +- src/config/query.ts | 4 ++ src/utils/helper/index.ts | 1 + src/utils/helper/time.ts | 3 ++ 12 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 src/utils/helper/time.ts diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json index fdc3c31f..f8fea135 100644 --- a/public/locales/en/translation.json +++ b/public/locales/en/translation.json @@ -125,7 +125,9 @@ "cancelled": "Cancelled", "executed": "Executed", "index": "Status", - "pending": "Pending" + "pending": "Pending", + "initialized": "Intialized", + "approvedAndExecuted": "Approved And Executed" }, "save": "Save", "add": "Add", diff --git a/public/locales/zh/translation.json b/public/locales/zh/translation.json index 309be737..04660693 100644 --- a/public/locales/zh/translation.json +++ b/public/locales/zh/translation.json @@ -124,7 +124,9 @@ "cancelled": "已取消", "executed": "已执行", "index": "状态", - "pending": "等待批准" + "pending": "等待批准", + "initialized": "已发起", + "approvedAndExecuted": "批准并执行" }, "save": "保存", "add": "添加", diff --git a/src/components/Entries.tsx b/src/components/Entries.tsx index 884babe3..df03a3bc 100644 --- a/src/components/Entries.tsx +++ b/src/components/Entries.tsx @@ -9,7 +9,7 @@ import { Trans, useTranslation } from 'react-i18next'; import { APPROVE_RECORD_QUERY } from '../config'; import { useApi, useIsInjected } from '../hooks'; import { AddressPair, Entry, Network, TxActionType } from '../model'; -import { toShortString } from '../utils'; +import { toShortString, formatDate } from '../utils'; import { ArgObj, Args } from './Args'; import { genExpandIcon } from './expandIcon'; import { MemberList } from './Members'; @@ -26,6 +26,8 @@ interface ApproveRecord { multisigRecordId: string; account: string; approveTimepoint: string; + approveTimestamp: string; + approveType: string; } export interface EntriesProps { @@ -88,31 +90,61 @@ function MemberStatus(props: { entry: Entry; pair: KeyringJson; isInProgress: bo height: matchedApproveRecord.approveTimepoint.split('-')[0], index: matchedApproveRecord.approveTimepoint.split('-')[1], }; + + const approveTypeTrans = + matchedApproveRecord.approveType === 'initialize' + ? 'status.initialized' + : matchedApproveRecord.approveType === 'execute' + ? 'status.approvedAndExecuted' + : 'status.approved'; + + return ( + <> +
+ {approveTypeTrans} ( + {matchedApproveRecord.approveTimepoint}) +
+
{formatDate(matchedApproveRecord.approveTimestamp)}
+ + ); + } + + if (!approved) { + return
-
; + } + + const matched = inProgressApproveRecords?.approveRecords.nodes.find((item) => item.account === address); + + if (!matched) { return (
- status.approved ( - {matchedApproveRecord.approveTimepoint}) + status.approved
); } - const matched = inProgressApproveRecords?.approveRecords.nodes.find((item) => item.account === address); const inProgressApproveTimepoint = { - height: matched?.approveTimepoint.split('-')[0] || '', - index: matched?.approveTimepoint.split('-')[1] || '', + height: matched.approveTimepoint.split('-')[0] || '', + index: matched.approveTimepoint.split('-')[1] || '', }; - return approved ? ( -
- status.approved - {matched && ( + const approveTypeTrans = + matched.approveType === 'initialize' + ? 'status.initialized' + : matched.approveType === 'execute' + ? 'status.approvedAndExecuted' + : 'status.approved'; + + return ( + <> +
+ {approveTypeTrans}
({matched.approveTimepoint})
- )} -
- ) : ( -
-
+
+
{formatDate(matched.approveTimestamp)}
+ ); } diff --git a/src/components/ExtrinsicRecords.tsx b/src/components/ExtrinsicRecords.tsx index 25842383..bdaceeac 100644 --- a/src/components/ExtrinsicRecords.tsx +++ b/src/components/ExtrinsicRecords.tsx @@ -42,6 +42,8 @@ interface MultisigRecord { export interface ApproveRecord { account: string; approveTimepoint: string; + approveTimestamp: string; + approveType: string; } const { TabPane } = Tabs; diff --git a/src/config/chains/crab.json b/src/config/chains/crab.json index 178050c7..71df1668 100644 --- a/src/config/chains/crab.json +++ b/src/config/chains/crab.json @@ -3,7 +3,7 @@ "displayName": "Crab", "rpc": "wss://crab-rpc.darwinia.network", "api": { - "subql": "https://api.subquery.network/sq/itering/multisig_crab" + "subql": "https://api.subquery.network/sq/itering/multisig_crab__aXRlc" }, "logo": "/image/crab-button-mobile.png", "explorerHostName": "crab", diff --git a/src/config/chains/darwinia.json b/src/config/chains/darwinia.json index b8fe417a..32e09790 100644 --- a/src/config/chains/darwinia.json +++ b/src/config/chains/darwinia.json @@ -3,7 +3,7 @@ "displayName": "Darwinia", "rpc": "wss://rpc.darwinia.network", "api": { - "subql": "https://api.subquery.network/sq/itering/multisig_darwinia" + "subql": "https://api.subquery.network/sq/itering/multisig_darwinia__aXRlc" }, "logo": "/image/darwinia-button-mobile.png", "explorerHostName": "darwinia", diff --git a/src/config/chains/kusama.json b/src/config/chains/kusama.json index c68dfbd6..cd7e71d9 100644 --- a/src/config/chains/kusama.json +++ b/src/config/chains/kusama.json @@ -3,7 +3,7 @@ "displayName": "Kusama", "rpc": "wss://kusama.api.onfinality.io/public-ws", "api": { - "subql": "https://api.subquery.network/sq/itering/multisig_ksm" + "subql": "https://api.subquery.network/sq/itering/multisig_ksm__aXRlc" }, "logo": "/image/kusama-button-mobile.png", "explorerHostName": "kusama", diff --git a/src/config/chains/pangolin.json b/src/config/chains/pangolin.json index c0b36b19..81132ee9 100644 --- a/src/config/chains/pangolin.json +++ b/src/config/chains/pangolin.json @@ -4,7 +4,7 @@ "isTestnet": true, "rpc": "wss://pangolin-rpc.darwinia.network/", "api": { - "subql": "https://api.subquery.network/sq/itering/multisig_pangolin" + "subql": "https://api.subquery.network/sq/itering/multisig_pangolin__aXRlc" }, "logo": "/image/pangolin-button-mobile.png", "explorerHostName": "pangolin", diff --git a/src/config/chains/polkadot.json b/src/config/chains/polkadot.json index 086e66d3..4cf8d6fd 100644 --- a/src/config/chains/polkadot.json +++ b/src/config/chains/polkadot.json @@ -3,7 +3,7 @@ "displayName": "Polkadot", "rpc": "wss://rpc.polkadot.io", "api": { - "subql": "https://api.subquery.network/sq/itering/multisig_polkadot" + "subql": "https://api.subquery.network/sq/itering/multisig_polkadot__aXRlc" }, "logo": "/image/polkadot-button-mobile.png", "explorerHostName": "polkadot", diff --git a/src/config/query.ts b/src/config/query.ts index b3f02d43..0454d4a5 100644 --- a/src/config/query.ts +++ b/src/config/query.ts @@ -30,6 +30,8 @@ export const MULTISIG_RECORD_QUERY = ` nodes { account approveTimepoint + approveTimestamp + approveType } } @@ -73,6 +75,8 @@ query approveRecords($multisigRecordId: String!) { multisigRecordId account approveTimepoint + approveTimestamp + approveType } } } diff --git a/src/utils/helper/index.ts b/src/utils/helper/index.ts index 214e4808..715bdc51 100644 --- a/src/utils/helper/index.ts +++ b/src/utils/helper/index.ts @@ -7,3 +7,4 @@ export * from './multisig'; export * from './types'; export * from './url'; export * from './validate'; +export * from './time'; diff --git a/src/utils/helper/time.ts b/src/utils/helper/time.ts new file mode 100644 index 00000000..29ee215a --- /dev/null +++ b/src/utils/helper/time.ts @@ -0,0 +1,3 @@ +export function formatDate(millis: string | number): string { + return new Date(Number(millis)).toUTCString(); +}