mirror of
https://github.com/pezkuwichain/pezkuwi-apps.git
synced 2026-05-07 06:07:58 +00:00
d21bfb1320
Rebranded terminology: - Polkadot → Pezkuwi - Kusama → Dicle - Westend → Zagros - Rococo → PezkuwiChain - Substrate → Bizinikiwi - parachain → teyrchain Custom logos with Kurdistan brand colors (#e6007a → #86e62a): - bizinikiwi-hexagon.svg - sora-bizinikiwi.svg - hezscanner.svg - heztreasury.svg - pezkuwiscan.svg - pezkuwistats.svg - pezkuwiassembly.svg - pezkuwiholic.svg
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
// Copyright 2017-2025 @pezkuwi/app-staking authors & contributors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
import type { Option } from '@pezkuwi/types';
|
|
import type { PalletNominationPoolsPoolMember } from '@pezkuwi/types/lookup';
|
|
import type { AccountInfo } from './types.js';
|
|
|
|
import { useEffect, useState } from 'react';
|
|
|
|
import { createNamedHook, useApi, useCall, useIsMountedRef } from '@pezkuwi/react-hooks';
|
|
|
|
const OPT_DEL = {
|
|
transform: (opt: Option<PalletNominationPoolsPoolMember>): PalletNominationPoolsPoolMember | null =>
|
|
opt.unwrapOr(null)
|
|
};
|
|
|
|
function useAccountInfoImpl (accountId: string): AccountInfo | null {
|
|
const { api } = useApi();
|
|
const isMountedRef = useIsMountedRef();
|
|
const [state, setState] = useState<AccountInfo | null>(null);
|
|
const member = useCall(api.query.nominationPools.poolMembers, [accountId], OPT_DEL);
|
|
|
|
useEffect((): void => {
|
|
member &&
|
|
api.call.nominationPoolsApi
|
|
?.pendingRewards(accountId)
|
|
.then((claimable) =>
|
|
isMountedRef.current && setState({ claimable, member })
|
|
)
|
|
.catch(console.error);
|
|
}, [accountId, member, api, isMountedRef]);
|
|
|
|
return state;
|
|
}
|
|
|
|
export default createNamedHook('useAccountInfo', useAccountInfoImpl);
|