mirror of
https://github.com/pezkuwichain/pezkuwi-apps.git
synced 2026-07-24 08:55:51 +00:00
40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
// Copyright 2017-2026 @pezkuwi/app-nis authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { u32, u128 } from '@pezkuwi/types';
|
|
import type { PalletNisSummaryRecord } from '@pezkuwi/types/lookup';
|
|
import type { NisInfo, QueueTotal } from './types.js';
|
|
|
|
import { useMemo } from 'react';
|
|
|
|
import { createNamedHook, useApi, useCallMulti } from '@pezkuwi/react-hooks';
|
|
|
|
interface State {
|
|
info?: NisInfo;
|
|
}
|
|
|
|
const OPT_GILT = {
|
|
defaultValue: {} as NisInfo,
|
|
transform: ([summary, queueTotals]: [PalletNisSummaryRecord, [u32, u128][]]): NisInfo => ({
|
|
queueTotals: queueTotals
|
|
.map(([numItems, balance], index): QueueTotal => ({ balance, index: index + 1, numItems }))
|
|
.filter(({ balance }) => !balance.isZero()),
|
|
summary
|
|
})
|
|
};
|
|
|
|
function useInfoImpl (): State {
|
|
const { api } = useApi();
|
|
const info = useCallMulti<NisInfo>([
|
|
api.query.nis.summary,
|
|
api.query.nis.queueTotals
|
|
], OPT_GILT);
|
|
|
|
return useMemo(
|
|
() => ({ info }),
|
|
[info]
|
|
);
|
|
}
|
|
|
|
export default createNamedHook('useInfo', useInfoImpl);
|