diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-01-02 20:56:35 -0600 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2023-01-02 20:56:35 -0600 |
commit | 6885fb2b41efdb29e386cf696ea7304baf3a87c8 (patch) | |
tree | 40ed49080ae085337c205e2cd53c4ccbf88a71ca | |
parent | f6a0e634d78eb97d1d877033bf620ea982038731 (diff) | |
download | voidsky-6885fb2b41efdb29e386cf696ea7304baf3a87c8.tar.zst |
Bump api@0.0.5 and use the type guard helpers
-rw-r--r-- | package.json | 2 | ||||
-rw-r--r-- | src/state/models/post-thread-view.ts | 24 | ||||
-rw-r--r-- | src/view/com/util/PostEmbeds.tsx | 28 | ||||
-rw-r--r-- | yarn.lock | 8 |
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" |