diff options
author | Eric Bailey <git@esb.lol> | 2024-06-18 17:33:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-19 01:33:17 +0300 |
commit | c92ef2fe31c6fcafa9bcb398562bc10191b3f4e4 (patch) | |
tree | ffc83e6f8ace89a2f6f811e533cd6184c9583d73 /src/components/KnownFollowers.tsx | |
parent | 32b40631851c3c3f5ae2400c4bb89e009e71a9da (diff) | |
download | voidsky-c92ef2fe31c6fcafa9bcb398562bc10191b3f4e4.tar.zst |
Better handling of blocks in `KnownFollowers` (#4563)
* Better handle nested conditionals, use renderable items to determine UI * Better translate * Fix translation and fix missing case in the process * Clarify naming * Add safeguard * Remove unneeded msg --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/components/KnownFollowers.tsx')
-rw-r--r-- | src/components/KnownFollowers.tsx | 67 |
1 files changed, 49 insertions, 18 deletions
diff --git a/src/components/KnownFollowers.tsx b/src/components/KnownFollowers.tsx index 63f61ce85..7b861dc66 100644 --- a/src/components/KnownFollowers.tsx +++ b/src/components/KnownFollowers.tsx @@ -100,7 +100,15 @@ function KnownFollowersInner({ moderation, } }) - const count = cachedKnownFollowers.count + + // Does not have blocks applied. Always >= slices.length + const serverCount = cachedKnownFollowers.count + + /* + * We check above too, but here for clarity and a reminder to _check for + * valid indices_ + */ + if (slice.length === 0) return null return ( <Link @@ -164,31 +172,54 @@ function KnownFollowersInner({ }, ]} numberOfLines={2}> - {count > 2 ? ( - <Trans> - Followed by{' '} - <Text key={slice[0].profile.did} style={textStyle}> - {slice[0].profile.displayName} - </Text> - ,{' '} - <Text key={slice[1].profile.did} style={textStyle}> - {slice[1].profile.displayName} - </Text> - , and{' '} - <Plural value={count - 2} one="# other" other="# others" /> - </Trans> - ) : count === 2 ? ( + {slice.length >= 2 ? ( + // 2-n followers, including blocks + serverCount > 2 ? ( + <Trans> + Followed by{' '} + <Text key={slice[0].profile.did} style={textStyle}> + {slice[0].profile.displayName} + </Text> + ,{' '} + <Text key={slice[1].profile.did} style={textStyle}> + {slice[1].profile.displayName} + </Text> + , and{' '} + <Plural + value={serverCount - 2} + one="# other" + other="# others" + /> + </Trans> + ) : ( + // only 2 + <Trans> + Followed by{' '} + <Text key={slice[0].profile.did} style={textStyle}> + {slice[0].profile.displayName} + </Text>{' '} + and{' '} + <Text key={slice[1].profile.did} style={textStyle}> + {slice[1].profile.displayName} + </Text> + </Trans> + ) + ) : serverCount > 1 ? ( + // 1-n followers, including blocks <Trans> Followed by{' '} <Text key={slice[0].profile.did} style={textStyle}> {slice[0].profile.displayName} </Text>{' '} and{' '} - <Text key={slice[1].profile.did} style={textStyle}> - {slice[1].profile.displayName} - </Text> + <Plural + value={serverCount - 1} + one="# other" + other="# others" + /> </Trans> ) : ( + // only 1 <Trans> Followed by{' '} <Text key={slice[0].profile.did} style={textStyle}> |