From 075ffdf583c5393b896d22dd179d03208311ef4a Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Thu, 14 Dec 2023 10:31:49 -0800 Subject: PWI behavior updates (#2207) * Enable PWI * Disable access to feeds on PWI * Remove feeds nav item from drawer when signed out * Replace discover feed on home with a CTA * Wire up the sign in and create account buttons to go straight to their respective screens * Give a custom ScreenHider interface for no-pwi * Add side borders on desktop to the screen hider * Filter accounts in the autocomplete according to mod settings * Trim replies in the post thread that are pwi opt-out * Show 'learn more' on the content hider when no-override is enabled * Apply the moderation filter on profile cards * Disable post search on logged-out view * Update locale files * Bump api pkg * Ensure feeds with no posts don't show as NSFPublic * Fix types --------- Co-authored-by: Eric Bailey --- src/view/com/post-thread/PostThread.tsx | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/view/com/post-thread/PostThread.tsx') diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx index f27da331f..917550884 100644 --- a/src/view/com/post-thread/PostThread.tsx +++ b/src/view/com/post-thread/PostThread.tsx @@ -157,7 +157,9 @@ function PostThreadLoaded({ // construct content const posts = React.useMemo(() => { let arr = [TOP_COMPONENT].concat( - Array.from(flattenThreadSkeleton(sortThread(thread, threadViewPrefs))), + Array.from( + flattenThreadSkeleton(sortThread(thread, threadViewPrefs), hasSession), + ), ) if (arr.length > maxVisible) { arr = arr.slice(0, maxVisible).concat([LOAD_MORE]) @@ -166,7 +168,7 @@ function PostThreadLoaded({ arr.push(BOTTOM_COMPONENT) } return arr - }, [thread, maxVisible, threadViewPrefs]) + }, [thread, maxVisible, threadViewPrefs, hasSession]) /** * NOTE @@ -468,20 +470,24 @@ function isThreadPost(v: unknown): v is ThreadPost { function* flattenThreadSkeleton( node: ThreadNode, + hasSession: boolean, ): Generator { if (node.type === 'post') { if (node.parent) { - yield* flattenThreadSkeleton(node.parent) + yield* flattenThreadSkeleton(node.parent, hasSession) } else if (node.ctx.isParentLoading) { yield PARENT_SPINNER } + if (!hasSession && node.ctx.depth > 0 && hasPwiOptOut(node)) { + return + } yield node if (node.ctx.isHighlightedPost && !node.post.viewer?.replyDisabled) { yield REPLY_PROMPT } if (node.replies?.length) { for (const reply of node.replies) { - yield* flattenThreadSkeleton(reply) + yield* flattenThreadSkeleton(reply, hasSession) } } else if (node.ctx.isChildLoading) { yield CHILD_SPINNER @@ -493,6 +499,10 @@ function* flattenThreadSkeleton( } } +function hasPwiOptOut(node: ThreadPost) { + return !!node.post.author.labels?.find(l => l.val === '!no-unauthenticated') +} + function hasBranchingReplies(node: ThreadNode) { if (node.type !== 'post') { return false -- cgit 1.4.1