diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-12-11 12:58:34 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-11 12:58:34 -0800 |
commit | b82c5177b9987efe92a642e9619dde604dda3da0 (patch) | |
tree | e5b11261b8e97b3a0d015ad09601cd44e0b33ce0 /src/view/com/util/FeedInfoText.tsx | |
parent | 3d229b5fd6d4f0773f607cf1d6e7b2377c33ccbb (diff) | |
download | voidsky-b82c5177b9987efe92a642e9619dde604dda3da0.tar.zst |
Reduce calls to getFeedGenerator and getFeed (#2166)
* Reduce calls to getFeedGenerator by the mergefeed * Dont run end-of-follows mergefeed requests until actually at the end of the feed * build AWS container --------- Co-authored-by: Jake Gold <jake@blueskyweb.xyz>
Diffstat (limited to 'src/view/com/util/FeedInfoText.tsx')
-rw-r--r-- | src/view/com/util/FeedInfoText.tsx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/view/com/util/FeedInfoText.tsx b/src/view/com/util/FeedInfoText.tsx new file mode 100644 index 000000000..54124c739 --- /dev/null +++ b/src/view/com/util/FeedInfoText.tsx @@ -0,0 +1,54 @@ +import React from 'react' +import {StyleProp, StyleSheet, TextStyle} from 'react-native' +import {TextLinkOnWebOnly} from './Link' +import {LoadingPlaceholder} from './LoadingPlaceholder' +import {TypographyVariant} from 'lib/ThemeContext' +import {sanitizeDisplayName} from 'lib/strings/display-names' +import {useFeedSourceInfoQuery} from '#/state/queries/feed' + +export function FeedNameText({ + type = 'md', + uri, + href, + lineHeight, + numberOfLines, + style, +}: { + type?: TypographyVariant + uri: string + href: string + lineHeight?: number + numberOfLines?: number + style?: StyleProp<TextStyle> +}) { + const {data, isError} = useFeedSourceInfoQuery({uri}) + + let inner + if (data?.displayName || isError) { + const displayName = data?.displayName || uri.split('/').pop() || '' + inner = ( + <TextLinkOnWebOnly + type={type} + style={style} + lineHeight={lineHeight} + numberOfLines={numberOfLines} + href={href} + text={sanitizeDisplayName(displayName)} + /> + ) + } else { + inner = ( + <LoadingPlaceholder + width={80} + height={8} + style={styles.loadingPlaceholder} + /> + ) + } + + return inner +} + +const styles = StyleSheet.create({ + loadingPlaceholder: {position: 'relative', top: 1, left: 2}, +}) |