@atproto/bsky 0.0.61 → 0.0.63

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 (118) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/api/app/bsky/graph/muteThread.d.ts +4 -0
  3. package/dist/api/app/bsky/graph/muteThread.d.ts.map +1 -0
  4. package/dist/api/app/bsky/graph/muteThread.js +19 -0
  5. package/dist/api/app/bsky/graph/muteThread.js.map +1 -0
  6. package/dist/api/app/bsky/graph/unmuteThread.d.ts +4 -0
  7. package/dist/api/app/bsky/graph/unmuteThread.d.ts.map +1 -0
  8. package/dist/api/app/bsky/graph/unmuteThread.js +19 -0
  9. package/dist/api/app/bsky/graph/unmuteThread.js.map +1 -0
  10. package/dist/api/index.d.ts.map +1 -1
  11. package/dist/api/index.js +4 -0
  12. package/dist/api/index.js.map +1 -1
  13. package/dist/data-plane/bsync/index.d.ts.map +1 -1
  14. package/dist/data-plane/bsync/index.js +41 -15
  15. package/dist/data-plane/bsync/index.js.map +1 -1
  16. package/dist/data-plane/server/db/database-schema.d.ts +2 -1
  17. package/dist/data-plane/server/db/database-schema.d.ts.map +1 -1
  18. package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.d.ts +4 -0
  19. package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.d.ts.map +1 -0
  20. package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.js +18 -0
  21. package/dist/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.js.map +1 -0
  22. package/dist/data-plane/server/db/migrations/index.d.ts +1 -0
  23. package/dist/data-plane/server/db/migrations/index.d.ts.map +1 -1
  24. package/dist/data-plane/server/db/migrations/index.js +2 -1
  25. package/dist/data-plane/server/db/migrations/index.js.map +1 -1
  26. package/dist/data-plane/server/db/tables/thread-mute.d.ts +10 -0
  27. package/dist/data-plane/server/db/tables/thread-mute.d.ts.map +1 -0
  28. package/dist/data-plane/server/db/tables/thread-mute.js +5 -0
  29. package/dist/data-plane/server/db/tables/thread-mute.js.map +1 -0
  30. package/dist/data-plane/server/indexing/processor.d.ts +2 -0
  31. package/dist/data-plane/server/indexing/processor.d.ts.map +1 -1
  32. package/dist/data-plane/server/indexing/processor.js +28 -1
  33. package/dist/data-plane/server/indexing/processor.js.map +1 -1
  34. package/dist/data-plane/server/routes/mutes.d.ts.map +1 -1
  35. package/dist/data-plane/server/routes/mutes.js +16 -0
  36. package/dist/data-plane/server/routes/mutes.js.map +1 -1
  37. package/dist/data-plane/server/util.d.ts +6 -6
  38. package/dist/hydration/feed.d.ts +6 -1
  39. package/dist/hydration/feed.d.ts.map +1 -1
  40. package/dist/hydration/feed.js +16 -2
  41. package/dist/hydration/feed.js.map +1 -1
  42. package/dist/hydration/hydrator.d.ts.map +1 -1
  43. package/dist/hydration/hydrator.js +13 -6
  44. package/dist/hydration/hydrator.js.map +1 -1
  45. package/dist/hydration/util.d.ts +1 -1
  46. package/dist/hydration/util.d.ts.map +1 -1
  47. package/dist/hydration/util.js.map +1 -1
  48. package/dist/lexicon/index.d.ts +4 -0
  49. package/dist/lexicon/index.d.ts.map +1 -1
  50. package/dist/lexicon/index.js +8 -0
  51. package/dist/lexicon/index.js.map +1 -1
  52. package/dist/lexicon/lexicons.d.ts +51 -0
  53. package/dist/lexicon/lexicons.d.ts.map +1 -1
  54. package/dist/lexicon/lexicons.js +51 -0
  55. package/dist/lexicon/lexicons.js.map +1 -1
  56. package/dist/lexicon/types/app/bsky/feed/defs.d.ts +1 -0
  57. package/dist/lexicon/types/app/bsky/feed/defs.d.ts.map +1 -1
  58. package/dist/lexicon/types/app/bsky/feed/defs.js.map +1 -1
  59. package/dist/lexicon/types/app/bsky/graph/muteThread.d.ts +29 -0
  60. package/dist/lexicon/types/app/bsky/graph/muteThread.d.ts.map +1 -0
  61. package/dist/lexicon/types/app/bsky/graph/muteThread.js +3 -0
  62. package/dist/lexicon/types/app/bsky/graph/muteThread.js.map +1 -0
  63. package/dist/lexicon/types/app/bsky/graph/unmuteThread.d.ts +29 -0
  64. package/dist/lexicon/types/app/bsky/graph/unmuteThread.d.ts.map +1 -0
  65. package/dist/lexicon/types/app/bsky/graph/unmuteThread.js +3 -0
  66. package/dist/lexicon/types/app/bsky/graph/unmuteThread.js.map +1 -0
  67. package/dist/logger.d.ts +2 -1
  68. package/dist/logger.d.ts.map +1 -1
  69. package/dist/logger.js +77 -63
  70. package/dist/logger.js.map +1 -1
  71. package/dist/proto/bsky_connect.d.ts +39 -1
  72. package/dist/proto/bsky_connect.d.ts.map +1 -1
  73. package/dist/proto/bsky_connect.js +38 -0
  74. package/dist/proto/bsky_connect.js.map +1 -1
  75. package/dist/proto/bsky_pb.d.ts +136 -0
  76. package/dist/proto/bsky_pb.d.ts.map +1 -1
  77. package/dist/proto/bsky_pb.js +430 -3
  78. package/dist/proto/bsky_pb.js.map +1 -1
  79. package/dist/views/index.d.ts.map +1 -1
  80. package/dist/views/index.js +1 -0
  81. package/dist/views/index.js.map +1 -1
  82. package/package.json +5 -5
  83. package/proto/bsky.proto +41 -0
  84. package/src/api/app/bsky/graph/muteThread.ts +18 -0
  85. package/src/api/app/bsky/graph/unmuteThread.ts +18 -0
  86. package/src/api/index.ts +4 -0
  87. package/src/data-plane/bsync/index.ts +39 -15
  88. package/src/data-plane/server/db/database-schema.ts +2 -0
  89. package/src/data-plane/server/db/migrations/20240606T171229898Z-thread-mutes.ts +15 -0
  90. package/src/data-plane/server/db/migrations/index.ts +1 -0
  91. package/src/data-plane/server/db/tables/thread-mute.ts +9 -0
  92. package/src/data-plane/server/indexing/processor.ts +29 -1
  93. package/src/data-plane/server/routes/mutes.ts +17 -0
  94. package/src/hydration/feed.ts +23 -3
  95. package/src/hydration/hydrator.ts +14 -6
  96. package/src/hydration/util.ts +1 -3
  97. package/src/lexicon/index.ts +24 -0
  98. package/src/lexicon/lexicons.ts +52 -0
  99. package/src/lexicon/types/app/bsky/feed/defs.ts +1 -0
  100. package/src/lexicon/types/app/bsky/graph/muteThread.ts +38 -0
  101. package/src/lexicon/types/app/bsky/graph/unmuteThread.ts +38 -0
  102. package/src/logger.ts +81 -38
  103. package/src/proto/bsky_connect.ts +46 -0
  104. package/src/proto/bsky_pb.ts +465 -0
  105. package/src/views/index.ts +1 -0
  106. package/tests/__snapshots__/feed-generation.test.ts.snap +38 -12
  107. package/tests/data-plane/__snapshots__/indexing.test.ts.snap +27 -9
  108. package/tests/data-plane/thread-mutes.test.ts +140 -0
  109. package/tests/views/__snapshots__/author-feed.test.ts.snap +62 -17
  110. package/tests/views/__snapshots__/block-lists.test.ts.snap +7 -2
  111. package/tests/views/__snapshots__/blocks.test.ts.snap +13 -4
  112. package/tests/views/__snapshots__/list-feed.test.ts.snap +23 -6
  113. package/tests/views/__snapshots__/mute-lists.test.ts.snap +10 -3
  114. package/tests/views/__snapshots__/mutes.test.ts.snap +9 -3
  115. package/tests/views/__snapshots__/posts.test.ts.snap +16 -5
  116. package/tests/views/__snapshots__/thread.test.ts.snap +53 -14
  117. package/tests/views/__snapshots__/timeline.test.ts.snap +213 -64
  118. package/tests/views/threadgating.test.ts +19 -19
