// Copyright 2017-2026 @pezkuwi/react-hooks authors & contributors
// SPDX-License-Identifier: Apache-2.0

import type { UseJudgements } from '@pezkuwi/react-components/types';

import { useMemo } from 'react';

import { getJudgements } from './utils/getJudgements.js';
import { matchRegistrarAccountsWithIndexes } from './utils/matchRegistrarAccountsWithIndexes.js';
import { createNamedHook } from './createNamedHook.js';
import { useAccountInfo } from './useAccountInfo.js';
import { useRegistrars } from './useRegistrars.js';

function useJudgementsImpl (address: string): UseJudgements {
  const { identity } = useAccountInfo(address);
  const { registrars: allRegistrars } = useRegistrars();

  const judgementsWithRegistrarIndexes = useMemo(() => getJudgements(identity), [identity]);

  return useMemo(
    () => matchRegistrarAccountsWithIndexes(judgementsWithRegistrarIndexes, allRegistrars),
    [allRegistrars, judgementsWithRegistrarIndexes]
  );
}

export const useJudgements = createNamedHook('useJudgements', useJudgementsImpl);
