import { useSelector } from 'react-redux';
import { getSubjectMetadata } from '../selectors';

/**
 * @typedef {Object} OriginMetadata
 * @property {string} hostname - The hostname of the origin (host + port)
 * @property {string} origin - The original origin string itself
 * @property {string} [iconUrl] - The origin's site icon URL, if available
 * @property {string} [name] - The registered name of the origin if available
 */

/**
 * Gets origin metadata from redux and formats it appropriately.
 * @param {string} origin - The fully formed url of the site interacting with
 *  MetaMask
 * @returns {OriginMetadata | null} - The origin metadata available for the
 *  current origin
 */
export function useOriginMetadata(origin) {
  const subjectMetadata = useSelector(getSubjectMetadata);
  if (!origin) {
    return null;
  }
  const url = new URL(origin);

  const minimumOriginMetadata = {
    host: url.host,
    hostname: url.hostname,
    origin,
  };

  if (subjectMetadata?.[origin]) {
    return {
      ...minimumOriginMetadata,
      ...subjectMetadata[origin],
    };
  }
  return minimumOriginMetadata;
}