@@ -65,7 +65,9 @@ Array [
65
65
  "replyCount": 0,
66
66
  "repostCount": 0,
67
67
  "uri": "record(2)",
68
- "viewer": Object {},
68
+ "viewer": Object {
69
+ "threadMuted": false,
70
+ },
69
71
  },
70
72
  },
71
73
  Object {
@@ -101,7 +103,9 @@ Array [
101
103
  "replyCount": 0,
102
104
  "repostCount": 1,
103
105
  "uri": "record(3)",
104
- "viewer": Object {},
106
+ "viewer": Object {
107
+ "threadMuted": false,
108
+ },
105
109
  },
106
110
  "reply": Object {
107
111
  "grandparentAuthor": Object {
@@ -191,7 +195,9 @@ Array [
191
195
  "replyCount": 1,
192
196
  "repostCount": 0,
193
197
  "uri": "record(5)",
194
- "viewer": Object {},
198
+ "viewer": Object {
199
+ "threadMuted": false,
200
+ },
195
201
  },
196
202
  "root": Object {
197
203
  "$type": "app.bsky.feed.defs#postView",
@@ -216,7 +222,9 @@ Array [
216
222
  "replyCount": 2,
217
223
  "repostCount": 1,
218
224
  "uri": "record(4)",
219
- "viewer": Object {},
225
+ "viewer": Object {
226
+ "threadMuted": false,
227
+ },
220
228
  },
221
229
  },
222
230
  },
@@ -378,7 +386,9 @@ Array [
378
386
  "replyCount": 0,
379
387
  "repostCount": 0,
380
388
  "uri": "record(6)",
381
- "viewer": Object {},
389
+ "viewer": Object {
390
+ "threadMuted": false,
391
+ },
382
392
  },
383
393
  },
384
394
  Object {
@@ -404,7 +414,9 @@ Array [
404
414
  "replyCount": 2,
405
415
  "repostCount": 1,
406
416
  "uri": "record(4)",
407
- "viewer": Object {},
417
+ "viewer": Object {
418
+ "threadMuted": false,
419
+ },
408
420
  },
409
421
  },
410
422
  Object {
@@ -446,7 +458,9 @@ Array [
446
458
  "replyCount": 0,
447
459
  "repostCount": 0,
448
460
  "uri": "record(12)",
449
- "viewer": Object {},
461
+ "viewer": Object {
462
+ "threadMuted": false,
463
+ },
450
464
  },
451
465
  },
452
466
  ],
