ghost-portal/packages/page-assets/src/useAssetIds.ts
Jaco c21dadcd9e
Optimize crowdloan refresh (delta only on events) (#5549)
* Optimize crowdloan refresh (delata only on events)

* Adjust own contributions
2021-06-10 09:05:40 +02:00

21 lines
745 B
TypeScript

// Copyright 2017-2021 @polkadot/app-assets authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { StorageKey } from '@polkadot/types';
import type { AssetId } from '@polkadot/types/interfaces';
import { useApi, useEventTrigger, useMapKeys } from '@polkadot/react-hooks';
function extractAssetIds (keys: StorageKey<[AssetId]>[]): AssetId[] {
return keys
.map(({ args: [assetId] }) => assetId)
.sort((a, b) => a.cmp(b));
}
export default function useAssetIds (): AssetId[] | undefined {
const { api } = useApi();
const trigger = useEventTrigger([api.events.assets.Created, api.events.assets.Destroyed]);
return useMapKeys(api.query.assets.asset, { at: trigger.blockHash, transform: extractAssetIds });
}