diff --git a/.drone.yaml b/.drone.yaml index d951288..5f9c509 100644 --- a/.drone.yaml +++ b/.drone.yaml @@ -59,4 +59,4 @@ steps: volumes: - name: cache claim: - name: docker-cache \ No newline at end of file + name: docker-cache diff --git a/src/element/file-uploader.tsx b/src/element/file-uploader.tsx index 922f2c9..d6c372c 100644 --- a/src/element/file-uploader.tsx +++ b/src/element/file-uploader.tsx @@ -78,7 +78,11 @@ export function FileUploader({ defaultImage, onClear, onFileUpload }: FileUpload
{img?.length > 0 && ( diff --git a/src/element/goal.tsx b/src/element/goal.tsx index feb21d0..a241fc6 100644 --- a/src/element/goal.tsx +++ b/src/element/goal.tsx @@ -6,19 +6,20 @@ import Confetti from "react-confetti"; import { type NostrEvent } from "@snort/system"; import { useUserProfile } from "@snort/system-react"; -import { findTag } from "utils"; +import { eventToLink, findTag } from "utils"; import { formatSats } from "number"; import usePreviousValue from "hooks/usePreviousValue"; import { SendZapsDialog } from "element/send-zap"; -import { useZaps } from "hooks/goals"; import { getName } from "element/profile"; import { Icon } from "./icon"; import { FormattedMessage } from "react-intl"; +import { useZaps } from "hooks/zaps"; export function Goal({ ev }: { ev: NostrEvent }) { const profile = useUserProfile(ev.pubkey); const zapTarget = profile?.lud16 ?? profile?.lud06; - const zaps = useZaps(ev, true); + const link = eventToLink(ev); + const zaps = useZaps(link, true); const goalAmount = useMemo(() => { const amount = findTag(ev, "amount"); return amount ? Number(amount) / 1000 : null; diff --git a/src/element/live-chat.tsx b/src/element/live-chat.tsx index 2721654..1caf24e 100644 --- a/src/element/live-chat.tsx +++ b/src/element/live-chat.tsx @@ -1,7 +1,8 @@ import "./live-chat.css"; +import { FormattedMessage } from "react-intl"; import { EventKind, NostrPrefix, NostrLink, ParsedZap, NostrEvent, parseZap, encodeTLV } from "@snort/system"; -import { unixNow, unwrap } from "@snort/shared"; -import { useEffect, useMemo } from "react"; +import { unixNow } from "@snort/shared"; +import { useMemo } from "react"; import uniqBy from "lodash.uniqby"; import { Icon } from "element/icon"; @@ -18,13 +19,12 @@ import { useLiveChatFeed } from "hooks/live-chat"; import { useMutedPubkeys } from "hooks/lists"; import { useBadges } from "hooks/badges"; import { useLogin } from "hooks/login"; -import useTopZappers from "hooks/top-zappers"; import { useAddress } from "hooks/event"; import { formatSats } from "number"; import { WEEK, LIVE_STREAM_CHAT } from "const"; import { findTag, getTagValues, getHost } from "utils"; import { System } from "index"; -import { FormattedMessage } from "react-intl"; +import { TopZappers } from "element/top-zappers"; export interface LiveChatOptions { canWrite?: boolean; @@ -49,28 +49,6 @@ function BadgeAward({ ev }: { ev: NostrEvent }) { ); } -function TopZappers({ zaps }: { zaps: ParsedZap[] }) { - const zappers = useTopZappers(zaps); - - return ( - <> - {zappers.map(({ pubkey, total }) => { - return ( -
- {pubkey === "anon" ? ( -

Anon

- ) : ( - - )} - -

{formatSats(total)}

-
- ); - })} - - ); -} - export function LiveChat({ link, ev, @@ -87,11 +65,6 @@ export function LiveChat({ const host = getHost(ev); const feed = useLiveChatFeed(link, goal ? [goal.id] : undefined); const login = useLogin(); - useEffect(() => { - const pubkeys = [...new Set(feed.zaps.flatMap(a => [a.pubkey, unwrap(findTag(a, "p"))]))]; - System.ProfileLoader.TrackMetadata(pubkeys); - return () => System.ProfileLoader.UntrackMetadata(pubkeys); - }, [feed.zaps]); const started = useMemo(() => { const starts = findTag(ev, "starts"); return starts ? Number(starts) : unixNow() - WEEK; @@ -111,7 +84,6 @@ export function LiveChat({ const events = useMemo(() => { return [...feed.messages, ...feed.zaps, ...awards].sort((a, b) => b.created_at - a.created_at); }, [feed.messages, feed.zaps, awards]); - const streamer = getHost(ev); const naddr = useMemo(() => { if (ev) { return encodeTLV(NostrPrefix.Address, findTag(ev, "d") ?? "", undefined, ev.kind, ev.pubkey); @@ -145,7 +117,7 @@ export function LiveChat({
{goal && } - {login?.pubkey === streamer && } + {login?.pubkey === host && }
)}
@@ -159,7 +131,7 @@ export function LiveChat({ b.id === a.id && b.receiver === streamer); + const zap = zaps.find(b => b.id === a.id && b.receiver === host); if (zap) { return ; } diff --git a/src/element/send-zap.tsx b/src/element/send-zap.tsx index e76d6d9..bca9a15 100644 --- a/src/element/send-zap.tsx +++ b/src/element/send-zap.tsx @@ -129,10 +129,7 @@ export function SendZaps({ lnurl, pubkey, aTag, eTag, targetName, onFinish }: Se
- +
{(isFiat ? usdAmounts : satsAmounts).map(a => ( diff --git a/src/element/stream-cards.tsx b/src/element/stream-cards.tsx index 0813af9..aa3636b 100644 --- a/src/element/stream-cards.tsx +++ b/src/element/stream-cards.tsx @@ -180,12 +180,11 @@ function CardDialog({ header, cta, cancelCta, card, onSave, onCancel }: CardDial const [image, setImage] = useState(card?.image ?? ""); const [content, setContent] = useState(card?.content ?? ""); const [link, setLink] = useState(card?.link ?? ""); + const { formatMessage } = useIntl(); return (
-

- {header || } -

+

{header || }

@@ -220,7 +219,11 @@ function CardDialog({ header, cta, cancelCta, card, onSave, onCancel }: CardDial -