@@ -557,7 +571,9 @@ Object {
557
571
  "replyCount": 0,
558
572
  "repostCount": 0,
559
573
  "uri": "record(0)",
560
- "viewer": Object {},
574
+ "viewer": Object {
575
+ "threadMuted": false,
576
+ },
561
577
  },
562
578
  "replies": Array [],
563
579
  },
@@ -621,7 +637,9 @@ Object {
621
637
  "replyCount": 0,
622
638
  "repostCount": 0,
623
639
  "uri": "record(0)",
624
- "viewer": Object {},
640
+ "viewer": Object {
641
+ "threadMuted": false,
642
+ },
625
643
  },
626
644
  "replies": Array [],
627
645
  },
@@ -0,0 +1,140 @@
1
+ import { RecordRef, SeedClient, TestNetwork, usersSeed } from '@atproto/dev-env'
2
+ import AtpAgent from '@atproto/api'
3
+
4
+ describe('thread mutes', () => {
5
+ let network: TestNetwork
6
+ let agent: AtpAgent
7
+ let sc: SeedClient
8
+
9
+ let alice: string
10
+ let bob: string
11
+
12
+ let rootPost: RecordRef
13
+ let replyPost: RecordRef
14
+
15
+ beforeAll(async () => {
16
+ network = await TestNetwork.create({
17
+ dbPostgresSchema: 'bsky_thread_mutes',
18
+ })
19
+ sc = network.getSeedClient()
20
+ agent = network.bsky.getClient()
21
+ await usersSeed(sc)
22
+ alice = sc.dids.alice
23
+ bob = sc.dids.bob
24
+ rootPost = (await sc.post(alice, 'root post')).ref
25
+ replyPost = (await sc.reply(alice, rootPost, rootPost, 'first reply')).ref
26
+ await network.processAll()
27
+ })
28
+
29
+ afterAll(async () => {
30
+ await network.close()
31
+ })
32
+
33
+ it('mutes threads', async () => {
34
+ await agent.api.app.bsky.graph.muteThread(
35
+ { root: rootPost.uriStr },
36
+ {
37
+ encoding: 'application/json',
38
+ headers: await network.serviceHeaders(alice),
39
+ },
40
+ )
41
+ })
42
+
43
+ it('notes that threads are muted in viewer state', async () => {
44
+ const res = await agent.api.app.bsky.feed.getPosts(
45
+ {
46
+ uris: [rootPost.uriStr, replyPost.uriStr],
47
+ },
48
+ {
49
+ headers: await network.serviceHeaders(alice),
50
+ },
51
+ )
52
+ expect(res.data.posts[0].viewer?.threadMuted).toBe(true)
53
+ expect(res.data.posts[1].viewer?.threadMuted).toBe(true)
54
+ })
55
+
56
+ it('prevents notifs from replies', async () => {
57
+ await sc.reply(bob, rootPost, rootPost, 'reply')
58
+ await sc.reply(bob, rootPost, replyPost, 'reply')
59
+ await network.processAll()
60
+
61
+ const notifsRes = await agent.api.app.bsky.notification.listNotifications(
62
+ {},
63
+ { headers: await network.serviceHeaders(alice) },
64
+ )
65
+ expect(notifsRes.data.notifications.length).toBe(0)
66
+ })
67
+
68
+ it('prevents notifs from quote posts', async () => {
69
+ await sc.post(bob, 'quote', undefined, undefined, rootPost)
70
+ await sc.post(bob, 'quote', undefined, undefined, replyPost)
71
+ await network.processAll()
72
+
73
+ const notifsRes = await agent.api.app.bsky.notification.listNotifications(
74
+ {},
75
+ { headers: await network.serviceHeaders(alice) },
76
+ )
77
+ expect(notifsRes.data.notifications.length).toBe(0)
78
+ })
79
+
80
+ it('prevents notifs from likes', async () => {
81
+ await sc.like(bob, rootPost)
82
+ await sc.like(bob, replyPost)
83
+ await network.processAll()
84
+
85
+ const notifsRes = await agent.api.app.bsky.notification.listNotifications(
86
+ {},
87
+ { headers: await network.serviceHeaders(alice) },
88
+ )
89
+ expect(notifsRes.data.notifications.length).toBe(0)
90
+ })
91
+
92
+ it('prevents notifs from reposts', async () => {
93
+ await sc.repost(bob, rootPost)
94
+ await sc.repost(bob, replyPost)
95
+ await network.processAll()
96
+
97
+ const notifsRes = await agent.api.app.bsky.notification.listNotifications(
98
+ {},
99
+ { headers: await network.serviceHeaders(alice) },
100
+ )
101
+ expect(notifsRes.data.notifications.length).toBe(0)
102
+ })
103
+
104
+ it('unmutes threads', async () => {
105
+ await agent.api.app.bsky.graph.unmuteThread(
106
+ { root: rootPost.uriStr },
107
+ {
108
+ encoding: 'application/json',
109
+ headers: await network.serviceHeaders(alice),
110
+ },
111
+ )
112
+ })
113
+
114
+ it('no longer notes that threads are muted in viewer state after unmuting', async () => {
115
+ const res = await agent.api.app.bsky.feed.getPosts(
116
+ {
117
+ uris: [rootPost.uriStr, replyPost.uriStr],
118
+ },
119
+ {
120
+ headers: await network.serviceHeaders(alice),
121
+ },
122
+ )
123
+ expect(res.data.posts[0].viewer?.threadMuted).toBe(false)
124
+ expect(res.data.posts[1].viewer?.threadMuted).toBe(false)
125
+ })
126
+
127
+ it('sends notifications after unmuting', async () => {
128
+ await sc.reply(bob, rootPost, rootPost, 'new reply')
129
+ await sc.reply(bob, rootPost, replyPost, 'new reply')
130
+ await sc.like(bob, rootPost)
131
+ await sc.repost(bob, replyPost)
132
+ await network.processAll()
133
+
134
+ const notifsRes = await agent.api.app.bsky.notification.listNotifications(
135
+ {},
136
+ { headers: await network.serviceHeaders(alice) },
137
+ )
138
+ expect(notifsRes.data.notifications.length).toBe(4)
139
+ })
140
+ })
@@ -52,7 +52,9 @@ Array [
52
52
  "replyCount": 0,
53
53
  "repostCount": 1,
54
54
  "uri": "record(0)",
55
- "viewer": Object {},
55
+ "viewer": Object {
56
+ "threadMuted": false,
57
+ },
56
58
  },
