@stream-io/feeds-client 0.3.48 → 0.3.49

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 (45) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/react-bindings.js +1 -1
  5. package/dist/es/index.mjs +2 -2
  6. package/dist/es/index.mjs.map +1 -1
  7. package/dist/es/react-bindings.mjs +1 -1
  8. package/dist/{feeds-client-D-EFo20w.mjs → feeds-client-B9b7zUcW.mjs} +102 -189
  9. package/dist/feeds-client-B9b7zUcW.mjs.map +1 -0
  10. package/dist/{feeds-client-DuJuJuEJ.js → feeds-client-BDvUG9yF.js} +102 -189
  11. package/dist/feeds-client-BDvUG9yF.js.map +1 -0
  12. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  13. package/dist/types/common/Poll.d.ts +7 -3
  14. package/dist/types/common/Poll.d.ts.map +1 -1
  15. package/dist/types/common/real-time/StableWSConnection.d.ts +3 -3
  16. package/dist/types/common/real-time/StableWSConnection.d.ts.map +1 -1
  17. package/dist/types/feed/event-handlers/activity-updater.d.ts +1 -1
  18. package/dist/types/feed/event-handlers/comment/handle-comment-added.d.ts.map +1 -1
  19. package/dist/types/feed/feed.d.ts +2 -2
  20. package/dist/types/feed/feed.d.ts.map +1 -1
  21. package/dist/types/feeds-client/feeds-client.d.ts +7 -3
  22. package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
  23. package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
  24. package/dist/types/gen/model-decoders/event-decoder-mapping.d.ts.map +1 -1
  25. package/dist/types/gen/models/index.d.ts +196 -422
  26. package/dist/types/gen/models/index.d.ts.map +1 -1
  27. package/dist/types/gen/moderation/ModerationApi.d.ts.map +1 -1
  28. package/dist/types/types.d.ts +2 -2
  29. package/dist/types/types.d.ts.map +1 -1
  30. package/dist/types/utils/constants.d.ts +1 -1
  31. package/package.json +1 -1
  32. package/src/common/Poll.ts +16 -15
  33. package/src/feed/event-handlers/comment/handle-comment-added.ts +14 -2
  34. package/src/feed/feed.ts +24 -9
  35. package/src/feeds-client/feeds-client.ts +28 -1
  36. package/src/gen/feeds/FeedsApi.ts +1 -0
  37. package/src/gen/model-decoders/decoders.ts +40 -251
  38. package/src/gen/model-decoders/event-decoder-mapping.ts +3 -2
  39. package/src/gen/models/index.ts +310 -741
  40. package/src/gen/moderation/ModerationApi.ts +1 -0
  41. package/src/test-utils/response-generators.ts +3 -2
  42. package/src/types.ts +2 -2
  43. package/src/utils/constants.ts +1 -1
  44. package/dist/feeds-client-D-EFo20w.mjs.map +0 -1
  45. package/dist/feeds-client-DuJuJuEJ.js.map +0 -1
@@ -155,7 +155,7 @@ decoders.ActivityResponse = (input) => {
155
155
  own_bookmarks: { type: "BookmarkResponse", isSingle: false },
156
156
  own_reactions: { type: "FeedsReactionResponse", isSingle: false },
157
157
  collections: { type: "EnrichedCollectionResponse", isSingle: false },
158
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false },
158
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false },
159
159
  user: { type: "UserResponse", isSingle: true },
160
160
  deleted_at: { type: "DatetimeType", isSingle: true },
161
161
  edited_at: { type: "DatetimeType", isSingle: true },
@@ -252,13 +252,12 @@ decoders.AppealItemResponse = (input) => {
252
252
  };
253
253
  return decode(typeMappings, input);
254
254
  };
255
- decoders.Ban = (input) => {
255
+ decoders.BanInfoResponse = (input) => {
256
256
  const typeMappings = {
257
257
  created_at: { type: "DatetimeType", isSingle: true },
258
258
  expires: { type: "DatetimeType", isSingle: true },
259
- channel: { type: "Channel", isSingle: true },
260
- created_by: { type: "User", isSingle: true },
261
- target: { type: "User", isSingle: true }
259
+ created_by: { type: "UserResponse", isSingle: true },
260
+ user: { type: "UserResponse", isSingle: true }
262
261
  };
263
262
  return decode(typeMappings, input);
264
263
  };
@@ -373,30 +372,6 @@ decoders.CallSessionResponse = (input) => {
373
372
  };
374
373
  return decode(typeMappings, input);
375
374
  };
