// Copyright 2017-2021 @polkadot/react-hooks authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { QueryableStorageEntry } from '@polkadot/api/types'; import { useEffect, useState } from 'react'; interface Options { at?: string | null | false; transform?: (value: any[]) => T[]; } export function useMapKeys (entry?: QueryableStorageEntry<'promise'> | null | false, { at, transform }: Options = {}): T[] | undefined { const [state, setState] = useState(); useEffect((): void => { entry && ( at && at !== '0' ? entry.keysAt(at) : entry.keys() ).then((keys) => setState( transform ? transform(keys) : keys as unknown as T[] )).catch(console.error); }, [at, entry, transform]); return state; }