about summary refs log tree commit diff
path: root/src/view/com/composer/ExternalEmbed.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/com/composer/ExternalEmbed.tsx')
-rw-r--r--src/view/com/composer/ExternalEmbed.tsx28
1 files changed, 22 insertions, 6 deletions
diff --git a/src/view/com/composer/ExternalEmbed.tsx b/src/view/com/composer/ExternalEmbed.tsx
index d7dc32f14..1f1feaf91 100644
--- a/src/view/com/composer/ExternalEmbed.tsx
+++ b/src/view/com/composer/ExternalEmbed.tsx
@@ -1,6 +1,8 @@
 import React from 'react'
 import {StyleProp, View, ViewStyle} from 'react-native'
+import {AppBskyGraphStarterpack} from '@atproto/api'
 
+import {ResolvedLink} from '#/lib/api/resolve'
 import {cleanError} from '#/lib/strings/errors'
 import {
   useResolveGifQuery,
@@ -75,12 +77,7 @@ export const ExternalEmbedLink = ({
   const linkInfo = React.useMemo(
     () =>
       data && {
-        title:
-          data.type === 'external'
-            ? data.title
-            : data.kind === 'other'
-            ? data.meta.title
-            : uri,
+        title: getExternalLinkTitle(data) ?? uri,
         uri,
         description: data.type === 'external' ? data.description : '',
         thumb: data.type === 'external' ? data.thumb?.source.path : undefined,
@@ -137,3 +134,22 @@ function Container({
     </View>
   )
 }
+
+function getExternalLinkTitle(link: ResolvedLink): string | undefined {
+  if (link.type === 'external') {
+    return link.title
+  }
+  switch (link.kind) {
+    // These are currently treated as external.
+    // TODO: Display them as embeds instead.
+    case 'feed':
+      return link.view.displayName
+    case 'list':
+      return link.view.name
+    case 'starter-pack':
+      const record = link.view.record
+      return AppBskyGraphStarterpack.isRecord(record)
+        ? record.name
+        : 'Starter Pack'
+  }
+}