diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-07-27 10:50:12 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-27 10:50:12 -0500 |
commit | 49356700c31a1cb34c252e3aecf18561114916b9 (patch) | |
tree | 60361702f37480e9af1b830030d8c283321e8775 /src/view/com/util/PostMeta.tsx | |
parent | 5a0899b989769dc3417096ae2d040cd768f4524c (diff) | |
download | voidsky-49356700c31a1cb34c252e3aecf18561114916b9.tar.zst |
[APP-782] Support invalid handles correctly (#1049)
* Update profile link construction to support handle.invalid * Update list links to support using handles * Use did for isMe check to ensure invalid handles dont distort the check * Shift the red (error) colors away from the pink spectrum * Add ThemedText helper component * Add sanitizedHandle() helper to render invalid handles well * Fix regression: only show avatar in PostMeta when needed * Restore the color of likes * Remove users with invalid handles from default autosuggests
Diffstat (limited to 'src/view/com/util/PostMeta.tsx')
-rw-r--r-- | src/view/com/util/PostMeta.tsx | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx index 5df6b3983..2ce499765 100644 --- a/src/view/com/util/PostMeta.tsx +++ b/src/view/com/util/PostMeta.tsx @@ -7,13 +7,19 @@ import {usePalette} from 'lib/hooks/usePalette' import {UserAvatar} from './UserAvatar' import {observer} from 'mobx-react-lite' import {sanitizeDisplayName} from 'lib/strings/display-names' +import {sanitizeHandle} from 'lib/strings/handles' import {isAndroid} from 'platform/detection' import {TimeElapsed} from './TimeElapsed' +import {makeProfileLink} from 'lib/routes/links' interface PostMetaOpts { - authorAvatar?: string - authorHandle: string - authorDisplayName: string | undefined + author: { + avatar?: string + did: string + handle: string + displayName?: string | undefined + } + showAvatar?: boolean authorHasWarning: boolean postHref: string timestamp: string @@ -21,15 +27,15 @@ interface PostMetaOpts { export const PostMeta = observer(function (opts: PostMetaOpts) { const pal = usePalette('default') - const displayName = opts.authorDisplayName || opts.authorHandle - const handle = opts.authorHandle + const displayName = opts.author.displayName || opts.author.handle + const handle = opts.author.handle return ( <View style={styles.metaOneLine}> - {typeof opts.authorAvatar !== 'undefined' && ( + {opts.showAvatar && typeof opts.author.avatar !== 'undefined' && ( <View style={styles.avatar}> <UserAvatar - avatar={opts.authorAvatar} + avatar={opts.author.avatar} size={16} // TODO moderation /> @@ -43,17 +49,17 @@ export const PostMeta = observer(function (opts: PostMetaOpts) { lineHeight={1.2} text={ <> - {sanitizeDisplayName(displayName)} + {sanitizeDisplayName(displayName)} <Text type="md" - style={[pal.textLight]} numberOfLines={1} - lineHeight={1.2}> - @{handle} + lineHeight={1.2} + style={pal.textLight}> + {sanitizeHandle(handle, '@')} </Text> </> } - href={`/profile/${opts.authorHandle}`} + href={makeProfileLink(opts.author)} /> </View> {!isAndroid && ( @@ -85,6 +91,7 @@ export const PostMeta = observer(function (opts: PostMetaOpts) { const styles = StyleSheet.create({ metaOneLine: { flexDirection: 'row', + alignItems: 'baseline', paddingBottom: 2, gap: 4, }, |