57
59
  "reply": Object {
58
60
  "grandparentAuthor": Object {
@@ -159,7 +161,9 @@ Array [
159
161
  "replyCount": 1,
160
162
  "repostCount": 0,
161
163
  "uri": "record(3)",
162
- "viewer": Object {},
164
+ "viewer": Object {
165
+ "threadMuted": false,
166
+ },
163
167
  },
164
168
  "root": Object {
165
169
  "$type": "app.bsky.feed.defs#postView",
@@ -201,7 +205,9 @@ Array [
201
205
  "replyCount": 3,
202
206
  "repostCount": 1,
203
207
  "uri": "record(2)",
204
- "viewer": Object {},
208
+ "viewer": Object {
209
+ "threadMuted": false,
210
+ },
205
211
  },
206
212
  },
207
213
  },
@@ -381,7 +387,9 @@ Array [
381
387
  "replyCount": 0,
382
388
  "repostCount": 0,
383
389
  "uri": "record(6)",
384
- "viewer": Object {},
390
+ "viewer": Object {
391
+ "threadMuted": false,
392
+ },
385
393
  },
386
394
  },
387
395
  Object {
@@ -424,7 +432,9 @@ Array [
424
432
  "replyCount": 3,
425
433
  "repostCount": 1,
426
434
  "uri": "record(2)",
427
- "viewer": Object {},
435
+ "viewer": Object {
436
+ "threadMuted": false,
437
+ },
428
438
  },
429
439
  },
