import { useSelector } from 'react-redux'; import { getSubjectMetadata } from '../selectors'; import { SUBJECT_TYPES } from '../../shared/constants/app'; /** * @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, subjectType: SUBJECT_TYPES.UNKNOWN, }; if (subjectMetadata?.[origin]) { return { ...minimumOriginMetadata, ...subjectMetadata[origin], }; } return minimumOriginMetadata; }