about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2023-04-02 14:20:19 -0500
committerGitHub <noreply@github.com>2023-04-02 14:20:19 -0500
commitcc7b2a246ec5071f02bc81090b63b073b3d3614b (patch)
treeabc7378ab4a03c31e7d905d257166fdf2092d556
parent14965d4d97aa51e189d06e8f3aebac6cbed49e82 (diff)
downloadvoidsky-cc7b2a246ec5071f02bc81090b63b073b3d3614b.tar.zst
Lex refactor fixes (#368)
* Fix: handle validation failures correctly in feed-view

* Fix: convert the off-spec feed view to lex objects

* Fix to fetching all follows during init

* Bump @atproto/api@0.2.1

* Fix: properly group together like notifications

* 1.12
-rw-r--r--app.json2
-rw-r--r--ios/bluesky/Info.plist2
-rw-r--r--package.json4
-rw-r--r--src/state/models/cache/my-follows.ts1
-rw-r--r--src/state/models/feed-view.ts7
-rw-r--r--src/state/models/likes-view.ts2
-rw-r--r--src/state/models/notifications-view.ts2
-rw-r--r--src/view/com/post-thread/PostLikedBy.tsx6
-rw-r--r--yarn.lock13
9 files changed, 28 insertions, 11 deletions
diff --git a/app.json b/app.json
index 0e5bb2e03..bc0483c26 100644
--- a/app.json
+++ b/app.json
@@ -2,7 +2,7 @@
   "expo": {
     "name": "bluesky",
     "slug": "bluesky",
-    "version": "1.11.0",
+    "version": "1.12.0",
     "orientation": "portrait",
     "icon": "./assets/icon.png",
     "userInterfaceStyle": "light",
diff --git a/ios/bluesky/Info.plist b/ios/bluesky/Info.plist
index f58ed1b55..28a15c6f0 100644
--- a/ios/bluesky/Info.plist
+++ b/ios/bluesky/Info.plist
@@ -21,7 +21,7 @@
 	<key>CFBundlePackageType</key>
 	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
 	<key>CFBundleShortVersionString</key>
-	<string>1.11</string>
+	<string>1.12</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleURLTypes</key>
diff --git a/package.json b/package.json
index 2ac5367a4..3c99d3510 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "bsky.app",
-  "version": "1.11.0",
+  "version": "1.12.0",
   "private": true,
   "scripts": {
     "postinstall": "patch-package",
@@ -21,7 +21,7 @@
     "e2e:run": "detox test --configuration ios.sim.debug --take-screenshots all"
   },
   "dependencies": {
-    "@atproto/api": "0.2.0",
+    "@atproto/api": "0.2.1",
     "@bam.tech/react-native-image-resizer": "^3.0.4",
     "@expo/webpack-config": "^18.0.1",
     "@fortawesome/fontawesome-svg-core": "^6.1.1",
diff --git a/src/state/models/cache/my-follows.ts b/src/state/models/cache/my-follows.ts
index 14eeaae21..eaab829bc 100644
--- a/src/state/models/cache/my-follows.ts
+++ b/src/state/models/cache/my-follows.ts
@@ -57,6 +57,7 @@ export class MyFollowsCache {
         await this.rootStore.agent.app.bsky.graph.follow.list({
           repo: this.rootStore.me.did,
           rkeyStart,
+          reverse: true,
         })
       records = records.concat(res.records)
       rkeyStart = res.cursor
diff --git a/src/state/models/feed-view.ts b/src/state/models/feed-view.ts
index 8b62c958f..349723fbb 100644
--- a/src/state/models/feed-view.ts
+++ b/src/state/models/feed-view.ts
@@ -5,6 +5,7 @@ import {
   AppBskyFeedPost,
   AppBskyFeedGetAuthorFeed as GetAuthorFeed,
   RichText,
+  jsonToLex,
 } from '@atproto/api'
 import AwaitLock from 'await-lock'
 import {bundleAsync} from 'lib/async/bundle'
@@ -50,12 +51,16 @@ export class FeedItemModel {
         this.postRecord = this.post.record
         this.richText = new RichText(this.postRecord, {cleanNewlines: true})
       } else {
+        this.postRecord = undefined
+        this.richText = undefined
         rootStore.log.warn(
           'Received an invalid app.bsky.feed.post record',
           valid.error,
         )
       }
     } else {
+      this.postRecord = undefined
+      this.richText = undefined
       rootStore.log.warn(
         'app.bsky.feed.getTimeline or app.bsky.feed.getAuthorFeed served an unexpected record type',
         this.post.record,
@@ -634,6 +639,6 @@ async function getGoodStuff(
   return {
     success: res.status === 200,
     headers: resHeaders,
-    data: resBody,
+    data: jsonToLex(resBody),
   }
 }
diff --git a/src/state/models/likes-view.ts b/src/state/models/likes-view.ts
index 5f9df692e..80e0be0ef 100644
--- a/src/state/models/likes-view.ts
+++ b/src/state/models/likes-view.ts
@@ -97,7 +97,7 @@ export class LikesViewModel {
     this.hasLoaded = true
     this.error = cleanError(err)
     if (err) {
-      this.rootStore.log.error('Failed to fetch votes', err)
+      this.rootStore.log.error('Failed to fetch likes', err)
     }
   }
 
diff --git a/src/state/models/notifications-view.ts b/src/state/models/notifications-view.ts
index 4f7a52fd9..7089f0125 100644
--- a/src/state/models/notifications-view.ts
+++ b/src/state/models/notifications-view.ts
@@ -13,7 +13,7 @@ import {RootStoreModel} from './root-store'
 import {PostThreadViewModel} from './post-thread-view'
 import {cleanError} from 'lib/strings/errors'
 
-const GROUPABLE_REASONS = ['vote', 'repost', 'follow']
+const GROUPABLE_REASONS = ['like', 'repost', 'follow']
 const PAGE_SIZE = 30
 const MS_1HR = 1e3 * 60 * 60
 const MS_2DAY = MS_1HR * 48
diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx
index 9fb46702e..3ca147b8d 100644
--- a/src/view/com/post-thread/PostLikedBy.tsx
+++ b/src/view/com/post-thread/PostLikedBy.tsx
@@ -8,7 +8,7 @@ import {ProfileCardWithFollowBtn} from '../profile/ProfileCard'
 import {useStores} from 'state/index'
 import {usePalette} from 'lib/hooks/usePalette'
 
-export const PostLikedBy = observer(function PostVotedBy({uri}: {uri: string}) {
+export const PostLikedBy = observer(function ({uri}: {uri: string}) {
   const pal = usePalette('default')
   const store = useStores()
   const view = React.useMemo(
@@ -17,7 +17,7 @@ export const PostLikedBy = observer(function PostVotedBy({uri}: {uri: string}) {
   )
 
   useEffect(() => {
-    view.loadMore().catch(err => store.log.error('Failed to fetch votes', err))
+    view.loadMore().catch(err => store.log.error('Failed to fetch likes', err))
   }, [view, store.log])
 
   const onRefresh = () => {
@@ -26,7 +26,7 @@ export const PostLikedBy = observer(function PostVotedBy({uri}: {uri: string}) {
   const onEndReached = () => {
     view
       .loadMore()
-      .catch(err => view?.rootStore.log.error('Failed to load more votes', err))
+      .catch(err => view?.rootStore.log.error('Failed to load more likes', err))
   }
 
   if (!view.hasLoaded) {
diff --git a/yarn.lock b/yarn.lock
index 111e800f6..bfad9d5b3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -19,7 +19,7 @@
     jsonpointer "^5.0.0"
     leven "^3.1.0"
 
-"@atproto/api@*", "@atproto/api@0.2.0":
+"@atproto/api@*":
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.2.0.tgz#4a60f8f1de91105ad93526d69abcf011bbeaa3be"
   integrity sha512-AntqYOVrMalBJapnNBV0akh/PWcsKdWq8zfuvv8hZW/jwOkJTVPTRFOP2OHJFcfz4WezytX43ml/L2kSG9z4+Q==
@@ -30,6 +30,17 @@
     tlds "^1.234.0"
     typed-emitter "^2.1.0"
 
+"@atproto/api@0.2.1":
+  version "0.2.1"
+  resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.2.1.tgz#034cab5928e1a6b0059e7237f6a82c57daadb264"
+  integrity sha512-ub92BFrHrm/r1En9IedqRc9r9BZy0i7J8mmFZ5EMxRJwdCJeMYB8CdmLfgNXQcsTPswbYF94pyZkrpeQNJWr1A==
+  dependencies:
+    "@atproto/common-web" "*"
+    "@atproto/uri" "*"
+    "@atproto/xrpc" "*"
+    tlds "^1.234.0"
+    typed-emitter "^2.1.0"
+
 "@atproto/auth@*":
   version "0.0.1"
   resolved "https://registry.yarnpkg.com/@atproto/auth/-/auth-0.0.1.tgz#0ae07bfb6e4e86605504a20f0302e448ba3f8b0e"