ignore moderation when viewing profile

This commit is contained in:
Alejandro Gomez 2023-01-28 22:09:02 +01:00
parent ddec154fcb
commit 5e0b36f165
No known key found for this signature in database
GPG Key ID: 4DF39E566658C817
3 changed files with 8 additions and 6 deletions

View File

@ -19,6 +19,7 @@ export interface NoteProps {
isThread?: boolean, isThread?: boolean,
related: TaggedRawEvent[], related: TaggedRawEvent[],
highlight?: boolean, highlight?: boolean,
ignoreModeration?: boolean,
options?: { options?: {
showHeader?: boolean, showHeader?: boolean,
showTime?: boolean, showTime?: boolean,
@ -46,7 +47,7 @@ const HiddenNote = ({ children }: any) => {
export default function Note(props: NoteProps) { export default function Note(props: NoteProps) {
const navigate = useNavigate(); const navigate = useNavigate();
const { data, isThread, related, highlight, options: opt, ["data-ev"]: parsedEvent } = props const { data, isThread, related, highlight, options: opt, ["data-ev"]: parsedEvent, ignoreModeration = false} = props
const ev = useMemo(() => parsedEvent ?? new NEvent(data), [data]); const ev = useMemo(() => parsedEvent ?? new NEvent(data), [data]);
const pubKeys = useMemo(() => ev.Thread?.PubKeys || [], [ev]); const pubKeys = useMemo(() => ev.Thread?.PubKeys || [], [ev]);
const users = useProfile(pubKeys); const users = useProfile(pubKeys);
@ -176,5 +177,5 @@ export default function Note(props: NoteProps) {
</div> </div>
) )
return isOpMuted ? <HiddenNote>{note}</HiddenNote> : note return !ignoreModeration && isOpMuted ? <HiddenNote>{note}</HiddenNote> : note
} }

View File

@ -15,19 +15,20 @@ export interface TimelineProps {
postsOnly: boolean, postsOnly: boolean,
subject: TimelineSubject, subject: TimelineSubject,
method: "TIME_RANGE" | "LIMIT_UNTIL" method: "TIME_RANGE" | "LIMIT_UNTIL"
ignoreModeration?: boolean
} }
/** /**
* A list of notes by pubkeys * A list of notes by pubkeys
*/ */
export default function Timeline({ subject, postsOnly = false, method }: TimelineProps) { export default function Timeline({ subject, postsOnly = false, method, ignoreModeration = false }: TimelineProps) {
const { muted, isMuted } = useModeration(); const { muted, isMuted } = useModeration();
const { main, related, latest, parent, loadMore, showLatest } = useTimelineFeed(subject, { const { main, related, latest, parent, loadMore, showLatest } = useTimelineFeed(subject, {
method method
}); });
const filterPosts = useCallback((nts: TaggedRawEvent[]) => { const filterPosts = useCallback((nts: TaggedRawEvent[]) => {
return [...nts].sort((a, b) => b.created_at - a.created_at)?.filter(a => postsOnly ? !a.tags.some(b => b[0] === "e") : true).filter(a => !isMuted(a.pubkey)); return [...nts].sort((a, b) => b.created_at - a.created_at)?.filter(a => postsOnly ? !a.tags.some(b => b[0] === "e") : true).filter(a => ignoreModeration || !isMuted(a.pubkey));
}, [postsOnly, muted]); }, [postsOnly, muted]);
const mainFeed = useMemo(() => { const mainFeed = useMemo(() => {
@ -41,7 +42,7 @@ export default function Timeline({ subject, postsOnly = false, method }: Timelin
function eventElement(e: TaggedRawEvent) { function eventElement(e: TaggedRawEvent) {
switch (e.kind) { switch (e.kind) {
case EventKind.TextNote: { case EventKind.TextNote: {
return <Note key={e.id} data={e} related={related.notes} /> return <Note key={e.id} data={e} related={related.notes} ignoreModeration={ignoreModeration} />
} }
case EventKind.Reaction: case EventKind.Reaction:
case EventKind.Repost: { case EventKind.Repost: {

View File

@ -108,7 +108,7 @@ export default function ProfilePage() {
function tabContent() { function tabContent() {
switch (tab) { switch (tab) {
case ProfileTab.Notes: case ProfileTab.Notes:
return <Timeline key={id} subject={{ type: "pubkey", items: [id] }} postsOnly={false} method={"LIMIT_UNTIL"} />; return <Timeline key={id} subject={{ type: "pubkey", items: [id] }} postsOnly={false} method={"LIMIT_UNTIL"} ignoreModeration={true} />;
case ProfileTab.Follows: { case ProfileTab.Follows: {
if (isMe) { if (isMe) {
return ( return (