430
440
  Object {
@@ -483,7 +493,9 @@ Array [
483
493
  "replyCount": 0,
484
494
  "repostCount": 0,
485
495
  "uri": "record(13)",
486
- "viewer": Object {},
496
+ "viewer": Object {
497
+ "threadMuted": false,
498
+ },
487
499
  },
488
500
  },
489
501
  ]
@@ -567,7 +579,9 @@ Array [
567
579
  "replyCount": 1,
568
580
  "repostCount": 0,
569
581
  "uri": "record(0)",
570
- "viewer": Object {},
582
+ "viewer": Object {
583
+ "threadMuted": false,
584
+ },
571
585
  },
572
586
  "reply": Object {
573
587
  "parent": Object {
@@ -614,6 +628,7 @@ Array [
614
628
  "uri": "record(1)",
615
629
  "viewer": Object {
616
630
  "like": "record(5)",
631
+ "threadMuted": false,
617
632
  },
618
633
  },
619
634
  "root": Object {
@@ -660,6 +675,7 @@ Array [
660
675
  "uri": "record(1)",
661
676
  "viewer": Object {
662
677
  "like": "record(5)",
678
+ "threadMuted": false,
663
679
  },
664
680
  },
665
681
  },
@@ -689,7 +705,9 @@ Array [
689
705
  "replyCount": 0,
690
706
  "repostCount": 0,
691
707
  "uri": "record(6)",
692
- "viewer": Object {},
708
+ "viewer": Object {
709
+ "threadMuted": false,
710
+ },
693
711
  },
694
712
  },
695
713
  Object {
@@ -721,7 +739,9 @@ Array [
721
739
  "replyCount": 0,
722
740
  "repostCount": 0,
723
741
  "uri": "record(7)",
724
- "viewer": Object {},
742
+ "viewer": Object {
743
+ "threadMuted": false,
744
+ },
725
745
  },
726
746
  },
727
747
  ]
