// Copyright 2017-2025 @pezkuwi/app-treasury authors & contributors
// SPDX-License-Identifier: Apache-2.0

import type { StorageKey } from '@pezkuwi/types';
import type { Hash } from '@pezkuwi/types/interfaces';

import { createNamedHook, useApi, useEventTrigger, useMapKeys } from '@pezkuwi/react-hooks';

const OPT = {
  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, [], OPT, trigger.blockHash);
}

export default createNamedHook('useTipHashes', useTipHashesImpl);