376
- decoders.Channel = (input) => {
377
- const typeMappings = {
378
- created_at: { type: "DatetimeType", isSingle: true },
379
- updated_at: { type: "DatetimeType", isSingle: true },
380
- deleted_at: { type: "DatetimeType", isSingle: true },
381
- last_message_at: { type: "DatetimeType", isSingle: true },
382
- message_count_updated_at: { type: "DatetimeType", isSingle: true },
383
- active_live_locations: { type: "SharedLocation", isSingle: false },
384
- invites: { type: "ChannelMember", isSingle: false },
385
- members: { type: "ChannelMember", isSingle: false },
386
- config: { type: "ChannelConfig", isSingle: true },
387
- created_by: { type: "User", isSingle: true },
388
- members_lookup: { type: "ChannelMemberLookup", isSingle: false },
389
- truncated_by: { type: "User", isSingle: true }
390
- };
391
- return decode(typeMappings, input);
392
- };
393
- decoders.ChannelConfig = (input) => {
394
- const typeMappings = {
395
- created_at: { type: "DatetimeType", isSingle: true },
396
- updated_at: { type: "DatetimeType", isSingle: true }
397
- };
398
- return decode(typeMappings, input);
399
- };
400
375
  decoders.ChannelConfigWithInfo = (input) => {
401
376
  const typeMappings = {
402
377
  created_at: { type: "DatetimeType", isSingle: true },
@@ -405,28 +380,6 @@ decoders.ChannelConfigWithInfo = (input) => {
405
380
  };
406
381
  return decode(typeMappings, input);
407
382
  };
408
- decoders.ChannelMember = (input) => {
409
- const typeMappings = {
410
- created_at: { type: "DatetimeType", isSingle: true },
411
- updated_at: { type: "DatetimeType", isSingle: true },
412
- archived_at: { type: "DatetimeType", isSingle: true },
413
- ban_expires: { type: "DatetimeType", isSingle: true },
414
- deleted_at: { type: "DatetimeType", isSingle: true },
415
- invite_accepted_at: { type: "DatetimeType", isSingle: true },
416
- invite_rejected_at: { type: "DatetimeType", isSingle: true },
417
- pinned_at: { type: "DatetimeType", isSingle: true },
418
- user: { type: "User", isSingle: true }
419
- };
420
- return decode(typeMappings, input);
421
- };
422
- decoders.ChannelMemberLookup = (input) => {
423
- const typeMappings = {
424
- archived_at: { type: "DatetimeType", isSingle: true },
425
- ban_expires: { type: "DatetimeType", isSingle: true },
426
- pinned_at: { type: "DatetimeType", isSingle: true }
427
- };
428
- return decode(typeMappings, input);
429
- };
430
383
  decoders.ChannelMemberResponse = (input) => {
431
384
  const typeMappings = {
432
385
  created_at: { type: "DatetimeType", isSingle: true },
@@ -537,7 +490,7 @@ decoders.CommentResponse = (input) => {
537
490
  deleted_at: { type: "DatetimeType", isSingle: true },
538
491
  edited_at: { type: "DatetimeType", isSingle: true },
539
492
  latest_reactions: { type: "FeedsReactionResponse", isSingle: false },
540
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false }
493
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false }
541
494
  };
542
495
  return decode(typeMappings, input);
543
496
  };
@@ -607,12 +560,6 @@ decoders.DeleteCommentResponse = (input) => {
607
560
  };
608
561
  return decode(typeMappings, input);
609
562
  };