@@ -896,6 +916,7 @@ Array [
896
916
  "uri": "record(0)",
897
917
  "viewer": Object {
898
918
  "repost": "record(4)",
919
+ "threadMuted": false,
899
920
  },
900
921
  },
901
922
  "reason": Object {
@@ -945,7 +966,9 @@ Array [
945
966
  "replyCount": 0,
946
967
  "repostCount": 0,
947
968
  "uri": "record(5)",
948
- "viewer": Object {},
969
+ "viewer": Object {
970
+ "threadMuted": false,
971
+ },
949
972
  },
950
973
  "reply": Object {
951
974
  "parent": Object {
@@ -992,6 +1015,7 @@ Array [
992
1015
  "uri": "record(6)",
993
1016
  "viewer": Object {
994
1017
  "like": "record(10)",
1018
+ "threadMuted": false,
995
1019
  },
996
1020
  },
997
1021
  "root": Object {
@@ -1038,6 +1062,7 @@ Array [
1038
1062
  "uri": "record(6)",
1039
1063
  "viewer": Object {
1040
1064
  "like": "record(10)",
1065
+ "threadMuted": false,
1041
1066
  },
1042
1067
  },
1043
1068
  },
@@ -1153,7 +1178,9 @@ Array [
1153
1178
  "replyCount": 0,
1154
1179
  "repostCount": 0,
1155
1180
  "uri": "record(1)",
1156
- "viewer": Object {},
1181
+ "viewer": Object {
1182
+ "threadMuted": false,
1183
+ },
1157
1184
  },
1158
1185
  },
1159
1186
  ]
@@ -1214,6 +1241,7 @@ Array [
1214
1241
  "uri": "record(0)",
1215
1242
  "viewer": Object {
1216
1243
  "repost": "record(5)",
1244
+ "threadMuted": false,
1217
1245
  },
1218
1246
  },
1219
1247
  "reason": Object {
@@ -1339,7 +1367,9 @@ Array [
1339
1367
  "replyCount": 1,
1340
1368
  "repostCount": 0,
1341
1369
  "uri": "record(4)",
1342
- "viewer": Object {},
1370
+ "viewer": Object {
1371
+ "threadMuted": false,
1372
+ },
1343
1373
  },
1344
1374
  "root": Object {
1345
1375
  "$type": "app.bsky.feed.defs#postView",
@@ -1385,6 +1415,7 @@ Array [
1385
1415
  "viewer": Object {
1386
1416
  "like": "record(7)",
1387
1417
  "repost": "record(6)",
1418
+ "threadMuted": false,
1388
1419
  },
1389
1420
  },
1390
1421
  },
@@ -1433,6 +1464,7 @@ Array [
1433
1464
  "viewer": Object {
1434
1465
  "like": "record(7)",
1435
1466
  "repost": "record(6)",
1467
+ "threadMuted": false,
1436
1468
  },
1437
1469
  },
1438
1470
  "reason": Object {
@@ -1619,7 +1651,9 @@ Array [
1619
1651
  "replyCount": 0,
1620
1652
  "repostCount": 1,
1621
1653
  "uri": "record(9)",
1622
- "viewer": Object {},
1654
+ "viewer": Object {
1655
+ "threadMuted": false,
1656
+ },
1623
1657
  },
1624
1658
  },
1625
1659
  Object {
@@ -1650,7 +1684,9 @@ Array [
1650
1684
  "replyCount": 0,
1651
1685
  "repostCount": 0,
1652
1686
  "uri": "record(12)",
1653
- "viewer": Object {},
1687
+ "viewer": Object {
1688
+ "threadMuted": false,
1689
+ },
1654
1690
  },
1655
1691
  },
1656
1692
  ]
@@ -1710,7 +1746,9 @@ Array [
1710
1746
  "replyCount": 0,
1711
1747
  "repostCount": 1,
1712
1748
  "uri": "record(0)",
1713
- "viewer": Object {},
1749
+ "viewer": Object {
1750
+ "threadMuted": false,
1751
+ },
1714
1752
  },
1715
1753
  "reply": Object {
1716
1754
  "grandparentAuthor": Object {
@@ -1818,7 +1856,9 @@ Array [
1818
1856
  "replyCount": 1,
1819
1857
  "repostCount": 0,
1820
1858
  "uri": "record(5)",
1821
- "viewer": Object {},
1859
+ "viewer": Object {
1860
+ "threadMuted": false,
1861
+ },
1822
1862
  },
1823
1863
  "root": Object {
1824
1864
  "$type": "app.bsky.feed.defs#postView",
@@ -1864,6 +1904,7 @@ Array [
1864
1904
  "uri": "record(4)",
1865
1905
  "viewer": Object {
1866
1906
  "like": "record(6)",
1907
+ "threadMuted": false,
1867
1908
  },
1868
1909
  },
1869
1910
  },
@@ -2045,6 +2086,7 @@ Array [
2045
2086
  "uri": "record(8)",
2046
2087
  "viewer": Object {
2047
2088
  "like": "record(12)",
2089
+ "threadMuted": false,
2048
2090
  },
2049
2091
  },
2050
2092
  },
@@ -2092,6 +2134,7 @@ Array [
2092
2134
  "uri": "record(4)",
2093
2135
  "viewer": Object {
2094
2136
  "like": "record(6)",
2137
+ "threadMuted": false,
2095
2138
  },
2096
2139
  },
2097
2140
  },
@@ -2153,7 +2196,9 @@ Array [
2153
2196
  "replyCount": 0,
2154
2197
  "repostCount": 0,
2155
2198
  "uri": "record(13)",
2156
- "viewer": Object {},
2199
+ "viewer": Object {
2200
+ "threadMuted": false,
2201
+ },
2157
2202
  },
2158
2203
  },
