about summary refs log tree commit diff
path: root/src/view/com/util/PostEmbeds/QuoteEmbed.tsx
diff options
context:
space:
mode:
authorAnsh <anshnanda10@gmail.com>2023-03-02 16:09:48 -0800
committerGitHub <noreply@github.com>2023-03-02 18:09:48 -0600
commit75174a6c37a01282b8bd1389fee3fb00488dcf0d (patch)
tree6ced8feb720a2ccd4c3978740f22ce2ec7e59ccc /src/view/com/util/PostEmbeds/QuoteEmbed.tsx
parentf539659ac8eb0857e888ea2a972f78305a42e201 (diff)
downloadvoidsky-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.tsx58
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,
+  },
+})