610
- decoders.Device = (input) => {
611
- const typeMappings = {
612
- created_at: { type: "DatetimeType", isSingle: true }
613
- };
614
- return decode(typeMappings, input);
615
- };
616
563
  decoders.DeviceResponse = (input) => {
617
564
  const typeMappings = {
618
565
  created_at: { type: "DatetimeType", isSingle: true }
@@ -763,6 +710,13 @@ decoders.FeedUpdatedEvent = (input) => {
763
710
  };
764
711
  return decode(typeMappings, input);
765
712
  };
713
+ decoders.FeedsReactionGroupResponse = (input) => {
714
+ const typeMappings = {
715
+ first_reaction_at: { type: "DatetimeType", isSingle: true },
716
+ last_reaction_at: { type: "DatetimeType", isSingle: true }
717
+ };
718
+ return decode(typeMappings, input);
719
+ };
766
720
  decoders.FeedsReactionResponse = (input) => {
767
721
  const typeMappings = {
768
722
  created_at: { type: "DatetimeType", isSingle: true },
@@ -895,7 +849,8 @@ decoders.GetOrCreateFeedResponse = (input) => {
895
849
  decoders.HealthCheckEvent = (input) => {
896
850
  const typeMappings = {
897
851
  created_at: { type: "DatetimeType", isSingle: true },
898
- received_at: { type: "DatetimeType", isSingle: true }
852
+ received_at: { type: "DatetimeType", isSingle: true },
853
+ me: { type: "OwnUserResponse", isSingle: true }
899
854
  };
900
855
  return decode(typeMappings, input);
901
856
  };
@@ -918,40 +873,6 @@ decoders.MembershipLevelResponse = (input) => {
918
873
  };
919
874
  return decode(typeMappings, input);
920
875
  };
921
- decoders.Message = (input) => {
922
- const typeMappings = {
923
- created_at: { type: "DatetimeType", isSingle: true },
924
- updated_at: { type: "DatetimeType", isSingle: true },
925
- latest_reactions: { type: "Reaction", isSingle: false },
926
- mentioned_users: { type: "User", isSingle: false },
927
- own_reactions: { type: "Reaction", isSingle: false },
928
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false },
929
- deleted_at: { type: "DatetimeType", isSingle: true },
930
- message_text_updated_at: { type: "DatetimeType", isSingle: true },
931
- pin_expires: { type: "DatetimeType", isSingle: true },
932
- pinned_at: { type: "DatetimeType", isSingle: true },
933
- thread_participants: { type: "User", isSingle: false },
934
- member: { type: "ChannelMember", isSingle: true },
935
- pinned_by: { type: "User", isSingle: true },
936
- poll: { type: "Poll", isSingle: true },
937
- quoted_message: { type: "Message", isSingle: true },
938
- reminder: { type: "MessageReminder", isSingle: true },
939
- shared_location: { type: "SharedLocation", isSingle: true },
940
- user: { type: "User", isSingle: true }
941
- };
942
- return decode(typeMappings, input);
943
- };
944
- decoders.MessageReminder = (input) => {
945
- const typeMappings = {
946
- created_at: { type: "DatetimeType", isSingle: true },
947
- updated_at: { type: "DatetimeType", isSingle: true },
948
- remind_at: { type: "DatetimeType", isSingle: true },
949
- channel: { type: "Channel", isSingle: true },
950
- message: { type: "Message", isSingle: true },
951
- user: { type: "User", isSingle: true }
952
- };
953
- return decode(typeMappings, input);
954
- };
955
876
  decoders.MessageResponse = (input) => {
956
877
  const typeMappings = {
957
878
  created_at: { type: "DatetimeType", isSingle: true },
@@ -997,7 +918,7 @@ decoders.ModerationFlagResponse = (input) => {
997
918
  decoders.ModerationFlaggedEvent = (input) => {
998
919
  const typeMappings = {
999
920
  created_at: { type: "DatetimeType", isSingle: true },
1000
- user: { type: "User", isSingle: true }
921
+ received_at: { type: "DatetimeType", isSingle: true }
1001
922
  };
1002
923
  return decode(typeMappings, input);
1003
924
  };
@@ -1012,8 +933,8 @@ decoders.ModerationMarkReviewedEvent = (input) => {
1012
933
  };
1013
934
  decoders.MuteResponse = (input) => {
1014
935
  const typeMappings = {
1015
- mutes: { type: "UserMute", isSingle: false },
1016
- own_user: { type: "OwnUser", isSingle: true }
936
+ mutes: { type: "UserMuteResponse", isSingle: false },
937
+ own_user: { type: "OwnUserResponse", isSingle: true }
1017
938
  };
1018
939
  return decode(typeMappings, input);
1019
940
  };
@@ -1042,18 +963,18 @@ decoders.OwnBatchResponse = (input) => {
1042
963
  };
1043
964
  return decode(typeMappings, input);
1044
965
  };
1045
- decoders.OwnUser = (input) => {
966
+ decoders.OwnUserResponse = (input) => {
1046
967
  const typeMappings = {
1047
968
  created_at: { type: "DatetimeType", isSingle: true },
1048
969
  updated_at: { type: "DatetimeType", isSingle: true },
1049
970
  channel_mutes: { type: "ChannelMute", isSingle: false },
1050
- devices: { type: "Device", isSingle: false },
1051
- mutes: { type: "UserMute", isSingle: false },
971
+ devices: { type: "DeviceResponse", isSingle: false },
972
+ mutes: { type: "UserMuteResponse", isSingle: false },
1052
973
  deactivated_at: { type: "DatetimeType", isSingle: true },
1053
974
  deleted_at: { type: "DatetimeType", isSingle: true },
1054
975
  last_active: { type: "DatetimeType", isSingle: true },
1055
- last_engaged_at: { type: "DatetimeType", isSingle: true },
1056
- push_preferences: { type: "PushPreferences", isSingle: true }
976
+ revoke_tokens_issued_before: { type: "DatetimeType", isSingle: true },
977
+ push_preferences: { type: "PushPreferencesResponse", isSingle: true }
1057
978
  };
1058
979
  return decode(typeMappings, input);
1059
980
  };
@@ -1064,16 +985,6 @@ decoders.PinActivityResponse = (input) => {
1064
985
  };
1065
986
  return decode(typeMappings, input);
1066
987
  };
1067
- decoders.Poll = (input) => {
1068
- const typeMappings = {
1069
- created_at: { type: "DatetimeType", isSingle: true },
1070
- updated_at: { type: "DatetimeType", isSingle: true },
1071
- latest_answers: { type: "PollVote", isSingle: false },
1072
- own_votes: { type: "PollVote", isSingle: false },
1073
- created_by: { type: "User", isSingle: true }
1074
- };
1075
- return decode(typeMappings, input);
1076
- };
1077
988
  decoders.PollClosedFeedEvent = (input) => {
1078
989
  const typeMappings = {
1079
990
  created_at: { type: "DatetimeType", isSingle: true },
@@ -1114,14 +1025,6 @@ decoders.PollUpdatedFeedEvent = (input) => {
1114
1025
  };
1115
1026
  return decode(typeMappings, input);
1116
1027
  };
1117
- decoders.PollVote = (input) => {
1118
- const typeMappings = {
1119
- created_at: { type: "DatetimeType", isSingle: true },
1120
- updated_at: { type: "DatetimeType", isSingle: true },
1121
- user: { type: "User", isSingle: true }
1122
- };
1123
- return decode(typeMappings, input);
1124
- };
1125
1028
  decoders.PollVoteCastedFeedEvent = (input) => {
1126
1029
  const typeMappings = {
1127
1030
  created_at: { type: "DatetimeType", isSingle: true },
@@ -1170,7 +1073,7 @@ decoders.PollVotesResponse = (input) => {
1170
1073
  };
1171
1074
  return decode(typeMappings, input);
1172
1075
  };
1173
- decoders.PushPreferences = (input) => {
1076
+ decoders.PushPreferencesResponse = (input) => {
1174
1077
  const typeMappings = {
1175
1078
  disabled_until: { type: "DatetimeType", isSingle: true }
1176
1079
  };
@@ -1264,8 +1167,7 @@ decoders.Reaction = (input) => {
1264
1167
  const typeMappings = {
1265
1168
  created_at: { type: "DatetimeType", isSingle: true },
1266
1169
  updated_at: { type: "DatetimeType", isSingle: true },
1267
- deleted_at: { type: "DatetimeType", isSingle: true },
1268
- user: { type: "User", isSingle: true }
1170
+ deleted_at: { type: "DatetimeType", isSingle: true }
1269
1171
  };
1270
1172
  return decode(typeMappings, input);
1271
1173
  };
@@ -1324,7 +1226,7 @@ decoders.ReviewQueueItemResponse = (input) => {
1324
1226
  created_at: { type: "DatetimeType", isSingle: true },
1325
1227
  updated_at: { type: "DatetimeType", isSingle: true },
1326
1228
  actions: { type: "ActionLogResponse", isSingle: false },
1327
- bans: { type: "Ban", isSingle: false },
1229
+ bans: { type: "BanInfoResponse", isSingle: false },
1328
1230
  flags: { type: "ModerationFlagResponse", isSingle: false },
1329
1231
  completed_at: { type: "DatetimeType", isSingle: true },
1330
1232
  reviewed_at: { type: "DatetimeType", isSingle: true },
@@ -1340,16 +1242,6 @@ decoders.ReviewQueueItemResponse = (input) => {
1340
1242
  };
1341
1243
  return decode(typeMappings, input);
1342
1244
  };
1343
- decoders.SharedLocation = (input) => {
1344
- const typeMappings = {
1345
- created_at: { type: "DatetimeType", isSingle: true },
1346
- updated_at: { type: "DatetimeType", isSingle: true },
1347
- end_at: { type: "DatetimeType", isSingle: true },
1348
- channel: { type: "Channel", isSingle: true },
1349
- message: { type: "Message", isSingle: true }
1350
- };
1351
- return decode(typeMappings, input);
1352
- };
1353
1245
  decoders.SharedLocationResponse = (input) => {
1354
1246
  const typeMappings = {
1355
1247
  created_at: { type: "DatetimeType", isSingle: true },
@@ -1415,7 +1307,7 @@ decoders.ThreadedCommentResponse = (input) => {
1415
1307
  edited_at: { type: "DatetimeType", isSingle: true },
1416
1308
  latest_reactions: { type: "FeedsReactionResponse", isSingle: false },
1417
1309
  replies: { type: "ThreadedCommentResponse", isSingle: false },
1418
- reaction_groups: { type: "ReactionGroupResponse", isSingle: false }
1310
+ reaction_groups: { type: "FeedsReactionGroupResponse", isSingle: false }
1419
1311
  };
1420
1312
  return decode(typeMappings, input);
1421
1313
  };
@@ -1518,47 +1410,22 @@ decoders.UpsertConfigResponse = (input) => {
1518
1410
  };
1519
1411
  decoders.UpsertPushPreferencesResponse = (input) => {
1520
1412
  const typeMappings = {
1521
- user_preferences: { type: "PushPreferences", isSingle: false }
1522
- };
1523
- return decode(typeMappings, input);
1524
- };
1525
- decoders.User = (input) => {
1526
- const typeMappings = {
1527
- ban_expires: { type: "DatetimeType", isSingle: true },
1528
- created_at: { type: "DatetimeType", isSingle: true },
1529
- deactivated_at: { type: "DatetimeType", isSingle: true },
1530
- deleted_at: { type: "DatetimeType", isSingle: true },
1531
- last_active: { type: "DatetimeType", isSingle: true },
1532
- last_engaged_at: { type: "DatetimeType", isSingle: true },
1533
- revoke_tokens_issued_before: { type: "DatetimeType", isSingle: true },
1534
- updated_at: { type: "DatetimeType", isSingle: true }
1413
+ user_preferences: { type: "PushPreferencesResponse", isSingle: false }
1535
1414
  };
1536
1415
  return decode(typeMappings, input);
1537
1416
  };
1538
1417
  decoders.UserBannedEvent = (input) => {
1539
1418
  const typeMappings = {
1540
1419
  created_at: { type: "DatetimeType", isSingle: true },
1541
- created_by: { type: "User", isSingle: true },
1542
1420
  expiration: { type: "DatetimeType", isSingle: true },
1543
- user: { type: "User", isSingle: true }
1421
+ received_at: { type: "DatetimeType", isSingle: true }
1544
1422
  };
1545
1423
  return decode(typeMappings, input);
1546
1424
  };
1547
1425
  decoders.UserDeactivatedEvent = (input) => {
1548
1426
  const typeMappings = {
1549
1427
  created_at: { type: "DatetimeType", isSingle: true },
1550
- created_by: { type: "User", isSingle: true },
1551
- user: { type: "User", isSingle: true }
1552
- };
1553
- return decode(typeMappings, input);
1554
- };
1555
- decoders.UserMute = (input) => {
1556
- const typeMappings = {
1557
- created_at: { type: "DatetimeType", isSingle: true },
1558
- updated_at: { type: "DatetimeType", isSingle: true },
1559
- expires: { type: "DatetimeType", isSingle: true },
1560
- target: { type: "User", isSingle: true },
1561
- user: { type: "User", isSingle: true }
1428
+ received_at: { type: "DatetimeType", isSingle: true }
1562
1429
  };
1563
1430
  return decode(typeMappings, input);
1564
1431
  };
@@ -1572,17 +1439,10 @@ decoders.UserMuteResponse = (input) => {
1572
1439
  };
1573
1440
  return decode(typeMappings, input);
1574
1441
  };
1575
- decoders.UserMutedEvent = (input) => {
1576
- const typeMappings = {
1577
- created_at: { type: "DatetimeType", isSingle: true },
1578
- user: { type: "User", isSingle: true }
1579
- };
1580
- return decode(typeMappings, input);
1581
- };
1582
1442
  decoders.UserReactivatedEvent = (input) => {
1583
1443
  const typeMappings = {
1584
1444
  created_at: { type: "DatetimeType", isSingle: true },
1585
- user: { type: "User", isSingle: true }
1445
+ received_at: { type: "DatetimeType", isSingle: true }
1586
1446
  };
1587
1447
  return decode(typeMappings, input);
1588
1448
  };
@@ -1597,6 +1457,13 @@ decoders.UserResponse = (input) => {
1597
1457
  };
1598
1458
  return decode(typeMappings, input);
1599
1459
  };
1460
+ decoders.UserUnbannedEvent = (input) => {
1461
+ const typeMappings = {
1462
+ created_at: { type: "DatetimeType", isSingle: true },
1463
+ received_at: { type: "DatetimeType", isSingle: true }
1464
+ };
1465
+ return decode(typeMappings, input);
1466
+ };
1600
1467
  decoders.UserUpdatedEvent = (input) => {
1601
1468
  const typeMappings = {
1602
1469
  created_at: { type: "DatetimeType", isSingle: true },
@@ -2041,7 +1908,8 @@ class FeedsApi {
2041
1908
  interest_tags: request?.interest_tags,
2042
1909
  mentioned_user_ids: request?.mentioned_user_ids,
2043
1910
  custom: request?.custom,
2044
- location: request?.location
1911
+ location: request?.location,
1912
+ search_data: request?.search_data
2045
1913
  };
2046
1914
  const response = await this.apiClient.sendRequest(
2047
1915
  "PUT",
@@ -4057,7 +3925,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
4057
3925
  };
4058
3926
  return result;
4059
3927
  };
4060
- const version = "0.3.48";
3928
+ const version = "0.3.49";
4061
3929
  const axios = axiosImport.default ?? axiosImport;
4062
3930
  class ApiClient {
4063
3931
  constructor(apiKey, tokenManager, connectionIdManager, options) {
@@ -4280,8 +4148,8 @@ const eventDecoderMapping = {
4280
4148
  "moderation.mark_reviewed": (data) => decoders.ModerationMarkReviewedEvent(data),
4281
4149
  "user.banned": (data) => decoders.UserBannedEvent(data),
4282
4150
  "user.deactivated": (data) => decoders.UserDeactivatedEvent(data),
4283
- "user.muted": (data) => decoders.UserMutedEvent(data),
4284
4151
  "user.reactivated": (data) => decoders.UserReactivatedEvent(data),
4152
+ "user.unbanned": (data) => decoders.UserUnbannedEvent(data),
4285
4153
  "user.updated": (data) => decoders.UserUpdatedEvent(data)
4286
4154
  };
4287
4155
  const decodeWSEvent = (data) => {
@@ -4507,6 +4375,7 @@ class ModerationApi {
4507
4375
  delete_message: request?.delete_message,
4508
4376
  delete_reaction: request?.delete_reaction,
4509
4377
  delete_user: request?.delete_user,
4378
+ flag: request?.flag,
4510
4379
  mark_reviewed: request?.mark_reviewed,
4511
4380
  reject_appeal: request?.reject_appeal,
4512
4381
  restore: request?.restore,
@@ -4528,8 +4397,6 @@ class ModerationApi {
4528
4397
  }
4529
4398
  class ModerationClient extends ModerationApi {
4530
4399
  }
4531
- const isPollUpdatedEvent = (e) => e.type === "feeds.poll.updated";
4532
- const isPollClosedEventEvent = (e) => e.type === "feeds.poll.closed";
4533
4400
  const isVoteAnswer = (vote) => !!vote?.answer_text;
4534
4401
  class StreamPoll {
4535
4402
  constructor({ client, poll }) {
@@ -4561,7 +4428,10 @@ class StreamPoll {
4561
4428
  };
4562
4429
  this.handlePollUpdated = (event) => {
4563
4430
  if (event.poll?.id && event.poll.id !== this.id) return;
4564
- if (!isPollUpdatedEvent(event)) return;
4431
+ const currentState = this.data;
4432
+ if (currentState.updated_at && event.poll.updated_at && event.poll.updated_at <= currentState.updated_at) {
4433
+ return;
4434
+ }
4565
4435
  const { id, ...pollData } = event.poll;
4566
4436
  this.state.partialNext({
4567
4437
  ...pollData,
@@ -4570,7 +4440,8 @@ class StreamPoll {
4570
4440
  };
4571
4441
  this.handlePollClosed = (event) => {
4572
4442
  if (event.poll?.id && event.poll.id !== this.id) return;
4573
- if (!isPollClosedEventEvent(event)) return;
4443
+ const currentState = this.data;
4444
+ if (currentState.is_closed) return;
4574
4445
  this.state.partialNext({
4575
4446
  is_closed: true,
4576
4447
  last_activity_at: new Date(event.created_at)
@@ -4891,7 +4762,7 @@ const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
4891
4762
  return result;
4892
4763
  };
4893
4764
  const Constants = {
4894
- DEFAULT_COMMENT_PAGINATION: "first"
4765
+ DEFAULT_COMMENT_PAGINATION: "last"
4895
4766
  };
4896
4767
  const isFollowResponse = (data) => {
4897
4768
  return "source_feed" in data && "target_feed" in data;
@@ -5182,8 +5053,21 @@ function handleCommentAdded(payload, fromWs) {
5182
5053
  return currentState;
5183
5054
  }
5184
5055
  const newComments = entityState?.comments ? [...entityState.comments] : [];
5185
- if (entityState.pagination?.sort === "last") {
5056
+ const sort = entityState.pagination?.sort;
5057
+ const hasMorePages = entityState.pagination?.next !== void 0;
5058
+ const isFromCurrentUser = eventTriggeredByConnectedUser.call(this, payload);
5059
+ if (sort === "last") {
5186
5060
  newComments.unshift(comment);
5061
+ } else if (sort === "first") {
5062
+ if (isFromCurrentUser) {
5063
+ newComments.push(comment);
5064
+ } else {
5065
+ if (!hasMorePages) {
5066
+ newComments.push(comment);
5067
+ } else {
5068
+ return currentState;
5069
+ }
5070
+ }
5187
5071
  } else {
5188
5072
  newComments.push(comment);
5189
5073
  }
@@ -6607,11 +6491,11 @@ const _Feed = class _Feed extends FeedApi {
6607
6491
  "app.updated": _Feed.noop,
6608
6492
  "user.banned": _Feed.noop,
6609
6493
  "user.deactivated": _Feed.noop,
6610
- "user.muted": _Feed.noop,
6611
6494
  "user.reactivated": _Feed.noop,
6612
6495
  "user.updated": _Feed.noop,
6613
6496
  "feeds.activity.feedback": handleActivityFeedback.bind(this),
6614
- "feeds.activity.restored": _Feed.noop
6497
+ "feeds.activity.restored": _Feed.noop,
6498
+ "user.unbanned": _Feed.noop
6615
6499
  };
6616
6500
  this.eventDispatcher = new EventDispatcher();
6617
6501
  this.on = this.eventDispatcher.on;
@@ -6661,7 +6545,9 @@ const _Feed = class _Feed extends FeedApi {
6661
6545
  const { last_get_or_create_request_config } = this.state.getLatestValue();
6662
6546
  if (last_get_or_create_request_config?.watch) {
6663
6547
  this.inProgressGetOrCreate = void 0;
6664
- await withRetry(() => this.getOrCreate(last_get_or_create_request_config));
6548
+ await withRetry(
6549
+ () => this.getOrCreate(last_get_or_create_request_config)
6550
+ );
6665
6551
  }
6666
6552
  }
6667
6553
  async getOrCreate(request) {
@@ -6803,6 +6689,16 @@ const _Feed = class _Feed extends FeedApi {
6803
6689
  ({ replies: _r, meta: _m, ...restOfTheCommentResponse }) => restOfTheCommentResponse
6804
6690
  );
6805
6691
  const existingComments = newCommentsByEntityId[entityId]?.comments;
6692
+ let comments = existingComments ? uniqueArrayMerge(
6693
+ existingComments,
6694
+ newComments,
6695
+ (comment) => comment.id
6696
+ ) : newComments;
6697
+ if (data.sort === "first" && existingComments && existingComments.length > 0) {
6698
+ comments = [...comments].sort(
6699
+ (a, b) => new Date(a.created_at).getTime() - new Date(b.created_at).getTime()
6700
+ );
6701
+ }
6806
6702
  newCommentsByEntityId[entityId] = {
6807
6703
  ...newCommentsByEntityId[entityId],
6808
6704
  entity_parent_id: item.entityParentId,
@@ -6811,11 +6707,7 @@ const _Feed = class _Feed extends FeedApi {
6811
6707
  next: item.next,
6812
6708
  sort: data.sort
6813
6709
  },
6814
- comments: existingComments ? uniqueArrayMerge(
6815
- existingComments,
6816
- newComments,
6817
- (comment) => comment.id
6818
- ) : newComments
6710
+ comments
6819
6711
  };
6820
6712
  }
6821
6713
  return {
@@ -7573,13 +7465,34 @@ class FeedsClient extends FeedsApi {
7573
7465
  this.devToken = (userId) => {
7574
7466
  return streamDevToken(userId);
7575
7467
  };
7468
+ this.updatePoll = async (request) => {
7469
+ const poll = this.pollFromState(request.id);
7470
+ const response = await super.updatePoll(request);
7471
+ if (response.poll && poll) {
7472
+ poll.handlePollUpdated({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7473
+ }
7474
+ return response;
7475
+ };
7476
+ this.updatePollPartial = async (request) => {
7477
+ const poll = this.pollFromState(request.poll_id);
7478
+ const response = await super.updatePollPartial(request);
7479
+ if (response.poll && poll) {
7480
+ poll.handlePollUpdated({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7481
+ }
7482
+ return response;
7483
+ };
7576
7484
  this.closePoll = async (request) => {
7577
- return await this.updatePollPartial({
7485
+ const poll = this.pollFromState(request.poll_id);
7486
+ const response = await super.updatePollPartial({
7578
7487
  poll_id: request.poll_id,
7579
7488
  set: {
7580
7489
  is_closed: true
7581
7490
  }
7582
7491
  });
7492
+ if (response.poll && poll) {
7493
+ poll.handlePollClosed({ poll: response.poll, created_at: /* @__PURE__ */ new Date() });
7494
+ }
7495
+ return response;
7583
7496
  };
7584
7497
  this.castPollVote = async (request) => {
7585
7498
  const poll = this.pollFromState(request.poll_id);
@@ -8186,4 +8099,4 @@ exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
8186
8099
  exports.shouldUpdateState = shouldUpdateState;
8187
8100
  exports.uniqueArrayMerge = uniqueArrayMerge;
8188
8101
  exports.updateEntityInArray = updateEntityInArray;
8189
- //# sourceMappingURL=feeds-client-DuJuJuEJ.js.map
8102
+ //# sourceMappingURL=feeds-client-BDvUG9yF.js.map