diff options
author | Ansh <anshnanda10@gmail.com> | 2023-03-02 16:09:48 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-02 18:09:48 -0600 |
commit | 75174a6c37a01282b8bd1389fee3fb00488dcf0d (patch) | |
tree | 6ced8feb720a2ccd4c3978740f22ce2ec7e59ccc /src/view/com/util/PostEmbeds/QuoteEmbed.tsx | |
parent | f539659ac8eb0857e888ea2a972f78305a42e201 (diff) | |
download | voidsky-75174a6c37a01282b8bd1389fee3fb00488dcf0d.tar.zst |
73-post-embeds (#253)
* update api to 0.1.3 * add repost modal with reposting functionality * add quote post UI * allow creation and view of quote posts * Validate the post record before rendering a quote post * Use createdAt in quote posts for now * add web modal support * Tune the quote post rendering * Make did and declarationCid optional in postmeta * Make did and declarationCid optional in postmeta * dont allow image or link preview if quote post * Handle no-text quote posts * Tune the repost modal * Tweak composer post text * Fix lint --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/view/com/util/PostEmbeds/QuoteEmbed.tsx')
-rw-r--r-- | src/view/com/util/PostEmbeds/QuoteEmbed.tsx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/view/com/util/PostEmbeds/QuoteEmbed.tsx b/src/view/com/util/PostEmbeds/QuoteEmbed.tsx new file mode 100644 index 000000000..76b71a53d --- /dev/null +++ b/src/view/com/util/PostEmbeds/QuoteEmbed.tsx @@ -0,0 +1,58 @@ +import {StyleSheet} from 'react-native' +import React from 'react' +import {AtUri} from '../../../../third-party/uri' +import {PostMeta} from '../PostMeta' +import {Link} from '../Link' +import {Text} from '../text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {ComposerOptsQuote} from 'state/models/shell-ui' + +const QuoteEmbed = ({quote}: {quote: ComposerOptsQuote}) => { + const pal = usePalette('default') + const itemUrip = new AtUri(quote.uri) + const itemHref = `/profile/${quote.author.handle}/post/${itemUrip.rkey}` + const itemTitle = `Post by ${quote.author.handle}` + const isEmpty = React.useMemo( + () => quote.text.trim().length === 0, + [quote.text], + ) + return ( + <Link + style={[styles.container, pal.border]} + href={itemHref} + title={itemTitle}> + <PostMeta + authorAvatar={quote.author.avatar} + authorHandle={quote.author.handle} + authorDisplayName={quote.author.displayName} + timestamp={quote.indexedAt} + /> + <Text type="post-text" style={pal.text} numberOfLines={6}> + {isEmpty ? ( + <Text style={pal.link} lineHeight={1.5}> + View post + </Text> + ) : ( + quote.text + )} + </Text> + </Link> + ) +} + +export default QuoteEmbed + +const styles = StyleSheet.create({ + container: { + borderRadius: 8, + paddingVertical: 8, + paddingHorizontal: 12, + marginVertical: 8, + borderWidth: 1, + }, + quotePost: { + flex: 1, + paddingLeft: 13, + paddingRight: 8, + }, +}) |