Skip to content

Commit

Permalink
fix: replace isEmpty checks with utility function in account info hoo…
Browse files Browse the repository at this point in the history
…ks (#11355)
  • Loading branch information
ap211unitech authored Mar 4, 2025
1 parent 151f1bf commit b46bc1d
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 3 deletions.
5 changes: 3 additions & 2 deletions packages/react-hooks/src/useAccountInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
import { keyring } from '@polkadot/ui-keyring';
import { isFunction, isHex } from '@polkadot/util';

import { isEmpty } from './utils/isEmpty.js';
import { createNamedHook } from './createNamedHook.js';
import { useApi } from './useApi.js';
import { useCall } from './useCall.js';
Expand Down Expand Up @@ -59,14 +60,14 @@ function useAccountInfoImpl (value: string | null, isContract = false): UseAccou
useEffect((): void => {
validator && setFlags((flags) => ({
...flags,
isValidator: !validator.isEmpty
isValidator: !isEmpty(validator)
}));
}, [validator]);

useEffect((): void => {
nominator && setFlags((flags) => ({
...flags,
isNominator: !nominator.isEmpty
isNominator: !isEmpty(nominator)
}));
}, [nominator]);

Expand Down
3 changes: 2 additions & 1 deletion packages/react-hooks/src/useOwnStashInfos.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { useEffect, useMemo, useState } from 'react';

import { u8aConcat, u8aToHex } from '@polkadot/util';

import { isEmpty } from './utils/isEmpty.js';
import { createNamedHook } from './createNamedHook.js';
import { useAccounts } from './useAccounts.js';
import { useApi } from './useApi.js';
Expand All @@ -36,7 +37,7 @@ const QUERY_OPTS = {

function getStakerState (stashId: string, allAccounts: string[], [isOwnStash, { claimedRewardsEras, controllerId: _controllerId, exposureMeta, exposurePaged, nextSessionIds: _nextSessionIds, nominators, rewardDestination, sessionIds: _sessionIds, stakingLedger, validatorPrefs }, validateInfo]: [boolean, DeriveStakingAccount, ValidatorInfo]): StakerState {
const isStashNominating = !!(nominators?.length);
const isStashValidating = !(Array.isArray(validateInfo) ? validateInfo[1].isEmpty : validateInfo.isEmpty);
const isStashValidating = !(Array.isArray(validateInfo) ? isEmpty(validateInfo[1] as ValidatorPrefs) : isEmpty(validateInfo));
const nextSessionIds = _nextSessionIds instanceof Map
? [..._nextSessionIds.values()]
: _nextSessionIds;
Expand Down
14 changes: 14 additions & 0 deletions packages/react-hooks/src/utils/isEmpty.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Copyright 2017-2025 @polkadot/react-hooks authors & contributors
// SPDX-License-Identifier: Apache-2.0

import type { Struct } from '@polkadot/types-codec';

export const isEmpty = (struct: Struct) => {
for (const v of struct.values()) {
if (!v.isEmpty) {
return false;
}
}

return true;
};

0 comments on commit b46bc1d

Please sign in to comment.