From e96ca61d1b1556e0aa81ffd20d8f3260020d2cc3 Mon Sep 17 00:00:00 2001 From: Keith Date: Thu, 14 Nov 2019 21:03:03 +0800 Subject: [PATCH 1/2] feat(neuron-ui): use calculateGlobalAPC to update Nervos DAO APC --- .../src/components/CustomRows/DAORecordRow.tsx | 10 ++-------- packages/neuron-ui/src/utils/calculateAPC.ts | 7 ------- packages/neuron-ui/src/utils/calculateGlobalAPC.ts | 8 ++++---- 3 files changed, 6 insertions(+), 19 deletions(-) delete mode 100644 packages/neuron-ui/src/utils/calculateAPC.ts diff --git a/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx b/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx index c42b0450bc..a6ba03522c 100644 --- a/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx +++ b/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx @@ -3,7 +3,7 @@ import { DefaultButton } from 'office-ui-fabric-react' import { useTranslation } from 'react-i18next' import { ckbCore, getBlockByNumber } from 'services/chain' import { showMessage } from 'services/remote' -import calculateAPC from 'utils/calculateAPC' +import calculateGlobalAPC from 'utils/calculateGlobalAPC' import { shannonToCKBFormatter, uniformTimeFormatter, localNumberFormatter } from 'utils/formatters' import calculateClaimEpochNumber from 'utils/calculateClaimEpochNumber' import { epochParser } from 'utils/parsers' @@ -143,13 +143,7 @@ const DAORecord = ({
- - {`APC: ~${calculateAPC( - compensation.toString(), - capacity, - `${Date.now() - +(depositTimestamp || timestamp)}` - )}%`} - + {`APC: ~${calculateGlobalAPC(+(depositTimestamp || timestamp))}%`} {uniformTimeFormatter(+timestamp)} {metaInfo}
diff --git a/packages/neuron-ui/src/utils/calculateAPC.ts b/packages/neuron-ui/src/utils/calculateAPC.ts deleted file mode 100644 index cae67e4206..0000000000 --- a/packages/neuron-ui/src/utils/calculateAPC.ts +++ /dev/null @@ -1,7 +0,0 @@ -const YEAR = 365 * 24 * 60 * 60 * 1000 -const BASE = 10000000 - -export default (compensation: string, amount: string, duration: string) => { - const v = (BigInt(compensation) * BigInt(YEAR) * BigInt(BASE)) / (BigInt(amount) * BigInt(duration)) - return `${(Number(v) / (BASE / 100)).toFixed(2)}` -} diff --git a/packages/neuron-ui/src/utils/calculateGlobalAPC.ts b/packages/neuron-ui/src/utils/calculateGlobalAPC.ts index b80971bec1..1bbc771df6 100644 --- a/packages/neuron-ui/src/utils/calculateGlobalAPC.ts +++ b/packages/neuron-ui/src/utils/calculateGlobalAPC.ts @@ -8,7 +8,7 @@ const PERIOD_LENGTH = DAYS_PER_PERIOD * MILLI_SECONDS_PER_DAY let cachedGenesisTimestamp: number | undefined -export default async (now: number, initialTimestamp: number | undefined = cachedGenesisTimestamp) => { +export default async (checkPointTimestamp: number, initialTimestamp: number | undefined = cachedGenesisTimestamp) => { let genesisTimestamp = initialTimestamp if (genesisTimestamp === undefined) { genesisTimestamp = await getBlockByNumber('0x0') @@ -18,12 +18,12 @@ export default async (now: number, initialTimestamp: number | undefined = cached }) .catch(() => undefined) } - if (genesisTimestamp === undefined || now <= genesisTimestamp) { + if (genesisTimestamp === undefined || checkPointTimestamp <= genesisTimestamp) { return 0 } - const pastPeriods = BigInt(now - genesisTimestamp) / BigInt(PERIOD_LENGTH) - const pastDays = Math.ceil(((now - genesisTimestamp) % PERIOD_LENGTH) / MILLI_SECONDS_PER_DAY) + const pastPeriods = BigInt(checkPointTimestamp - genesisTimestamp) / BigInt(PERIOD_LENGTH) + const pastDays = Math.ceil(((checkPointTimestamp - genesisTimestamp) % PERIOD_LENGTH) / MILLI_SECONDS_PER_DAY) const realSecondaryOffer = BigInt(4) * SECONDARY_OFFER * pastPeriods + From 28bebd9a3c061a41be1ab1b6d923df18e8a62673 Mon Sep 17 00:00:00 2001 From: Keith Date: Thu, 14 Nov 2019 21:53:33 +0800 Subject: [PATCH 2/2] refactor(neuron-ui): set apc as a state in dao record row --- .../neuron-ui/src/components/CustomRows/DAORecordRow.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx b/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx index a6ba03522c..0f96f58c7f 100644 --- a/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx +++ b/packages/neuron-ui/src/components/CustomRows/DAORecordRow.tsx @@ -35,6 +35,13 @@ const DAORecord = ({ const [t] = useTranslation() const [withdrawingEpoch, setWithdrawingEpoch] = useState('') const [depositEpoch, setDepositEpoch] = useState('') + const [apc, setApc] = useState(0) + + useEffect(() => { + calculateGlobalAPC(+(depositTimestamp || timestamp)).then(res => { + setApc(res) + }) + }) useEffect(() => { if (!depositOutPoint) { @@ -143,7 +150,7 @@ const DAORecord = ({
- {`APC: ~${calculateGlobalAPC(+(depositTimestamp || timestamp))}%`} + {`APC: ~${apc}%`} {uniformTimeFormatter(+timestamp)} {metaInfo}