2159
2204
  ]
@@ -129,7 +129,9 @@ Object {
129
129
  "replyCount": 0,
130
130
  "repostCount": 0,
131
131
  "uri": "record(0)",
132
- "viewer": Object {},
132
+ "viewer": Object {
133
+ "threadMuted": false,
134
+ },
133
135
  },
134
136
  },
135
137
  }
@@ -201,7 +203,9 @@ Object {
201
203
  "replyCount": 0,
202
204
  "repostCount": 0,
203
205
  "uri": "record(0)",
204
- "viewer": Object {},
206
+ "viewer": Object {
207
+ "threadMuted": false,
208
+ },
205
209
  },
206
210
  "replies": Array [],
207
211
  },
@@ -255,6 +259,7 @@ Object {
255
259
  "viewer": Object {
256
260
  "like": "record(4)",
257
261
  "repost": "record(3)",
262
+ "threadMuted": false,
258
263
  },
259
264
  },
260
265
  "replies": Array [
@@ -129,7 +129,9 @@ Object {
129
129
  "replyCount": 0,
130
130
  "repostCount": 0,
131
131
  "uri": "record(0)",
132
- "viewer": Object {},
132
+ "viewer": Object {
133
+ "threadMuted": false,
134
+ },
133
135
  },
134
136
  },
135
137
  }
@@ -201,7 +203,9 @@ Object {
201
203
  "replyCount": 1,
202
204
  "repostCount": 0,
203
205
  "uri": "record(0)",
204
- "viewer": Object {},
206
+ "viewer": Object {
207
+ "threadMuted": false,
208
+ },
205
209
  },
206
210
  "replies": Array [
207
211
  Object {
@@ -238,7 +242,9 @@ Object {
238
242
  "replyCount": 0,
239
243
  "repostCount": 0,
240
244
  "uri": "record(5)",
241
- "viewer": Object {},
245
+ "viewer": Object {
246
+ "threadMuted": false,
247
+ },
242
248
  },
243
249
  },
244
250
  ],
