about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--package.json2
-rw-r--r--src/state/models/post-thread-view.ts24
-rw-r--r--src/view/com/util/PostEmbeds.tsx28
-rw-r--r--yarn.lock8
4 files changed, 22 insertions, 40 deletions
diff --git a/package.json b/package.json
index 8f2723fc6..63e4442f6 100644
--- a/package.json
+++ b/package.json
@@ -13,7 +13,7 @@
     "postinstall": "patch-package"
   },
   "dependencies": {
-    "@atproto/api": "^0.0.4",
+    "@atproto/api": "^0.0.5",
     "@bam.tech/react-native-image-resizer": "^3.0.4",
     "@fortawesome/fontawesome-svg-core": "^6.1.1",
     "@fortawesome/free-regular-svg-icons": "^6.1.1",
diff --git a/src/state/models/post-thread-view.ts b/src/state/models/post-thread-view.ts
index f8065bb20..2ada18a40 100644
--- a/src/state/models/post-thread-view.ts
+++ b/src/state/models/post-thread-view.ts
@@ -4,11 +4,6 @@ import {AtUri} from '../../third-party/uri'
 import {RootStoreModel} from './root-store'
 import * as apilib from '../lib/api'
 
-interface UnknownPost {
-  $type: string
-  [k: string]: unknown
-}
-
 function* reactKeyGenerator(): Generator<string> {
   let counter = 0
   while (true) {
@@ -16,17 +11,6 @@ function* reactKeyGenerator(): Generator<string> {
   }
 }
 
-function isThreadViewPost(
-  v: GetPostThread.ThreadViewPost | GetPostThread.NotFoundPost | UnknownPost,
-): v is GetPostThread.ThreadViewPost {
-  return v.$type === 'app.bksy.feed.getPostThread#threadViewPost'
-}
-function isNotFoundPost(
-  v: GetPostThread.ThreadViewPost | GetPostThread.NotFoundPost | UnknownPost,
-): v is GetPostThread.NotFoundPost {
-  return v.$type === 'app.bsky.feed.getPostThread#notFoundPost'
-}
-
 export class PostThreadViewPostModel {
   // ui state
   _reactKey: string = ''
@@ -58,7 +42,7 @@ export class PostThreadViewPostModel {
   ) {
     // parents
     if (includeParent && v.parent) {
-      if (isThreadViewPost(v.parent)) {
+      if (GetPostThread.isThreadViewPost(v.parent)) {
         const parentModel = new PostThreadViewPostModel(
           this.rootStore,
           keyGen.next().value,
@@ -69,7 +53,7 @@ export class PostThreadViewPostModel {
           parentModel.assignTreeModels(keyGen, v.parent, true, false)
         }
         this.parent = parentModel
-      } else if (isNotFoundPost(v.parent)) {
+      } else if (GetPostThread.isNotFoundPost(v.parent)) {
         this.parent = v.parent
       }
     }
@@ -77,7 +61,7 @@ export class PostThreadViewPostModel {
     if (includeChildren && v.replies) {
       const replies = []
       for (const item of v.replies) {
-        if (isThreadViewPost(item)) {
+        if (GetPostThread.isThreadViewPost(item)) {
           const itemModel = new PostThreadViewPostModel(
             this.rootStore,
             keyGen.next().value,
@@ -88,7 +72,7 @@ export class PostThreadViewPostModel {
             itemModel.assignTreeModels(keyGen, item, false, true)
           }
           replies.push(itemModel)
-        } else if (isNotFoundPost(item)) {
+        } else if (GetPostThread.isNotFoundPost(item)) {
           replies.push(item)
         }
       }
diff --git a/src/view/com/util/PostEmbeds.tsx b/src/view/com/util/PostEmbeds.tsx
index df2de681c..611cedf55 100644
--- a/src/view/com/util/PostEmbeds.tsx
+++ b/src/view/com/util/PostEmbeds.tsx
@@ -1,5 +1,5 @@
 import React from 'react'
-import {ImageStyle, StyleSheet, StyleProp, View, ViewStyle} from 'react-native'
+import {StyleSheet, StyleProp, View, ViewStyle} from 'react-native'
 import {AppBskyEmbedImages, AppBskyEmbedExternal} from '@atproto/api'
 import {Link} from '../util/Link'
 import {Text} from './text/Text'
@@ -23,39 +23,38 @@ export function PostEmbeds({
 }) {
   const pal = usePalette('default')
   const store = useStores()
-  if (embed?.$type === 'app.bsky.embed.images#presented') {
-    const imgEmbed = embed as AppBskyEmbedImages.Presented
-    if (imgEmbed.images.length > 0) {
-      const uris = imgEmbed.images.map(img => img.fullsize)
+  if (AppBskyEmbedImages.isPresented(embed)) {
+    if (embed.images.length > 0) {
+      const uris = embed.images.map(img => img.fullsize)
       const openLightbox = (index: number) => {
         store.shell.openLightbox(new ImagesLightbox(uris, index))
       }
-      if (imgEmbed.images.length === 4) {
+      if (embed.images.length === 4) {
         return (
           <View style={styles.imagesContainer}>
             <ImageLayoutGrid
               type="four"
-              uris={imgEmbed.images.map(img => img.thumb)}
+              uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
             />
           </View>
         )
-      } else if (imgEmbed.images.length === 3) {
+      } else if (embed.images.length === 3) {
         return (
           <View style={styles.imagesContainer}>
             <ImageLayoutGrid
               type="three"
-              uris={imgEmbed.images.map(img => img.thumb)}
+              uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
             />
           </View>
         )
-      } else if (imgEmbed.images.length === 2) {
+      } else if (embed.images.length === 2) {
         return (
           <View style={styles.imagesContainer}>
             <ImageLayoutGrid
               type="two"
-              uris={imgEmbed.images.map(img => img.thumb)}
+              uris={embed.images.map(img => img.thumb)}
               onPress={openLightbox}
             />
           </View>
@@ -64,7 +63,7 @@ export function PostEmbeds({
         return (
           <View style={styles.imagesContainer}>
             <AutoSizedImage
-              uri={imgEmbed.images[0].thumb}
+              uri={embed.images[0].thumb}
               onPress={() => openLightbox(0)}
               containerStyle={{borderRadius: 4}}
             />
@@ -73,9 +72,8 @@ export function PostEmbeds({
       }
     }
   }
-  if (embed?.$type === 'app.bsky.embed.external#presented') {
-    const externalEmbed = embed as AppBskyEmbedExternal.Presented
-    const link = externalEmbed.external
+  if (AppBskyEmbedExternal.isPresented(embed)) {
+    const link = embed.external
     return (
       <Link
         style={[styles.extOuter, pal.view, pal.border, style]}
diff --git a/yarn.lock b/yarn.lock
index 3cac50877..b215cafdb 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -19,10 +19,10 @@
     jsonpointer "^5.0.0"
     leven "^3.1.0"
 
-"@atproto/api@^0.0.4":
-  version "0.0.4"
-  resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.0.4.tgz#f2cb17f234ea1360ebe719be244cabc28724d992"
-  integrity sha512-lSaww8M2R7pRi1p1CUoidiYRNgIcUrEbhk4SZ7dGYhp9M2BKXYr9PzwWDZmB/tmFLdRPzAslmg9QWKbc0mqeUQ==
+"@atproto/api@^0.0.5":
+  version "0.0.5"
+  resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.0.5.tgz#6d850b1ebba57a0ce9a880c59299331e3324304e"
+  integrity sha512-DLI8GL2rQATh30d4VsiUyKL9j45q8o95tATJT6OnuBSf5YwD7kY5239DUjVSFEP08SAnM71ACl1O7EsoitsOXQ==
   dependencies:
     "@atproto/xrpc" "*"
     typed-emitter "^2.1.0"