Merge pull request 'feat: use hosts mutelist for chat' (#72) from streamer-mutes into main
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: Kieran/stream#72 Reviewed-by: Kieran <kieran@noreply.localhost>
This commit is contained in:
commit
aa03d616f5
@ -22,6 +22,7 @@ import { NewGoalDialog } from "element/new-goal";
|
|||||||
import { WriteMessage } from "element/write-message";
|
import { WriteMessage } from "element/write-message";
|
||||||
import useEmoji, { packId } from "hooks/emoji";
|
import useEmoji, { packId } from "hooks/emoji";
|
||||||
import { useLiveChatFeed } from "hooks/live-chat";
|
import { useLiveChatFeed } from "hooks/live-chat";
|
||||||
|
import { useMutedPubkeys } from "hooks/lists";
|
||||||
import { useBadges } from "hooks/badges";
|
import { useBadges } from "hooks/badges";
|
||||||
import { useLogin } from "hooks/login";
|
import { useLogin } from "hooks/login";
|
||||||
import useTopZappers from "hooks/top-zappers";
|
import useTopZappers from "hooks/top-zappers";
|
||||||
@ -100,10 +101,10 @@ export function LiveChat({
|
|||||||
System.ProfileLoader.TrackMetadata(pubkeys);
|
System.ProfileLoader.TrackMetadata(pubkeys);
|
||||||
return () => System.ProfileLoader.UntrackMetadata(pubkeys);
|
return () => System.ProfileLoader.UntrackMetadata(pubkeys);
|
||||||
}, [feed.zaps]);
|
}, [feed.zaps]);
|
||||||
|
|
||||||
const mutedPubkeys = useMemo(() => {
|
const mutedPubkeys = useMemo(() => {
|
||||||
return new Set(getTagValues(login?.muted.tags ?? [], "p"));
|
return new Set(getTagValues(login?.muted.tags ?? [], "p"));
|
||||||
}, [login]);
|
}, [login]);
|
||||||
|
const hostMutedPubkeys = useMutedPubkeys(host);
|
||||||
const userEmojiPacks = login?.emojis ?? [];
|
const userEmojiPacks = login?.emojis ?? [];
|
||||||
const channelEmojiPacks = useEmoji(host);
|
const channelEmojiPacks = useEmoji(host);
|
||||||
const allEmojiPacks = useMemo(() => {
|
const allEmojiPacks = useMemo(() => {
|
||||||
@ -131,8 +132,10 @@ export function LiveChat({
|
|||||||
}
|
}
|
||||||
}, [ev]);
|
}, [ev]);
|
||||||
const filteredEvents = useMemo(() => {
|
const filteredEvents = useMemo(() => {
|
||||||
return events.filter((e) => !mutedPubkeys.has(e.pubkey));
|
return events.filter(
|
||||||
}, [events, mutedPubkeys]);
|
(e) => !mutedPubkeys.has(e.pubkey) && !hostMutedPubkeys.has(e.pubkey)
|
||||||
|
);
|
||||||
|
}, [events, mutedPubkeys, hostMutedPubkeys]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="live-chat" style={height ? { height: `${height}px` } : {}}>
|
<div className="live-chat" style={height ? { height: `${height}px` } : {}}>
|
||||||
|
@ -47,7 +47,7 @@ export function LoggedInMuteButton({ pubkey }: { pubkey: string }) {
|
|||||||
<AsyncButton
|
<AsyncButton
|
||||||
type="button"
|
type="button"
|
||||||
className="btn delete-button"
|
className="btn delete-button"
|
||||||
onClick={() => isMuted ? unmute() : mute()}
|
onClick={() => (isMuted ? unmute() : mute())}
|
||||||
>
|
>
|
||||||
{isMuted ? "Unmute" : "Mute"}
|
{isMuted ? "Unmute" : "Mute"}
|
||||||
</AsyncButton>
|
</AsyncButton>
|
||||||
|
29
src/hooks/lists.ts
Normal file
29
src/hooks/lists.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { useMemo } from "react";
|
||||||
|
|
||||||
|
import { RequestBuilder, ReplaceableNoteStore } from "@snort/system";
|
||||||
|
import { useRequestBuilder } from "@snort/system-react";
|
||||||
|
|
||||||
|
import { MUTED } from "const";
|
||||||
|
import { getTagValues } from "utils";
|
||||||
|
import { System } from "index";
|
||||||
|
|
||||||
|
export function useMutedPubkeys(host?: string, leaveOpen = false) {
|
||||||
|
const mutedSub = useMemo(() => {
|
||||||
|
if (!host) return null;
|
||||||
|
const rb = new RequestBuilder(`muted:${host}`);
|
||||||
|
rb.withOptions({ leaveOpen });
|
||||||
|
rb.withFilter().kinds([MUTED]).authors([host]);
|
||||||
|
return rb;
|
||||||
|
}, [host]);
|
||||||
|
|
||||||
|
const { data: muted } = useRequestBuilder<ReplaceableNoteStore>(
|
||||||
|
System,
|
||||||
|
ReplaceableNoteStore,
|
||||||
|
mutedSub
|
||||||
|
);
|
||||||
|
const mutedPubkeys = useMemo(() => {
|
||||||
|
return new Set(getTagValues(muted?.tags ?? [], "p"));
|
||||||
|
}, [muted]);
|
||||||
|
|
||||||
|
return mutedPubkeys;
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user