@stream-io/feeds-client 0.2.8 → 0.2.10
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.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +1 -1
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +1 -1
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{index-Cfbt0DFY.js → index-C49kZoN7.js} +273 -51
- package/dist/index-C49kZoN7.js.map +1 -0
- package/dist/{index-DLC5hiNd.mjs → index-EeFSq3sq.mjs} +273 -51
- package/dist/index-EeFSq3sq.mjs.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +4 -5
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +1 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts +6 -5
- package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/handle-comment-added.d.ts +4 -3
- package/dist/types/feed/event-handlers/comment/handle-comment-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/handle-comment-deleted.d.ts +4 -3
- package/dist/types/feed/event-handlers/comment/handle-comment-deleted.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction-added.d.ts +5 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction-added.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction-deleted.d.ts +5 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction-deleted.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/comment/handle-comment-updated.d.ts +4 -3
- package/dist/types/feed/event-handlers/comment/handle-comment-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/index.d.ts +2 -1
- package/dist/types/feed/event-handlers/comment/index.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/utils/index.d.ts +2 -0
- package/dist/types/feed/event-handlers/comment/utils/index.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/comment/utils/update-comment-count.d.ts +8 -0
- package/dist/types/feed/event-handlers/comment/utils/update-comment-count.d.ts.map +1 -0
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +19 -1
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/types-internal.d.ts +4 -2
- package/dist/types/types-internal.d.ts.map +1 -1
- package/dist/types/utils/ensure-exhausted.d.ts +2 -0
- package/dist/types/utils/ensure-exhausted.d.ts.map +1 -0
- package/dist/types/utils/event-triggered-by-connected-user.d.ts +6 -0
- package/dist/types/utils/event-triggered-by-connected-user.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/logger.d.ts +10 -1
- package/dist/types/utils/logger.d.ts.map +1 -1
- package/dist/types/utils/state-update-queue.d.ts +22 -2
- package/dist/types/utils/state-update-queue.d.ts.map +1 -1
- package/dist/types/utils/type-assertions.d.ts +2 -5
- package/dist/types/utils/type-assertions.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +15 -10
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +1 -1
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +1 -1
- package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +131 -1
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +38 -15
- package/src/feed/event-handlers/comment/handle-comment-added.test.ts +131 -7
- package/src/feed/event-handlers/comment/handle-comment-added.ts +24 -4
- package/src/feed/event-handlers/comment/handle-comment-deleted.test.ts +124 -2
- package/src/feed/event-handlers/comment/handle-comment-deleted.ts +29 -3
- package/src/feed/event-handlers/comment/{handle-comment-reaction.test.ts → handle-comment-reaction-added.test.ts} +152 -138
- package/src/feed/event-handlers/comment/handle-comment-reaction-added.ts +72 -0
- package/src/feed/event-handlers/comment/handle-comment-reaction-deleted.test.ts +343 -0
- package/src/feed/event-handlers/comment/handle-comment-reaction-deleted.ts +74 -0
- package/src/feed/event-handlers/comment/handle-comment-updated.test.ts +137 -1
- package/src/feed/event-handlers/comment/handle-comment-updated.ts +29 -4
- package/src/feed/event-handlers/comment/index.ts +3 -1
- package/src/feed/event-handlers/comment/utils/index.ts +1 -0
- package/src/feed/event-handlers/comment/utils/update-comment-count.test.ts +320 -0
- package/src/feed/event-handlers/comment/utils/update-comment-count.ts +51 -0
- package/src/feed/event-handlers/follow/handle-follow-deleted.ts +1 -1
- package/src/feed/feed.ts +4 -3
- package/src/feeds-client/feeds-client.ts +104 -0
- package/src/test-utils/response-generators.ts +18 -1
- package/src/types-internal.ts +4 -4
- package/src/utils/ensure-exhausted.ts +5 -0
- package/src/utils/event-triggered-by-connected-user.test.ts +73 -0
- package/src/utils/event-triggered-by-connected-user.ts +15 -0
- package/src/utils/index.ts +2 -1
- package/src/utils/logger.ts +2 -1
- package/src/utils/state-update-queue.ts +89 -25
- package/src/utils/type-assertions.ts +2 -3
- package/dist/index-Cfbt0DFY.js.map +0 -1
- package/dist/index-DLC5hiNd.mjs.map +0 -1
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction.d.ts +0 -4
- package/dist/types/feed/event-handlers/comment/handle-comment-reaction.d.ts.map +0 -1
- package/src/feed/event-handlers/comment/handle-comment-reaction.ts +0 -61
|
@@ -3712,7 +3712,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
|
|
|
3712
3712
|
};
|
|
3713
3713
|
return result;
|
|
3714
3714
|
};
|
|
3715
|
-
const version = "0.2.
|
|
3715
|
+
const version = "0.2.10";
|
|
3716
3716
|
class ApiClient {
|
|
3717
3717
|
constructor(apiKey, tokenManager, connectionIdManager, options) {
|
|
3718
3718
|
this.apiKey = apiKey;
|
|
@@ -4469,6 +4469,9 @@ const isImageFile = (file) => {
|
|
|
4469
4469
|
const isVideoFile = (file) => {
|
|
4470
4470
|
return file.type.startsWith("video/");
|
|
4471
4471
|
};
|
|
4472
|
+
const ensureExhausted = (x, message) => {
|
|
4473
|
+
getLogger("helpers").warn(message, x);
|
|
4474
|
+
};
|
|
4472
4475
|
const shouldUpdateState = ({
|
|
4473
4476
|
stateUpdateQueueId,
|
|
4474
4477
|
stateUpdateQueue,
|
|
@@ -4476,7 +4479,7 @@ const shouldUpdateState = ({
|
|
|
4476
4479
|
fromWs = true,
|
|
4477
4480
|
isTriggeredByConnectedUser = false
|
|
4478
4481
|
}) => {
|
|
4479
|
-
if (!watch || !isTriggeredByConnectedUser) {
|
|
4482
|
+
if (!watch || !isTriggeredByConnectedUser || !stateUpdateQueueId) {
|
|
4480
4483
|
return true;
|
|
4481
4484
|
}
|
|
4482
4485
|
const prefixedStateUpdateQueueId = fromWs ? `ws-${stateUpdateQueueId}` : `http-${stateUpdateQueueId}`;
|
|
@@ -4488,19 +4491,41 @@ const shouldUpdateState = ({
|
|
|
4488
4491
|
stateUpdateQueue.add(prefixedStateUpdateQueueId);
|
|
4489
4492
|
return true;
|
|
4490
4493
|
};
|
|
4491
|
-
function getStateUpdateQueueId(
|
|
4492
|
-
const
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4494
|
+
function getStateUpdateQueueId(...args) {
|
|
4495
|
+
const [data, prefix] = args;
|
|
4496
|
+
const toJoin = [prefix];
|
|
4497
|
+
switch (prefix) {
|
|
4498
|
+
case "activity-updated": {
|
|
4499
|
+
return toJoin.concat([data.activity.id]).join("-");
|
|
4500
|
+
}
|
|
4501
|
+
case "activity-reaction-created":
|
|
4502
|
+
case "activity-reaction-deleted": {
|
|
4503
|
+
return toJoin.concat([
|
|
4504
|
+
data.activity.id,
|
|
4505
|
+
data.reaction.type
|
|
4506
|
+
]).join("-");
|
|
4507
|
+
}
|
|
4508
|
+
case "comment-reaction-created":
|
|
4509
|
+
case "comment-reaction-deleted": {
|
|
4510
|
+
return toJoin.concat([
|
|
4511
|
+
data.comment.id,
|
|
4512
|
+
data.reaction.type
|
|
4513
|
+
]).join("-");
|
|
4514
|
+
}
|
|
4515
|
+
case "comment-created":
|
|
4516
|
+
case "comment-deleted":
|
|
4517
|
+
case "comment-updated": {
|
|
4518
|
+
return toJoin.concat([data.comment.id]).join("-");
|
|
4519
|
+
}
|
|
4520
|
+
case "follow-created":
|
|
4521
|
+
case "follow-deleted":
|
|
4522
|
+
case "follow-updated": {
|
|
4523
|
+
return toJoin.concat([data.source_feed.feed, data.target_feed.feed]).join("-");
|
|
4524
|
+
}
|
|
4525
|
+
default: {
|
|
4526
|
+
ensureExhausted(data, "Encountered unknown state update queue prefix.");
|
|
4527
|
+
}
|
|
4528
|
+
}
|
|
4504
4529
|
}
|
|
4505
4530
|
function updateEntityInArray({
|
|
4506
4531
|
matcher,
|
|
@@ -4616,7 +4641,7 @@ const updateStateFollowDeleted = (follow, currentState, currentFeedId, connected
|
|
|
4616
4641
|
function handleFollowDeleted(eventOrResponse, fromWs) {
|
|
4617
4642
|
const follow = eventOrResponse.follow;
|
|
4618
4643
|
if (!shouldUpdateState({
|
|
4619
|
-
stateUpdateQueueId: getStateUpdateQueueId(follow, "deleted"),
|
|
4644
|
+
stateUpdateQueueId: getStateUpdateQueueId(follow, "follow-deleted"),
|
|
4620
4645
|
stateUpdateQueue: this.stateUpdateQueue,
|
|
4621
4646
|
watch: this.currentState.watch,
|
|
4622
4647
|
fromWs,
|
|
@@ -4693,9 +4718,23 @@ function handleFollowUpdated(eventOrResponse, fromWs) {
|
|
|
4693
4718
|
return newState ?? currentState;
|
|
4694
4719
|
});
|
|
4695
4720
|
}
|
|
4696
|
-
function
|
|
4697
|
-
const
|
|
4721
|
+
function eventTriggeredByConnectedUser(payload) {
|
|
4722
|
+
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
4723
|
+
const payloadUser = payload.user ?? connectedUser;
|
|
4724
|
+
return typeof connectedUser !== "undefined" && connectedUser?.id === payloadUser?.id;
|
|
4725
|
+
}
|
|
4726
|
+
function handleCommentAdded(payload, fromWs) {
|
|
4727
|
+
const { comment } = payload;
|
|
4698
4728
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
4729
|
+
if (!shouldUpdateState({
|
|
4730
|
+
stateUpdateQueueId: getStateUpdateQueueId(payload, "comment-created"),
|
|
4731
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
4732
|
+
watch: this.currentState.watch,
|
|
4733
|
+
fromWs,
|
|
4734
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(this, payload)
|
|
4735
|
+
})) {
|
|
4736
|
+
return;
|
|
4737
|
+
}
|
|
4699
4738
|
this.state.next((currentState) => {
|
|
4700
4739
|
const entityState = currentState.comments_by_entity_id[entityId];
|
|
4701
4740
|
if (typeof entityState?.comments === "undefined") {
|
|
@@ -4719,8 +4758,21 @@ function handleCommentAdded(event) {
|
|
|
4719
4758
|
};
|
|
4720
4759
|
});
|
|
4721
4760
|
}
|
|
4722
|
-
function handleCommentDeleted(
|
|
4761
|
+
function handleCommentDeleted(payload, fromWs) {
|
|
4762
|
+
const { comment } = payload;
|
|
4723
4763
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
4764
|
+
if (!shouldUpdateState({
|
|
4765
|
+
stateUpdateQueueId: getStateUpdateQueueId(
|
|
4766
|
+
payload,
|
|
4767
|
+
"comment-deleted"
|
|
4768
|
+
),
|
|
4769
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
4770
|
+
watch: this.currentState.watch,
|
|
4771
|
+
fromWs,
|
|
4772
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(this, payload)
|
|
4773
|
+
})) {
|
|
4774
|
+
return;
|
|
4775
|
+
}
|
|
4724
4776
|
this.state.next((currentState) => {
|
|
4725
4777
|
let newCommentsByEntityId;
|
|
4726
4778
|
const index = this.getCommentIndex(comment, currentState);
|
|
@@ -4751,9 +4803,21 @@ function handleCommentDeleted({ comment }) {
|
|
|
4751
4803
|
};
|
|
4752
4804
|
});
|
|
4753
4805
|
}
|
|
4754
|
-
function handleCommentUpdated(
|
|
4755
|
-
const { comment } =
|
|
4806
|
+
function handleCommentUpdated(payload, fromWs) {
|
|
4807
|
+
const { comment } = payload;
|
|
4756
4808
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
4809
|
+
if (!shouldUpdateState({
|
|
4810
|
+
stateUpdateQueueId: getStateUpdateQueueId(
|
|
4811
|
+
payload,
|
|
4812
|
+
"comment-updated"
|
|
4813
|
+
),
|
|
4814
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
4815
|
+
watch: this.currentState.watch,
|
|
4816
|
+
fromWs,
|
|
4817
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(this, payload)
|
|
4818
|
+
})) {
|
|
4819
|
+
return;
|
|
4820
|
+
}
|
|
4757
4821
|
this.state.next((currentState) => {
|
|
4758
4822
|
const entityState = currentState.comments_by_entity_id[entityId];
|
|
4759
4823
|
if (!entityState?.comments?.length) return currentState;
|
|
@@ -4773,36 +4837,88 @@ function handleCommentUpdated(event) {
|
|
|
4773
4837
|
};
|
|
4774
4838
|
});
|
|
4775
4839
|
}
|
|
4776
|
-
function
|
|
4777
|
-
const { comment, reaction } =
|
|
4840
|
+
function handleCommentReactionAdded(payload, fromWs) {
|
|
4841
|
+
const { comment, reaction } = payload;
|
|
4778
4842
|
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
4843
|
+
const isOwnReaction = reaction.user.id === connectedUser?.id;
|
|
4844
|
+
if (!shouldUpdateState({
|
|
4845
|
+
stateUpdateQueueId: getStateUpdateQueueId(
|
|
4846
|
+
payload,
|
|
4847
|
+
"comment-reaction-created"
|
|
4848
|
+
),
|
|
4849
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
4850
|
+
watch: this.currentState.watch,
|
|
4851
|
+
fromWs,
|
|
4852
|
+
isTriggeredByConnectedUser: isOwnReaction
|
|
4853
|
+
})) {
|
|
4854
|
+
return;
|
|
4855
|
+
}
|
|
4779
4856
|
this.state.next((currentState) => {
|
|
4780
|
-
const forId = comment.parent_id ?? comment.object_id;
|
|
4781
|
-
const entityState = currentState.comments_by_entity_id[forId];
|
|
4782
4857
|
const commentIndex = this.getCommentIndex(comment, currentState);
|
|
4783
4858
|
if (commentIndex === -1) return currentState;
|
|
4859
|
+
const forId = comment.parent_id ?? comment.object_id;
|
|
4860
|
+
const entityState = currentState.comments_by_entity_id[forId];
|
|
4784
4861
|
const newComments = entityState?.comments?.concat([]) ?? [];
|
|
4785
|
-
|
|
4786
|
-
|
|
4787
|
-
|
|
4862
|
+
let ownReactions = newComments[commentIndex].own_reactions;
|
|
4863
|
+
if (isOwnReaction) {
|
|
4864
|
+
ownReactions = ownReactions.concat(reaction) ?? [reaction];
|
|
4865
|
+
}
|
|
4866
|
+
newComments[commentIndex] = {
|
|
4788
4867
|
...newComments[commentIndex],
|
|
4789
|
-
|
|
4868
|
+
reaction_count: comment.reaction_count ?? 0,
|
|
4790
4869
|
// TODO: FIXME this should be handled by the backend
|
|
4791
|
-
latest_reactions:
|
|
4792
|
-
reaction_groups:
|
|
4793
|
-
|
|
4794
|
-
|
|
4795
|
-
|
|
4796
|
-
|
|
4797
|
-
|
|
4798
|
-
|
|
4799
|
-
|
|
4800
|
-
|
|
4801
|
-
|
|
4802
|
-
|
|
4803
|
-
);
|
|
4870
|
+
latest_reactions: comment.latest_reactions ?? [],
|
|
4871
|
+
reaction_groups: comment.reaction_groups ?? {},
|
|
4872
|
+
own_reactions: ownReactions
|
|
4873
|
+
};
|
|
4874
|
+
return {
|
|
4875
|
+
...currentState,
|
|
4876
|
+
comments_by_entity_id: {
|
|
4877
|
+
...currentState.comments_by_entity_id,
|
|
4878
|
+
[forId]: {
|
|
4879
|
+
...entityState,
|
|
4880
|
+
comments: newComments
|
|
4881
|
+
}
|
|
4804
4882
|
}
|
|
4883
|
+
};
|
|
4884
|
+
});
|
|
4885
|
+
}
|
|
4886
|
+
function handleCommentReactionDeleted(payload, fromWs) {
|
|
4887
|
+
const { comment, reaction } = payload;
|
|
4888
|
+
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
4889
|
+
const isOwnReaction = reaction.user.id === connectedUser?.id;
|
|
4890
|
+
if (!shouldUpdateState({
|
|
4891
|
+
stateUpdateQueueId: getStateUpdateQueueId(
|
|
4892
|
+
payload,
|
|
4893
|
+
"comment-reaction-deleted"
|
|
4894
|
+
),
|
|
4895
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
4896
|
+
watch: this.currentState.watch,
|
|
4897
|
+
fromWs,
|
|
4898
|
+
isTriggeredByConnectedUser: isOwnReaction
|
|
4899
|
+
})) {
|
|
4900
|
+
return;
|
|
4901
|
+
}
|
|
4902
|
+
this.state.next((currentState) => {
|
|
4903
|
+
const commentIndex = this.getCommentIndex(comment, currentState);
|
|
4904
|
+
if (commentIndex === -1) return currentState;
|
|
4905
|
+
const forId = comment.parent_id ?? comment.object_id;
|
|
4906
|
+
const entityState = currentState.comments_by_entity_id[forId];
|
|
4907
|
+
const newComments = entityState?.comments?.concat([]) ?? [];
|
|
4908
|
+
let ownReactions = newComments[commentIndex].own_reactions;
|
|
4909
|
+
if (isOwnReaction) {
|
|
4910
|
+
ownReactions = ownReactions.filter(
|
|
4911
|
+
(r) => r.type !== reaction.type
|
|
4912
|
+
);
|
|
4805
4913
|
}
|
|
4914
|
+
newComments[commentIndex] = {
|
|
4915
|
+
...newComments[commentIndex],
|
|
4916
|
+
reaction_count: comment.reaction_count ?? 0,
|
|
4917
|
+
// TODO: FIXME this should be handled by the backend
|
|
4918
|
+
latest_reactions: comment.latest_reactions ?? [],
|
|
4919
|
+
reaction_groups: comment.reaction_groups ?? {},
|
|
4920
|
+
own_reactions: ownReactions
|
|
4921
|
+
};
|
|
4806
4922
|
return {
|
|
4807
4923
|
...currentState,
|
|
4808
4924
|
comments_by_entity_id: {
|
|
@@ -5219,19 +5335,31 @@ const updatePinnedActivityInState = (event, pinnedActivities) => updateEntityInA
|
|
|
5219
5335
|
};
|
|
5220
5336
|
}
|
|
5221
5337
|
});
|
|
5222
|
-
function handleActivityUpdated(
|
|
5338
|
+
function handleActivityUpdated(payload, fromWs) {
|
|
5339
|
+
if (!shouldUpdateState({
|
|
5340
|
+
stateUpdateQueueId: getStateUpdateQueueId(payload, "activity-updated"),
|
|
5341
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
5342
|
+
watch: this.currentState.watch,
|
|
5343
|
+
fromWs,
|
|
5344
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5345
|
+
this,
|
|
5346
|
+
payload
|
|
5347
|
+
)
|
|
5348
|
+
})) {
|
|
5349
|
+
return;
|
|
5350
|
+
}
|
|
5223
5351
|
const {
|
|
5224
5352
|
activities: currentActivities,
|
|
5225
5353
|
pinned_activities: currentPinnedActivities
|
|
5226
5354
|
} = this.currentState;
|
|
5227
5355
|
const [result1, result2] = [
|
|
5228
|
-
updateActivityInState(
|
|
5229
|
-
updatePinnedActivityInState(
|
|
5356
|
+
this.hasActivity(payload.activity.id) ? updateActivityInState(payload, currentActivities) : void 0,
|
|
5357
|
+
updatePinnedActivityInState(payload, currentPinnedActivities)
|
|
5230
5358
|
];
|
|
5231
|
-
if (result1
|
|
5232
|
-
this.client.hydratePollCache([
|
|
5359
|
+
if (result1?.changed || result2.changed) {
|
|
5360
|
+
this.client.hydratePollCache([payload.activity]);
|
|
5233
5361
|
this.state.partialNext({
|
|
5234
|
-
activities: result1.entities,
|
|
5362
|
+
activities: result1?.changed ? result1.entities : currentActivities,
|
|
5235
5363
|
pinned_activities: result2.entities
|
|
5236
5364
|
});
|
|
5237
5365
|
}
|
|
@@ -5515,8 +5643,8 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
5515
5643
|
"feeds.follow.created": handleFollowCreated.bind(this),
|
|
5516
5644
|
"feeds.follow.deleted": handleFollowDeleted.bind(this),
|
|
5517
5645
|
"feeds.follow.updated": handleFollowUpdated.bind(this),
|
|
5518
|
-
"feeds.comment.reaction.added":
|
|
5519
|
-
"feeds.comment.reaction.deleted":
|
|
5646
|
+
"feeds.comment.reaction.added": handleCommentReactionAdded.bind(this),
|
|
5647
|
+
"feeds.comment.reaction.deleted": handleCommentReactionDeleted.bind(this),
|
|
5520
5648
|
"feeds.comment.reaction.updated": _Feed.noop,
|
|
5521
5649
|
"feeds.feed_member.added": handleFeedMemberAdded.bind(this),
|
|
5522
5650
|
"feeds.feed_member.removed": handleFeedMemberRemoved.bind(this),
|
|
@@ -6032,6 +6160,34 @@ var UnhandledErrorType = /* @__PURE__ */ ((UnhandledErrorType2) => {
|
|
|
6032
6160
|
UnhandledErrorType2["ReconnectionReconciliation"] = "reconnection-reconciliation";
|
|
6033
6161
|
return UnhandledErrorType2;
|
|
6034
6162
|
})(UnhandledErrorType || {});
|
|
6163
|
+
function updateCommentCount({
|
|
6164
|
+
activity,
|
|
6165
|
+
comment,
|
|
6166
|
+
replyCountUpdater
|
|
6167
|
+
}) {
|
|
6168
|
+
const parentActivityId = comment.object_id;
|
|
6169
|
+
if (comment?.parent_id) {
|
|
6170
|
+
const grandparentCommentId = this.currentState.comments_by_entity_id[comment?.parent_id ?? ""]?.entity_parent_id;
|
|
6171
|
+
const idToUpdate = grandparentCommentId ?? parentActivityId;
|
|
6172
|
+
const commentToUpdate = this.currentState.comments_by_entity_id[idToUpdate]?.comments?.find((c) => c.id === comment.parent_id);
|
|
6173
|
+
if (commentToUpdate) {
|
|
6174
|
+
handleCommentUpdated.bind(this)(
|
|
6175
|
+
{
|
|
6176
|
+
comment: {
|
|
6177
|
+
...commentToUpdate,
|
|
6178
|
+
reply_count: replyCountUpdater(commentToUpdate.reply_count)
|
|
6179
|
+
}
|
|
6180
|
+
},
|
|
6181
|
+
false
|
|
6182
|
+
);
|
|
6183
|
+
}
|
|
6184
|
+
}
|
|
6185
|
+
if (this.hasActivity(activity.id)) {
|
|
6186
|
+
handleActivityUpdated.bind(this)({
|
|
6187
|
+
activity
|
|
6188
|
+
}, false);
|
|
6189
|
+
}
|
|
6190
|
+
}
|
|
6035
6191
|
class FeedsClient extends FeedsApi {
|
|
6036
6192
|
constructor(apiKey, options) {
|
|
6037
6193
|
const tokenManager = new TokenManager();
|
|
@@ -6119,6 +6275,57 @@ class FeedsClient extends FeedsApi {
|
|
|
6119
6275
|
upload_sizes: JSON.stringify(request.upload_sizes)
|
|
6120
6276
|
});
|
|
6121
6277
|
};
|
|
6278
|
+
this.updateActivity = async (request) => {
|
|
6279
|
+
const response = await super.updateActivity(request);
|
|
6280
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6281
|
+
handleActivityUpdated.bind(feed)(response, false);
|
|
6282
|
+
}
|
|
6283
|
+
return response;
|
|
6284
|
+
};
|
|
6285
|
+
this.addComment = async (request) => {
|
|
6286
|
+
const response = await super.addComment(request);
|
|
6287
|
+
const { comment } = response;
|
|
6288
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6289
|
+
handleCommentAdded.bind(feed)(response, false);
|
|
6290
|
+
const parentActivityId = comment.object_id;
|
|
6291
|
+
if (feed.hasActivity(parentActivityId)) {
|
|
6292
|
+
const activityToUpdate = feed.currentState.activities?.find(
|
|
6293
|
+
(activity) => activity.id === parentActivityId
|
|
6294
|
+
);
|
|
6295
|
+
if (activityToUpdate) {
|
|
6296
|
+
updateCommentCount.bind(feed)({
|
|
6297
|
+
activity: {
|
|
6298
|
+
...activityToUpdate,
|
|
6299
|
+
comment_count: activityToUpdate.comment_count + 1
|
|
6300
|
+
},
|
|
6301
|
+
comment,
|
|
6302
|
+
replyCountUpdater: (prevCount) => prevCount + 1
|
|
6303
|
+
});
|
|
6304
|
+
}
|
|
6305
|
+
}
|
|
6306
|
+
}
|
|
6307
|
+
return response;
|
|
6308
|
+
};
|
|
6309
|
+
this.updateComment = async (request) => {
|
|
6310
|
+
const response = await super.updateComment(request);
|
|
6311
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6312
|
+
handleCommentUpdated.bind(feed)(response, false);
|
|
6313
|
+
}
|
|
6314
|
+
return response;
|
|
6315
|
+
};
|
|
6316
|
+
this.deleteComment = async (request) => {
|
|
6317
|
+
const response = await super.deleteComment(request);
|
|
6318
|
+
const { activity, comment } = response;
|
|
6319
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6320
|
+
handleCommentDeleted.bind(feed)({ comment }, false);
|
|
6321
|
+
updateCommentCount.bind(feed)({
|
|
6322
|
+
activity,
|
|
6323
|
+
comment,
|
|
6324
|
+
replyCountUpdater: (prevCount) => prevCount - 1
|
|
6325
|
+
});
|
|
6326
|
+
}
|
|
6327
|
+
return response;
|
|
6328
|
+
};
|
|
6122
6329
|
this.addReaction = async (request) => {
|
|
6123
6330
|
const response = await super.addReaction(request);
|
|
6124
6331
|
for (const feed of Object.values(this.activeFeeds)) {
|
|
@@ -6133,6 +6340,20 @@ class FeedsClient extends FeedsApi {
|
|
|
6133
6340
|
}
|
|
6134
6341
|
return response;
|
|
6135
6342
|
};
|
|
6343
|
+
this.addCommentReaction = async (request) => {
|
|
6344
|
+
const response = await super.addCommentReaction(request);
|
|
6345
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6346
|
+
handleCommentReactionAdded.bind(feed)(response, false);
|
|
6347
|
+
}
|
|
6348
|
+
return response;
|
|
6349
|
+
};
|
|
6350
|
+
this.deleteCommentReaction = async (request) => {
|
|
6351
|
+
const response = await super.deleteCommentReaction(request);
|
|
6352
|
+
for (const feed of Object.values(this.activeFeeds)) {
|
|
6353
|
+
handleCommentReactionDeleted.bind(feed)(response, false);
|
|
6354
|
+
}
|
|
6355
|
+
return response;
|
|
6356
|
+
};
|
|
6136
6357
|
this.queryPollAnswers = async (request) => {
|
|
6137
6358
|
const filter = request.filter ?? {};
|
|
6138
6359
|
const queryPollAnswersFilter = {
|
|
@@ -6478,6 +6699,7 @@ exports.StreamPoll = StreamPoll;
|
|
|
6478
6699
|
exports.checkHasAnotherPage = checkHasAnotherPage;
|
|
6479
6700
|
exports.configureLoggers = configureLoggers;
|
|
6480
6701
|
exports.debounce = debounce;
|
|
6702
|
+
exports.ensureExhausted = ensureExhausted;
|
|
6481
6703
|
exports.getLogger = getLogger;
|
|
6482
6704
|
exports.getStateUpdateQueueId = getStateUpdateQueueId;
|
|
6483
6705
|
exports.isCommentResponse = isCommentResponse;
|
|
@@ -6489,4 +6711,4 @@ exports.isVoteAnswer = isVoteAnswer;
|
|
|
6489
6711
|
exports.shouldUpdateState = shouldUpdateState;
|
|
6490
6712
|
exports.uniqueArrayMerge = uniqueArrayMerge;
|
|
6491
6713
|
exports.updateEntityInArray = updateEntityInArray;
|
|
6492
|
-
//# sourceMappingURL=index-
|
|
6714
|
+
//# sourceMappingURL=index-C49kZoN7.js.map
|