import "./live-chat.css" import { FormattedMessage } from "react-intl" import { EventKind, type NostrEvent, NostrLink, type ParsedZap, type TaggedNostrEvent } from "@snort/system" import { useEventFeed, useEventReactions, useUserProfile } from "@snort/system-react" import { removeUndefined, unixNow, unwrap, NostrPrefix } from "@snort/shared" import { useEffect, useMemo } from "react" import { Icon } from "../icon" import Spinner from "../spinner" import { Text } from "../text" import { Profile } from "../profile" import { ChatMessage } from "./chat-message" import { Goal } from "../goal" import { BadgeInfo } from "../badge" import { WriteMessage } from "./write-message" import useEmoji, { packId } from "@/hooks/emoji" import { useMutedPubkeys } from "@/hooks/lists" import { useBadgeAwards } from "@/hooks/badges" import { useLogin } from "@/hooks/login" import { formatZapAmount } from "@/number" import { LIVE_STREAM_CHAT, LIVE_STREAM_CLIP, LIVE_STREAM_RAID, WEEK } from "@/const" import { findTag, getHost, getTagValues, uniqBy } from "@/utils" import { TopZappers } from "../top-zappers" import { Link, useNavigate } from "react-router" import classNames from "classnames" import { useStream } from "../stream/stream-state" import { useLayout } from "@/pages/layout/context" import { TwitchChatMessage } from "./twitch" import { useLegacyChatFeed } from "@/hooks/legacy-chat" import type { ExternalChatEvent } from "@/service/chat/types" import { YoutubeChatMessage } from "./youtube" import { KickChatMessage } from "./kick" function BadgeAward({ ev }: { ev: NostrEvent }) { const badge = findTag(ev, "a") ?? "" const [k, pubkey, d] = badge.split(":") const awardees = getTagValues(ev.tags, "p") const event = useEventFeed(new NostrLink(NostrPrefix.Address, d, Number(k), pubkey)) return (
awarded to