diff options
author | Paul Frazee <pfrazee@gmail.com> | 2024-06-18 16:36:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-19 02:36:46 +0300 |
commit | 07c2be255f42c60401cec1476e3347bdb0b28db5 (patch) | |
tree | 80d96bc687cc626a749c0539984b8ad5d66915c0 /src/view/com/util/UserAvatar.tsx | |
parent | ac08c761687f87baaa60b353c7d432ace8d7eca3 (diff) | |
download | voidsky-07c2be255f42c60401cec1476e3347bdb0b28db5.tar.zst |
Collection of moderation fixes (#4566)
* Fix: dont blur parents in threads that embed blocks * After tapping 'Show hidden replies', show the individual hider cards * Add shape override to UserAvatar and fix the fallback avi for labelers * Fix precedence * Detect shape for DefaultAvatar --------- Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
Diffstat (limited to 'src/view/com/util/UserAvatar.tsx')
-rw-r--r-- | src/view/com/util/UserAvatar.tsx | 35 |
1 files changed, 24 insertions, 11 deletions
diff --git a/src/view/com/util/UserAvatar.tsx b/src/view/com/util/UserAvatar.tsx index 587b466a3..c212ea4c0 100644 --- a/src/view/com/util/UserAvatar.tsx +++ b/src/view/com/util/UserAvatar.tsx @@ -35,6 +35,7 @@ export type UserAvatarType = 'user' | 'algo' | 'list' | 'labeler' interface BaseUserAvatarProps { type?: UserAvatarType + shape?: 'circle' | 'square' size: number avatar?: string | null } @@ -60,12 +61,16 @@ const BLUR_AMOUNT = isWeb ? 5 : 100 let DefaultAvatar = ({ type, + shape: overrideShape, size, }: { type: UserAvatarType + shape?: 'square' | 'circle' size: number }): React.ReactNode => { + const finalShape = overrideShape ?? (type === 'user' ? 'circle' : 'square') if (type === 'algo') { + // TODO: shape=circle // Font Awesome Pro 6.4.0 by @fontawesome -https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. return ( <Svg @@ -84,6 +89,7 @@ let DefaultAvatar = ({ ) } if (type === 'list') { + // TODO: shape=circle // Font Awesome Pro 6.4.0 by @fontawesome -https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. return ( <Svg @@ -117,14 +123,18 @@ let DefaultAvatar = ({ viewBox="0 0 32 32" fill="none" stroke="none"> - <Rect - x="0" - y="0" - width="32" - height="32" - rx="3" - fill={tokens.color.temp_purple} - /> + {finalShape === 'square' ? ( + <Rect + x="0" + y="0" + width="32" + height="32" + rx="3" + fill={tokens.color.temp_purple} + /> + ) : ( + <Circle cx="16" cy="16" r="16" fill={tokens.color.temp_purple} /> + )} <Path d="M24 9.75L16 7L8 9.75V15.9123C8 20.8848 12 23 16 25.1579C20 23 24 20.8848 24 15.9123V9.75Z" stroke="white" @@ -135,6 +145,7 @@ let DefaultAvatar = ({ </Svg> ) } + // TODO: shape=square return ( <Svg testID="userAvatarFallback" @@ -159,6 +170,7 @@ export {DefaultAvatar} let UserAvatar = ({ type = 'user', + shape: overrideShape, size, avatar, moderation, @@ -166,9 +178,10 @@ let UserAvatar = ({ }: UserAvatarProps): React.ReactNode => { const pal = usePalette('default') const backgroundColor = pal.colors.backgroundLight + const finalShape = overrideShape ?? (type === 'user' ? 'circle' : 'square') const aviStyle = useMemo(() => { - if (type === 'algo' || type === 'list' || type === 'labeler') { + if (finalShape === 'square') { return { width: size, height: size, @@ -182,7 +195,7 @@ let UserAvatar = ({ borderRadius: Math.floor(size / 2), backgroundColor, } - }, [type, size, backgroundColor]) + }, [finalShape, size, backgroundColor]) const alert = useMemo(() => { if (!moderation?.alert) { @@ -224,7 +237,7 @@ let UserAvatar = ({ </View> ) : ( <View style={{width: size, height: size}}> - <DefaultAvatar type={type} size={size} /> + <DefaultAvatar type={type} shape={finalShape} size={size} /> {alert} </View> ) |