@atproto/bsky 0.0.83 → 0.0.85

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/api/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  3. package/dist/api/app/bsky/feed/getAuthorFeed.js +25 -7
  4. package/dist/api/app/bsky/feed/getAuthorFeed.js.map +1 -1
  5. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js +3 -1
  6. package/dist/api/app/bsky/graph/getSuggestedFollowsByActor.js.map +1 -1
  7. package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.d.ts +4 -0
  8. package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.d.ts.map +1 -0
  9. package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.js +20 -0
  10. package/dist/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.js.map +1 -0
  11. package/dist/data-plane/server/db/migrations/index.d.ts +1 -0
  12. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  13. package/dist/data-plane/server/db/migrations/index.js +2 -1
  14. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  15. package/dist/data-plane/server/db/tables/profile.d.ts +2 -0
  16. package/dist/data-plane/server/db/tables/profile.d.ts.map +1 -1
  17. package/dist/hydration/feed.d.ts +5 -0
  18. package/dist/hydration/feed.d.ts.map +1 -1
  19. package/dist/hydration/feed.js.map +1 -1
  20. package/dist/lexicon/lexicons.d.ts +36 -0
  21. package/dist/lexicon/lexicons.d.ts.map +1 -1
  22. package/dist/lexicon/lexicons.js +47 -3
  23. package/dist/lexicon/lexicons.js.map +1 -1
  24. package/dist/lexicon/types/app/bsky/actor/defs.d.ts +2 -0
  25. package/dist/lexicon/types/app/bsky/actor/defs.d.ts.map +1 -1
  26. package/dist/lexicon/types/app/bsky/actor/defs.js.map +1 -1
  27. package/dist/lexicon/types/app/bsky/actor/profile.d.ts +1 -0
  28. package/dist/lexicon/types/app/bsky/actor/profile.d.ts.map +1 -1
  29. package/dist/lexicon/types/app/bsky/actor/profile.js.map +1 -1
  30. package/dist/lexicon/types/app/bsky/feed/defs.d.ts +13 -2
  31. package/dist/lexicon/types/app/bsky/feed/defs.d.ts.map +1 -1
  32. package/dist/lexicon/types/app/bsky/feed/defs.js +21 -1
  33. package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
  34. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.d.ts +1 -0
  35. package/dist/lexicon/types/app/bsky/feed/getAuthorFeed.d.ts.map +1 -1
  36. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts +2 -0
  37. package/dist/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.d.ts.map +1 -1
  38. package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.d.ts +2 -0
  39. package/dist/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.d.ts.map +1 -1
  40. package/dist/lexicon/types/com/atproto/repo/getRecord.d.ts +1 -0
  41. package/dist/lexicon/types/com/atproto/repo/getRecord.d.ts.map +1 -1
  42. package/dist/views/index.d.ts +4 -0
  43. package/dist/views/index.d.ts.map +1 -1
  44. package/dist/views/index.js +22 -1
  45. package/dist/views/index.js.map +1 -1
  46. package/package.json +13 -13
  47. package/src/api/app/bsky/feed/getAuthorFeed.ts +32 -7
  48. package/src/api/app/bsky/graph/getSuggestedFollowsByActor.ts +4 -1
  49. package/src/data-plane/server/db/migrations/20240831T134810923Z-pinned-posts.ts +17 -0
  50. package/src/data-plane/server/db/migrations/index.ts +1 -0
  51. package/src/data-plane/server/db/tables/profile.ts +2 -0
  52. package/src/hydration/feed.ts +9 -1
  53. package/src/lexicon/lexicons.ts +49 -3
  54. package/src/lexicon/types/app/bsky/actor/defs.ts +2 -0
  55. package/src/lexicon/types/app/bsky/actor/profile.ts +1 -0
  56. package/src/lexicon/types/app/bsky/feed/defs.ts +38 -2
  57. package/src/lexicon/types/app/bsky/feed/getAuthorFeed.ts +1 -0
  58. package/src/lexicon/types/app/bsky/graph/getSuggestedFollowsByActor.ts +2 -0
  59. package/src/lexicon/types/app/bsky/unspecced/getSuggestionsSkeleton.ts +2 -0
  60. package/src/lexicon/types/com/atproto/repo/getRecord.ts +1 -0
  61. package/src/views/index.ts +22 -2
  62. package/tests/views/__snapshots__/author-feed.test.ts.snap +2462 -0
  63. package/tests/views/author-feed.test.ts +176 -1
@@ -16,6 +16,7 @@ import {
16
16
  NotFoundPost,
17
17
  PostView,
18
18
  ReasonRepost,
19
+ ReasonPin,
19
20
  ReplyRef,
20
21
  ThreadViewPost,
21
22
  ThreadgateView,
@@ -169,6 +170,7 @@ export class Views {
169
170
  joinedViaStarterPack: actor.profile?.joinedViaStarterPack
170
171
  ? this.starterPackBasic(actor.profile.joinedViaStarterPack.uri, state)
171
172
  : undefined,
173
+ pinnedPost: actor.profile?.pinnedPost,
172
174
  }
173
175
  }
174
176
 
@@ -606,6 +608,7 @@ export class Views {
606
608
  threadMuted: viewer.threadMuted,
607
609
  replyDisabled: this.userReplyDisabled(uri, state),
608
610
  embeddingDisabled: this.userPostEmbeddingDisabled(uri, state),
611
+ pinned: this.viewerPinned(uri, state, authorDid),
609
612
  }
610
613
  : undefined,
611
614
  labels,
@@ -620,8 +623,10 @@ export class Views {
620
623
  state: HydrationState,
621
624
  ): FeedViewPost | undefined {
622
625
  const postInfo = state.posts?.get(item.post.uri)
623
- let reason: ReasonRepost | undefined
624
- if (item.repost) {
626
+ let reason: ReasonRepost | ReasonPin | undefined
627
+ if (item.authorPinned) {
628
+ reason = this.reasonPin()
629
+ } else if (item.repost) {
625
630
  const repost = state.reposts?.get(item.repost.uri)
626
631
  if (!repost) return
627
632
  if (repost.record.subject.uri !== item.post.uri) return
@@ -723,6 +728,12 @@ export class Views {
723
728
  }
724
729
  }
725
730
 
731
+ reasonPin() {
732
+ return {
733
+ $type: 'app.bsky.feed.defs#reasonPin',
734
+ }
735
+ }
736
+
726
737
  // Threads
727
738
  // ------------
728
739
 
@@ -1128,6 +1139,15 @@ export class Views {
1128
1139
  return true
1129
1140
  }
1130
1141
 
1142
+ viewerPinned(uri: string, state: HydrationState, authorDid: string) {
1143
+ if (!state.ctx?.viewer || state.ctx.viewer !== authorDid) return
1144
+ const actor = state.actors?.get(authorDid)
1145
+ if (!actor) return
1146
+ const pinnedPost = actor.profile?.pinnedPost
1147
+ if (!pinnedPost) return undefined
1148
+ return pinnedPost.uri === uri
1149
+ }
1150
+
1131
1151
  notification(
1132
1152
  notif: Notification,
1133
1153
  lastSeenAt: string | undefined,