snort/packages/app/src/Element/MutedList.tsx

37 lines
1.1 KiB
TypeScript
Raw Normal View History

2023-02-08 21:10:26 +00:00
import { FormattedMessage } from "react-intl";
2023-02-11 20:05:46 +00:00
import { HexKey } from "@snort/nostr";
2023-01-26 11:34:18 +00:00
import MuteButton from "Element/MuteButton";
import ProfilePreview from "Element/ProfilePreview";
import useModeration from "Hooks/useModeration";
2023-02-08 21:10:26 +00:00
import messages from "./messages";
2023-01-26 11:34:18 +00:00
export interface MutedListProps {
2023-02-10 11:12:11 +00:00
pubkeys: HexKey[];
2023-01-26 11:34:18 +00:00
}
2023-02-10 11:12:11 +00:00
export default function MutedList({ pubkeys }: MutedListProps) {
2023-02-08 21:10:26 +00:00
const { isMuted, muteAll } = useModeration();
const hasAllMuted = pubkeys.every(isMuted);
2023-01-26 11:34:18 +00:00
return (
<div className="main-content">
<div className="flex mt10">
2023-02-08 21:10:26 +00:00
<div className="f-grow bold">
2023-02-09 12:26:54 +00:00
<FormattedMessage {...messages.MuteCount} values={{ n: pubkeys?.length }} />
2023-02-08 21:10:26 +00:00
</div>
<button
disabled={hasAllMuted || pubkeys.length === 0}
className="transparent"
type="button"
2023-02-09 12:26:54 +00:00
onClick={() => muteAll(pubkeys)}>
2023-02-08 21:10:26 +00:00
<FormattedMessage {...messages.MuteAll} />
</button>
</div>
2023-02-09 12:26:54 +00:00
{pubkeys?.map(a => {
return <ProfilePreview actions={<MuteButton pubkey={a} />} pubkey={a} options={{ about: false }} key={a} />;
})}
</div>
);
2023-01-26 11:34:18 +00:00
}