@@ -293,6 +299,7 @@ Object {
293
299
  "viewer": Object {
294
300
  "like": "record(4)",
295
301
  "repost": "record(3)",
302
+ "threadMuted": false,
296
303
  },
297
304
  },
298
305
  "replies": Array [
@@ -386,7 +393,9 @@ Object {
386
393
  "replyCount": 1,
387
394
  "repostCount": 0,
388
395
  "uri": "record(7)",
389
- "viewer": Object {},
396
+ "viewer": Object {
397
+ "threadMuted": false,
398
+ },
390
399
  },
391
400
  },
392
401
  ],
@@ -54,7 +54,9 @@ Array [
54
54
  "replyCount": 0,
55
55
  "repostCount": 1,
56
56
  "uri": "record(0)",
57
- "viewer": Object {},
57
+ "viewer": Object {
58
+ "threadMuted": false,
59
+ },
58
60
  },
59
61
  "reply": Object {
60
62
  "grandparentAuthor": Object {
@@ -162,7 +164,9 @@ Array [
162
164
  "replyCount": 1,
163
165
  "repostCount": 0,
164
166
  "uri": "record(5)",
165
- "viewer": Object {},
167
+ "viewer": Object {
168
+ "threadMuted": false,
169
+ },
166
170
  },
167
171
  "root": Object {
168
172
  "$type": "app.bsky.feed.defs#postView",
@@ -208,6 +212,7 @@ Array [
208
212
  "uri": "record(4)",
209
213
  "viewer": Object {
210
214
  "like": "record(6)",
215
+ "threadMuted": false,
211
216
  },
212
217
  },
213
218
  },
@@ -289,7 +294,9 @@ Array [
289
294
  "replyCount": 1,
290
295
  "repostCount": 0,
291
296
  "uri": "record(5)",
292
- "viewer": Object {},
297
+ "viewer": Object {
298
+ "threadMuted": false,
299
+ },
293
300
  },
294
301
  "reply": Object {
295
302
  "parent": Object {
@@ -336,6 +343,7 @@ Array [
336
343
  "uri": "record(4)",
337
344
  "viewer": Object {
338
345
  "like": "record(6)",
346
+ "threadMuted": false,
339
347
  },
340
348
  },
341
349
  "root": Object {
@@ -382,6 +390,7 @@ Array [
382
390
  "uri": "record(4)",
383
391
  "viewer": Object {
384
392
  "like": "record(6)",
393
+ "threadMuted": false,
385
394
  },
386
395
  },
387
396
  },
@@ -563,6 +572,7 @@ Array [
563
572
  "uri": "record(8)",
564
573
  "viewer": Object {
565
574
  "like": "record(12)",
575
+ "threadMuted": false,
566
576
  },
567
577
  },
568
578
  },
@@ -592,7 +602,9 @@ Array [
592
602
  "replyCount": 0,
593
603
  "repostCount": 0,
594
604
  "uri": "record(13)",
595
- "viewer": Object {},
605
+ "viewer": Object {
606
+ "threadMuted": false,
607
+ },
596
608
  },
597
609
  },
598
610
  Object {
@@ -639,6 +651,7 @@ Array [
639
651
  "uri": "record(4)",
640
652
  "viewer": Object {
641
653
  "like": "record(6)",
654
+ "threadMuted": false,
642
655
  },
643
656
  },
644
657
  },
@@ -672,7 +685,9 @@ Array [
672
685
  "replyCount": 0,
673
686
  "repostCount": 0,
674
687
  "uri": "record(11)",
675
- "viewer": Object {},
688
+ "viewer": Object {
689
+ "threadMuted": false,
690
+ },
676
691
  },
677
692
  },
678
693
  Object {
@@ -733,7 +748,9 @@ Array [
733
748
  "replyCount": 0,
734
749
  "repostCount": 0,
735
750
  "uri": "record(14)",
736
- "viewer": Object {},
751
+ "viewer": Object {
752
+ "threadMuted": false,
753
+ },
737
754
  },
738
755
  },
739
756
  ]