ghost-portal/packages/page-treasury/src/useTipHashes.ts

26 lines
821 B
TypeScript

// Copyright 2017-2022 @polkadot/app-treasury authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { StorageKey } from '@polkadot/types';
import type { Hash } from '@polkadot/types/interfaces';
import { createNamedHook, useApi, useEventTrigger, useMapKeys } from '@polkadot/react-hooks';
const options = {
transform: (keys: StorageKey<[Hash]>[]): string[] =>
keys.map(({ args: [hash] }) => hash.toHex())
};
function useTipHashesImpl (): string[] | undefined {
const { api } = useApi();
const trigger = useEventTrigger([
api.events.tips?.NewTip,
api.events.tips?.TipClosed,
api.events.tips?.TipRetracted
]);
return useMapKeys((api.query.tips || api.query.treasury)?.tips, options, trigger.blockHash);
}
export default createNamedHook('useTipHashes', useTipHashesImpl);