about summary refs log tree commit diff
path: root/src/components/Post/Embed/LazyQuoteEmbed.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/Post/Embed/LazyQuoteEmbed.tsx')
-rw-r--r--src/components/Post/Embed/LazyQuoteEmbed.tsx37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/components/Post/Embed/LazyQuoteEmbed.tsx b/src/components/Post/Embed/LazyQuoteEmbed.tsx
new file mode 100644
index 000000000..fdc1c6309
--- /dev/null
+++ b/src/components/Post/Embed/LazyQuoteEmbed.tsx
@@ -0,0 +1,37 @@
+import {useMemo} from 'react'
+import {View} from 'react-native'
+
+import {createEmbedViewRecordFromPost} from '#/state/queries/postgate/util'
+import {useResolveLinkQuery} from '#/state/queries/resolve-link'
+import {atoms as a, useTheme} from '#/alf'
+import {QuoteEmbed} from '#/components/Post/Embed'
+
+export function LazyQuoteEmbed({uri}: {uri: string}) {
+  const t = useTheme()
+  const {data} = useResolveLinkQuery(uri)
+
+  const view = useMemo(() => {
+    if (!data || data.type !== 'record' || data.kind !== 'post') return
+    return createEmbedViewRecordFromPost(data.view)
+  }, [data])
+
+  return view ? (
+    <QuoteEmbed
+      embed={{
+        type: 'post',
+        view,
+      }}
+    />
+  ) : (
+    <View
+      style={[
+        a.w_full,
+        a.rounded_md,
+        t.atoms.bg_contrast_25,
+        {
+          height: 68,
+        },
+      ]}
+    />
+  )
+}