@stream-io/feeds-client 0.2.0 → 0.2.1
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 +8 -0
- package/dist/index-react-bindings.browser.cjs +365 -207
- package/dist/index-react-bindings.browser.cjs.map +1 -1
- package/dist/index-react-bindings.browser.js +365 -207
- package/dist/index-react-bindings.browser.js.map +1 -1
- package/dist/index-react-bindings.node.cjs +365 -207
- package/dist/index-react-bindings.node.cjs.map +1 -1
- package/dist/index-react-bindings.node.js +365 -207
- package/dist/index-react-bindings.node.js.map +1 -1
- package/dist/index.browser.cjs +366 -207
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +366 -208
- package/dist/index.browser.js.map +1 -1
- package/dist/index.node.cjs +366 -207
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +366 -208
- package/dist/index.node.js.map +1 -1
- package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +12 -3
- package/dist/src/feed/event-handlers/activity/handle-activity-pinned.d.ts +3 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +10 -6
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +10 -6
- package/dist/src/feed/event-handlers/activity/handle-activity-unpinned.d.ts +3 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +7 -3
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +10 -6
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +10 -6
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +10 -6
- package/dist/src/gen/models/index.d.ts +36 -1
- package/dist/src/test-utils/response-generators.d.ts +46 -1
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/update-entity-in-array.d.ts +27 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/feed/event-handlers/activity/activity-reaction-utils.test.ts +108 -96
- package/src/feed/event-handlers/activity/activity-utils.test.ts +84 -122
- package/src/feed/event-handlers/activity/handle-activity-deleted.ts +43 -10
- package/src/feed/event-handlers/activity/handle-activity-pinned.test.ts +60 -0
- package/src/feed/event-handlers/activity/handle-activity-pinned.ts +30 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.test.ts +157 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +82 -40
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.test.ts +200 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +89 -51
- package/src/feed/event-handlers/activity/handle-activity-unpinned.test.ts +94 -0
- package/src/feed/event-handlers/activity/handle-activity-unpinned.ts +30 -0
- package/src/feed/event-handlers/activity/handle-activity-updated.test.ts +115 -0
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +73 -35
- package/src/feed/event-handlers/bookmark/bookmark-utils.test.ts +121 -109
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.test.ts +178 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +82 -39
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.test.ts +188 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +86 -48
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.test.ts +196 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +83 -44
- package/src/gen/model-decoders/decoders.ts +13 -0
- package/src/gen/models/index.ts +73 -2
- package/src/gen/moderation/ModerationApi.ts +1 -0
- package/src/test-utils/response-generators.ts +260 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/update-entity-in-array.ts +51 -0
package/dist/index.browser.js
CHANGED
|
@@ -338,6 +338,7 @@ decoders.Channel = (input) => {
|
|
|
338
338
|
updated_at: { type: 'DatetimeType', isSingle: true },
|
|
339
339
|
deleted_at: { type: 'DatetimeType', isSingle: true },
|
|
340
340
|
last_message_at: { type: 'DatetimeType', isSingle: true },
|
|
341
|
+
message_count_updated_at: { type: 'DatetimeType', isSingle: true },
|
|
341
342
|
active_live_locations: { type: 'SharedLocation', isSingle: false },
|
|
342
343
|
invites: { type: 'ChannelMember', isSingle: false },
|
|
343
344
|
members: { type: 'ChannelMember', isSingle: false },
|
|
@@ -615,6 +616,7 @@ decoders.FeedMemberResponse = (input) => {
|
|
|
615
616
|
user: { type: 'UserResponse', isSingle: true },
|
|
616
617
|
invite_accepted_at: { type: 'DatetimeType', isSingle: true },
|
|
617
618
|
invite_rejected_at: { type: 'DatetimeType', isSingle: true },
|
|
619
|
+
membership_level: { type: 'MembershipLevelResponse', isSingle: true },
|
|
618
620
|
};
|
|
619
621
|
return decode(typeMappings, input);
|
|
620
622
|
};
|
|
@@ -787,6 +789,13 @@ decoders.ListDevicesResponse = (input) => {
|
|
|
787
789
|
};
|
|
788
790
|
return decode(typeMappings, input);
|
|
789
791
|
};
|
|
792
|
+
decoders.MembershipLevelResponse = (input) => {
|
|
793
|
+
const typeMappings = {
|
|
794
|
+
created_at: { type: 'DatetimeType', isSingle: true },
|
|
795
|
+
updated_at: { type: 'DatetimeType', isSingle: true },
|
|
796
|
+
};
|
|
797
|
+
return decode(typeMappings, input);
|
|
798
|
+
};
|
|
790
799
|
decoders.Message = (input) => {
|
|
791
800
|
const typeMappings = {
|
|
792
801
|
created_at: { type: 'DatetimeType', isSingle: true },
|
|
@@ -3818,6 +3827,7 @@ class ModerationApi {
|
|
|
3818
3827
|
block_list_config: request?.block_list_config,
|
|
3819
3828
|
bodyguard_config: request?.bodyguard_config,
|
|
3820
3829
|
google_vision_config: request?.google_vision_config,
|
|
3830
|
+
llm_config: request?.llm_config,
|
|
3821
3831
|
rule_builder_config: request?.rule_builder_config,
|
|
3822
3832
|
velocity_filter_config: request?.velocity_filter_config,
|
|
3823
3833
|
video_call_rule_config: request?.video_call_rule_config,
|
|
@@ -4301,6 +4311,23 @@ function getStateUpdateQueueId(data, prefix) {
|
|
|
4301
4311
|
throw new Error(`Cannot create state update queueId for data: ${JSON.stringify(data)}`);
|
|
4302
4312
|
}
|
|
4303
4313
|
|
|
4314
|
+
function updateEntityInArray({ matcher, updater, entities, }) {
|
|
4315
|
+
if (!entities || !entities.length) {
|
|
4316
|
+
return { changed: false, entities };
|
|
4317
|
+
}
|
|
4318
|
+
const index = entities.findIndex(matcher);
|
|
4319
|
+
if (index === -1) {
|
|
4320
|
+
return { changed: false, entities };
|
|
4321
|
+
}
|
|
4322
|
+
const newEntity = updater(entities[index]);
|
|
4323
|
+
if (newEntity === entities[index]) {
|
|
4324
|
+
return { changed: false, entities };
|
|
4325
|
+
}
|
|
4326
|
+
const updatedEntities = [...entities];
|
|
4327
|
+
updatedEntities[index] = newEntity;
|
|
4328
|
+
return { changed: true, entities: updatedEntities };
|
|
4329
|
+
}
|
|
4330
|
+
|
|
4304
4331
|
const updateStateFollowCreated = (follow, currentState, currentFeedId, connectedUserId) => {
|
|
4305
4332
|
// filter non-accepted follows (the way getOrCreate does by default)
|
|
4306
4333
|
if (follow.status !== 'accepted') {
|
|
@@ -4636,6 +4663,179 @@ function handleFeedMemberRemoved(event) {
|
|
|
4636
4663
|
});
|
|
4637
4664
|
}
|
|
4638
4665
|
|
|
4666
|
+
const sharedUpdateActivity$5 = ({ currentActivity, event, eventBelongsToCurrentUser, }) => {
|
|
4667
|
+
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
4668
|
+
if (eventBelongsToCurrentUser) {
|
|
4669
|
+
newOwnBookmarks = [...newOwnBookmarks, event.bookmark];
|
|
4670
|
+
}
|
|
4671
|
+
return {
|
|
4672
|
+
...event.bookmark.activity,
|
|
4673
|
+
own_bookmarks: newOwnBookmarks,
|
|
4674
|
+
own_reactions: currentActivity.own_reactions,
|
|
4675
|
+
};
|
|
4676
|
+
};
|
|
4677
|
+
const addBookmarkToActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4678
|
+
entities: activities,
|
|
4679
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
4680
|
+
updater: (matchedActivity) => sharedUpdateActivity$5({
|
|
4681
|
+
currentActivity: matchedActivity,
|
|
4682
|
+
event,
|
|
4683
|
+
eventBelongsToCurrentUser,
|
|
4684
|
+
}),
|
|
4685
|
+
});
|
|
4686
|
+
const addBookmarkToPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4687
|
+
entities: pinnedActivities,
|
|
4688
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id,
|
|
4689
|
+
updater: (matchedPinnedActivity) => {
|
|
4690
|
+
const newActivity = sharedUpdateActivity$5({
|
|
4691
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
4692
|
+
event,
|
|
4693
|
+
eventBelongsToCurrentUser,
|
|
4694
|
+
});
|
|
4695
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
4696
|
+
return matchedPinnedActivity;
|
|
4697
|
+
}
|
|
4698
|
+
return {
|
|
4699
|
+
...matchedPinnedActivity,
|
|
4700
|
+
activity: newActivity,
|
|
4701
|
+
};
|
|
4702
|
+
},
|
|
4703
|
+
});
|
|
4704
|
+
function handleBookmarkAdded(event) {
|
|
4705
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4706
|
+
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
4707
|
+
const eventBelongsToCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
4708
|
+
const [result1, result2] = [
|
|
4709
|
+
addBookmarkToActivities(event, currentActivities, eventBelongsToCurrentUser),
|
|
4710
|
+
addBookmarkToPinnedActivities(event, currentPinnedActivities, eventBelongsToCurrentUser),
|
|
4711
|
+
];
|
|
4712
|
+
if (result1.changed || result2.changed) {
|
|
4713
|
+
this.state.partialNext({
|
|
4714
|
+
activities: result1.entities,
|
|
4715
|
+
pinned_activities: result2.entities,
|
|
4716
|
+
});
|
|
4717
|
+
}
|
|
4718
|
+
}
|
|
4719
|
+
|
|
4720
|
+
// Helper function to check if two bookmarks are the same
|
|
4721
|
+
// A bookmark is identified by activity_id + folder_id + user_id
|
|
4722
|
+
const isSameBookmark = (bookmark1, bookmark2) => {
|
|
4723
|
+
return (bookmark1.user.id === bookmark2.user.id &&
|
|
4724
|
+
bookmark1.activity.id === bookmark2.activity.id &&
|
|
4725
|
+
bookmark1.folder?.id === bookmark2.folder?.id);
|
|
4726
|
+
};
|
|
4727
|
+
const sharedUpdateActivity$4 = ({ currentActivity, event, eventBelongsToCurrentUser, }) => {
|
|
4728
|
+
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
4729
|
+
if (eventBelongsToCurrentUser) {
|
|
4730
|
+
newOwnBookmarks = currentActivity.own_bookmarks.filter((bookmark) => !isSameBookmark(bookmark, event.bookmark));
|
|
4731
|
+
}
|
|
4732
|
+
return {
|
|
4733
|
+
...event.bookmark.activity,
|
|
4734
|
+
own_bookmarks: newOwnBookmarks,
|
|
4735
|
+
own_reactions: currentActivity.own_reactions,
|
|
4736
|
+
};
|
|
4737
|
+
};
|
|
4738
|
+
const removeBookmarkFromActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4739
|
+
entities: activities,
|
|
4740
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
4741
|
+
updater: (matchedActivity) => sharedUpdateActivity$4({
|
|
4742
|
+
currentActivity: matchedActivity,
|
|
4743
|
+
event,
|
|
4744
|
+
eventBelongsToCurrentUser,
|
|
4745
|
+
}),
|
|
4746
|
+
});
|
|
4747
|
+
const removeBookmarkFromPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4748
|
+
entities: pinnedActivities,
|
|
4749
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id,
|
|
4750
|
+
updater: (matchedPinnedActivity) => {
|
|
4751
|
+
const newActivity = sharedUpdateActivity$4({
|
|
4752
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
4753
|
+
event,
|
|
4754
|
+
eventBelongsToCurrentUser,
|
|
4755
|
+
});
|
|
4756
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
4757
|
+
return matchedPinnedActivity;
|
|
4758
|
+
}
|
|
4759
|
+
return {
|
|
4760
|
+
...matchedPinnedActivity,
|
|
4761
|
+
activity: newActivity,
|
|
4762
|
+
};
|
|
4763
|
+
},
|
|
4764
|
+
});
|
|
4765
|
+
function handleBookmarkDeleted(event) {
|
|
4766
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4767
|
+
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
4768
|
+
const eventBelongsToCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
4769
|
+
const [result1, result2] = [
|
|
4770
|
+
removeBookmarkFromActivities(event, currentActivities, eventBelongsToCurrentUser),
|
|
4771
|
+
removeBookmarkFromPinnedActivities(event, currentPinnedActivities, eventBelongsToCurrentUser),
|
|
4772
|
+
];
|
|
4773
|
+
if (result1.changed || result2.changed) {
|
|
4774
|
+
this.state.partialNext({
|
|
4775
|
+
activities: result1.entities,
|
|
4776
|
+
pinned_activities: result2.entities,
|
|
4777
|
+
});
|
|
4778
|
+
}
|
|
4779
|
+
}
|
|
4780
|
+
|
|
4781
|
+
const sharedUpdateActivity$3 = ({ currentActivity, event, eventBelongsToCurrentUser, }) => {
|
|
4782
|
+
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
4783
|
+
if (eventBelongsToCurrentUser) {
|
|
4784
|
+
const bookmarkIndex = newOwnBookmarks.findIndex((bookmark) => isSameBookmark(bookmark, event.bookmark));
|
|
4785
|
+
if (bookmarkIndex !== -1) {
|
|
4786
|
+
newOwnBookmarks = [...newOwnBookmarks];
|
|
4787
|
+
newOwnBookmarks[bookmarkIndex] = event.bookmark;
|
|
4788
|
+
}
|
|
4789
|
+
}
|
|
4790
|
+
return {
|
|
4791
|
+
...event.bookmark.activity,
|
|
4792
|
+
own_bookmarks: newOwnBookmarks,
|
|
4793
|
+
own_reactions: currentActivity.own_reactions,
|
|
4794
|
+
};
|
|
4795
|
+
};
|
|
4796
|
+
const updateBookmarkInActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4797
|
+
entities: activities,
|
|
4798
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
4799
|
+
updater: (matchedActivity) => sharedUpdateActivity$3({
|
|
4800
|
+
currentActivity: matchedActivity,
|
|
4801
|
+
event,
|
|
4802
|
+
eventBelongsToCurrentUser,
|
|
4803
|
+
}),
|
|
4804
|
+
});
|
|
4805
|
+
const updateBookmarkInPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4806
|
+
entities: pinnedActivities,
|
|
4807
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id,
|
|
4808
|
+
updater: (matchedPinnedActivity) => {
|
|
4809
|
+
const newActivity = sharedUpdateActivity$3({
|
|
4810
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
4811
|
+
event,
|
|
4812
|
+
eventBelongsToCurrentUser,
|
|
4813
|
+
});
|
|
4814
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
4815
|
+
return matchedPinnedActivity;
|
|
4816
|
+
}
|
|
4817
|
+
return {
|
|
4818
|
+
...matchedPinnedActivity,
|
|
4819
|
+
activity: newActivity,
|
|
4820
|
+
};
|
|
4821
|
+
},
|
|
4822
|
+
});
|
|
4823
|
+
function handleBookmarkUpdated(event) {
|
|
4824
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4825
|
+
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
4826
|
+
const eventBelongsToCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
4827
|
+
const [result1, result2] = [
|
|
4828
|
+
updateBookmarkInActivities(event, currentActivities, eventBelongsToCurrentUser),
|
|
4829
|
+
updateBookmarkInPinnedActivities(event, currentPinnedActivities, eventBelongsToCurrentUser),
|
|
4830
|
+
];
|
|
4831
|
+
if (result1.changed || result2.changed) {
|
|
4832
|
+
this.state.partialNext({
|
|
4833
|
+
activities: result1.entities,
|
|
4834
|
+
pinned_activities: result2.entities,
|
|
4835
|
+
});
|
|
4836
|
+
}
|
|
4837
|
+
}
|
|
4838
|
+
|
|
4639
4839
|
const addActivitiesToState = (newActivities, activities, position) => {
|
|
4640
4840
|
let result;
|
|
4641
4841
|
if (activities === undefined) {
|
|
@@ -4680,7 +4880,8 @@ function handleActivityAdded(event) {
|
|
|
4680
4880
|
}
|
|
4681
4881
|
|
|
4682
4882
|
const removeActivityFromState = (activityResponse, activities) => {
|
|
4683
|
-
const index = activities
|
|
4883
|
+
const index = activities?.findIndex((activity) => activity.id === activityResponse.id) ??
|
|
4884
|
+
-1;
|
|
4684
4885
|
if (index !== -1) {
|
|
4685
4886
|
const newActivities = [...activities];
|
|
4686
4887
|
newActivities.splice(index, 1);
|
|
@@ -4690,13 +4891,28 @@ const removeActivityFromState = (activityResponse, activities) => {
|
|
|
4690
4891
|
return { changed: false, activities };
|
|
4691
4892
|
}
|
|
4692
4893
|
};
|
|
4894
|
+
const removePinnedActivityFromState = (activityResponse, pinnedActivities) => {
|
|
4895
|
+
const index = pinnedActivities?.findIndex((pinnedActivity) => pinnedActivity.activity.id === activityResponse.id) ?? -1;
|
|
4896
|
+
if (index !== -1) {
|
|
4897
|
+
const newActivities = [...pinnedActivities];
|
|
4898
|
+
newActivities.splice(index, 1);
|
|
4899
|
+
return { changed: true, activities: newActivities };
|
|
4900
|
+
}
|
|
4901
|
+
else {
|
|
4902
|
+
return { changed: false, pinned_activities: pinnedActivities };
|
|
4903
|
+
}
|
|
4904
|
+
};
|
|
4693
4905
|
function handleActivityDeleted(event) {
|
|
4694
|
-
const currentActivities = this.currentState
|
|
4695
|
-
|
|
4696
|
-
|
|
4697
|
-
|
|
4698
|
-
|
|
4699
|
-
|
|
4906
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4907
|
+
const [result1, result2] = [
|
|
4908
|
+
removeActivityFromState(event.activity, currentActivities),
|
|
4909
|
+
removePinnedActivityFromState(event.activity, currentPinnedActivities),
|
|
4910
|
+
];
|
|
4911
|
+
if (result1.changed || result2.changed) {
|
|
4912
|
+
this.state.partialNext({
|
|
4913
|
+
activities: result1.activities,
|
|
4914
|
+
pinned_activities: result2.pinned_activities,
|
|
4915
|
+
});
|
|
4700
4916
|
}
|
|
4701
4917
|
}
|
|
4702
4918
|
|
|
@@ -4710,221 +4926,163 @@ function handleActivityRemovedFromFeed(event) {
|
|
|
4710
4926
|
}
|
|
4711
4927
|
}
|
|
4712
4928
|
|
|
4713
|
-
const
|
|
4714
|
-
|
|
4715
|
-
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4719
|
-
|
|
4720
|
-
|
|
4721
|
-
|
|
4722
|
-
|
|
4723
|
-
|
|
4724
|
-
|
|
4725
|
-
|
|
4726
|
-
|
|
4727
|
-
|
|
4728
|
-
|
|
4929
|
+
const sharedUpdateActivity$2 = ({ currentActivity, event, }) => {
|
|
4930
|
+
return {
|
|
4931
|
+
...event.activity,
|
|
4932
|
+
own_reactions: currentActivity.own_reactions,
|
|
4933
|
+
own_bookmarks: currentActivity.own_bookmarks,
|
|
4934
|
+
};
|
|
4935
|
+
};
|
|
4936
|
+
const updateActivityInState = (event, activities) => updateEntityInArray({
|
|
4937
|
+
entities: activities,
|
|
4938
|
+
matcher: (activity) => activity.id === event.activity.id,
|
|
4939
|
+
updater: (matchedActivity) => sharedUpdateActivity$2({
|
|
4940
|
+
currentActivity: matchedActivity,
|
|
4941
|
+
event,
|
|
4942
|
+
}),
|
|
4943
|
+
});
|
|
4944
|
+
const updatePinnedActivityInState = (event, pinnedActivities) => updateEntityInArray({
|
|
4945
|
+
entities: pinnedActivities,
|
|
4946
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.activity.id,
|
|
4947
|
+
updater: (matchedPinnedActivity) => {
|
|
4948
|
+
const newActivity = sharedUpdateActivity$2({
|
|
4949
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
4950
|
+
event,
|
|
4951
|
+
});
|
|
4952
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
4953
|
+
return matchedPinnedActivity;
|
|
4729
4954
|
}
|
|
4730
|
-
return {
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
}
|
|
4735
|
-
};
|
|
4955
|
+
return {
|
|
4956
|
+
...matchedPinnedActivity,
|
|
4957
|
+
activity: newActivity,
|
|
4958
|
+
};
|
|
4959
|
+
},
|
|
4960
|
+
});
|
|
4736
4961
|
function handleActivityUpdated(event) {
|
|
4737
|
-
const currentActivities = this.currentState
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4741
|
-
|
|
4742
|
-
|
|
4743
|
-
|
|
4962
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4963
|
+
const [result1, result2] = [
|
|
4964
|
+
updateActivityInState(event, currentActivities),
|
|
4965
|
+
updatePinnedActivityInState(event, currentPinnedActivities),
|
|
4966
|
+
];
|
|
4967
|
+
if (result1.changed || result2.changed) {
|
|
4968
|
+
this.client.hydratePollCache([event.activity]);
|
|
4969
|
+
this.state.partialNext({
|
|
4970
|
+
activities: result1.entities,
|
|
4971
|
+
pinned_activities: result2.entities,
|
|
4972
|
+
});
|
|
4744
4973
|
}
|
|
4745
4974
|
}
|
|
4746
4975
|
|
|
4747
|
-
|
|
4748
|
-
|
|
4749
|
-
|
|
4750
|
-
if (
|
|
4751
|
-
|
|
4976
|
+
// shared function to update the activity with the new reaction
|
|
4977
|
+
const sharedUpdateActivity$1 = ({ currentActivity, event, eventBelongsToCurrentUser, }) => {
|
|
4978
|
+
let newOwnReactions = currentActivity.own_reactions;
|
|
4979
|
+
if (eventBelongsToCurrentUser) {
|
|
4980
|
+
newOwnReactions = [...currentActivity.own_reactions, event.reaction];
|
|
4752
4981
|
}
|
|
4753
4982
|
return {
|
|
4754
|
-
...activity,
|
|
4755
|
-
own_reactions:
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4760
|
-
|
|
4761
|
-
|
|
4762
|
-
|
|
4763
|
-
|
|
4764
|
-
|
|
4765
|
-
|
|
4766
|
-
|
|
4767
|
-
|
|
4768
|
-
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4772
|
-
|
|
4983
|
+
...event.activity,
|
|
4984
|
+
own_reactions: newOwnReactions,
|
|
4985
|
+
own_bookmarks: currentActivity.own_bookmarks,
|
|
4986
|
+
};
|
|
4987
|
+
};
|
|
4988
|
+
const addReactionToActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4989
|
+
entities: activities,
|
|
4990
|
+
matcher: (activity) => activity.id === event.activity.id,
|
|
4991
|
+
updater: (matchedActivity) => sharedUpdateActivity$1({
|
|
4992
|
+
currentActivity: matchedActivity,
|
|
4993
|
+
event,
|
|
4994
|
+
eventBelongsToCurrentUser,
|
|
4995
|
+
}),
|
|
4996
|
+
});
|
|
4997
|
+
const addReactionToPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
4998
|
+
entities: pinnedActivities,
|
|
4999
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.activity.id,
|
|
5000
|
+
updater: (matchedPinnedActivity) => {
|
|
5001
|
+
const newActivity = sharedUpdateActivity$1({
|
|
5002
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
5003
|
+
event,
|
|
5004
|
+
eventBelongsToCurrentUser,
|
|
5005
|
+
});
|
|
5006
|
+
// this should never happen, but just in case
|
|
5007
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
5008
|
+
return matchedPinnedActivity;
|
|
5009
|
+
}
|
|
5010
|
+
return {
|
|
5011
|
+
...matchedPinnedActivity,
|
|
5012
|
+
activity: newActivity,
|
|
5013
|
+
};
|
|
5014
|
+
},
|
|
5015
|
+
});
|
|
4773
5016
|
function handleActivityReactionAdded(event) {
|
|
4774
|
-
const currentActivities = this.currentState
|
|
4775
|
-
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
4776
|
-
const isCurrentUser = Boolean(connectedUser && event.reaction.user.id === connectedUser.id);
|
|
4777
|
-
const result = addReactionToActivities(event, currentActivities, isCurrentUser);
|
|
4778
|
-
if (result.changed) {
|
|
4779
|
-
this.state.partialNext({ activities: result.activities });
|
|
4780
|
-
}
|
|
4781
|
-
}
|
|
4782
|
-
|
|
4783
|
-
const removeReactionFromActivity = (event, activity, isCurrentUser) => {
|
|
4784
|
-
// Update own_reactions if the reaction is from the current user
|
|
4785
|
-
const ownReactions = isCurrentUser
|
|
4786
|
-
? (activity.own_reactions || []).filter((r) => !(r.type === event.reaction.type &&
|
|
4787
|
-
r.user.id === event.reaction.user.id))
|
|
4788
|
-
: activity.own_reactions;
|
|
4789
|
-
return {
|
|
4790
|
-
...activity,
|
|
4791
|
-
own_reactions: ownReactions,
|
|
4792
|
-
latest_reactions: event.activity.latest_reactions,
|
|
4793
|
-
reaction_groups: event.activity.reaction_groups,
|
|
4794
|
-
changed: true,
|
|
4795
|
-
};
|
|
4796
|
-
};
|
|
4797
|
-
const removeReactionFromActivities = (event, activities, isCurrentUser) => {
|
|
4798
|
-
if (!activities) {
|
|
4799
|
-
return { changed: false, activities: [] };
|
|
4800
|
-
}
|
|
4801
|
-
const activityIndex = activities.findIndex((a) => a.id === event.activity.id);
|
|
4802
|
-
if (activityIndex === -1) {
|
|
4803
|
-
return { changed: false, activities };
|
|
4804
|
-
}
|
|
4805
|
-
const activity = activities[activityIndex];
|
|
4806
|
-
const updatedActivity = removeReactionFromActivity(event, activity, isCurrentUser);
|
|
4807
|
-
return updateActivityInState(updatedActivity, activities, true);
|
|
4808
|
-
};
|
|
4809
|
-
function handleActivityReactionDeleted(event) {
|
|
4810
|
-
const currentActivities = this.currentState.activities;
|
|
5017
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
4811
5018
|
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
4812
|
-
const
|
|
4813
|
-
|
|
4814
|
-
|
|
4815
|
-
|
|
4816
|
-
|
|
4817
|
-
|
|
4818
|
-
|
|
4819
|
-
|
|
4820
|
-
|
|
4821
|
-
|
|
4822
|
-
|
|
4823
|
-
ownBookmarks.push(event.bookmark);
|
|
4824
|
-
}
|
|
4825
|
-
return {
|
|
4826
|
-
...activity,
|
|
4827
|
-
own_bookmarks: ownBookmarks,
|
|
4828
|
-
changed: true,
|
|
4829
|
-
};
|
|
4830
|
-
};
|
|
4831
|
-
const addBookmarkToActivities = (event, activities, isCurrentUser) => {
|
|
4832
|
-
if (!activities) {
|
|
4833
|
-
return { changed: false, activities: [] };
|
|
4834
|
-
}
|
|
4835
|
-
const activityIndex = activities.findIndex((a) => a.id === event.bookmark.activity.id);
|
|
4836
|
-
if (activityIndex === -1) {
|
|
4837
|
-
return { changed: false, activities };
|
|
4838
|
-
}
|
|
4839
|
-
const activity = activities[activityIndex];
|
|
4840
|
-
const updatedActivity = addBookmarkToActivity(event, activity, isCurrentUser);
|
|
4841
|
-
return updateActivityInState(updatedActivity, activities, true);
|
|
4842
|
-
};
|
|
4843
|
-
function handleBookmarkAdded(event) {
|
|
4844
|
-
const currentActivities = this.currentState.activities;
|
|
4845
|
-
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
4846
|
-
const isCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
4847
|
-
const result = addBookmarkToActivities(event, currentActivities, isCurrentUser);
|
|
4848
|
-
if (result.changed) {
|
|
4849
|
-
this.state.partialNext({ activities: result.activities });
|
|
5019
|
+
const eventBelongsToCurrentUser = typeof connectedUser !== 'undefined' &&
|
|
5020
|
+
event.reaction.user.id === connectedUser.id;
|
|
5021
|
+
const [result1, result2] = [
|
|
5022
|
+
addReactionToActivities(event, currentActivities, eventBelongsToCurrentUser),
|
|
5023
|
+
addReactionToPinnedActivities(event, currentPinnedActivities, eventBelongsToCurrentUser),
|
|
5024
|
+
];
|
|
5025
|
+
if (result1.changed || result2.changed) {
|
|
5026
|
+
this.state.partialNext({
|
|
5027
|
+
activities: result1.entities,
|
|
5028
|
+
pinned_activities: result2.entities,
|
|
5029
|
+
});
|
|
4850
5030
|
}
|
|
4851
5031
|
}
|
|
4852
5032
|
|
|
4853
|
-
|
|
4854
|
-
|
|
4855
|
-
|
|
4856
|
-
|
|
4857
|
-
|
|
4858
|
-
bookmark1.folder?.id === bookmark2.folder?.id);
|
|
4859
|
-
};
|
|
4860
|
-
const removeBookmarkFromActivities = (event, activities, isCurrentUser) => {
|
|
4861
|
-
if (!activities) {
|
|
4862
|
-
return { changed: false, activities: [] };
|
|
5033
|
+
const sharedUpdateActivity = ({ currentActivity, event, eventBelongsToCurrentUser, }) => {
|
|
5034
|
+
let newOwnReactions = currentActivity.own_reactions;
|
|
5035
|
+
if (eventBelongsToCurrentUser) {
|
|
5036
|
+
newOwnReactions = currentActivity.own_reactions.filter((reaction) => !(reaction.type === event.reaction.type &&
|
|
5037
|
+
reaction.user.id === event.reaction.user.id));
|
|
4863
5038
|
}
|
|
4864
|
-
const activityIndex = activities.findIndex((a) => a.id === event.bookmark.activity.id);
|
|
4865
|
-
if (activityIndex === -1) {
|
|
4866
|
-
return { changed: false, activities };
|
|
4867
|
-
}
|
|
4868
|
-
const activity = activities[activityIndex];
|
|
4869
|
-
const updatedActivity = removeBookmarkFromActivity(event, activity, isCurrentUser);
|
|
4870
|
-
return updateActivityInState(updatedActivity, activities, true);
|
|
4871
|
-
};
|
|
4872
|
-
const removeBookmarkFromActivity = (event, activity, isCurrentUser) => {
|
|
4873
|
-
// Update own_bookmarks if the bookmark is from the current user
|
|
4874
|
-
const ownBookmarks = isCurrentUser
|
|
4875
|
-
? (activity.own_bookmarks || []).filter((bookmark) => !isSameBookmark(bookmark, event.bookmark))
|
|
4876
|
-
: activity.own_bookmarks;
|
|
4877
5039
|
return {
|
|
4878
|
-
...activity,
|
|
4879
|
-
|
|
4880
|
-
|
|
4881
|
-
};
|
|
4882
|
-
};
|
|
4883
|
-
|
|
4884
|
-
|
|
4885
|
-
|
|
4886
|
-
|
|
4887
|
-
|
|
4888
|
-
|
|
4889
|
-
|
|
4890
|
-
}
|
|
4891
|
-
}
|
|
4892
|
-
|
|
4893
|
-
|
|
4894
|
-
|
|
4895
|
-
|
|
4896
|
-
|
|
4897
|
-
|
|
4898
|
-
|
|
4899
|
-
|
|
4900
|
-
|
|
5040
|
+
...event.activity,
|
|
5041
|
+
own_reactions: newOwnReactions,
|
|
5042
|
+
own_bookmarks: currentActivity.own_bookmarks,
|
|
5043
|
+
};
|
|
5044
|
+
};
|
|
5045
|
+
const removeReactionFromActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5046
|
+
entities: activities,
|
|
5047
|
+
matcher: (activity) => activity.id === event.activity.id,
|
|
5048
|
+
updater: (matchedActivity) => sharedUpdateActivity({
|
|
5049
|
+
currentActivity: matchedActivity,
|
|
5050
|
+
event,
|
|
5051
|
+
eventBelongsToCurrentUser,
|
|
5052
|
+
}),
|
|
5053
|
+
});
|
|
5054
|
+
const removeReactionFromPinnedActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5055
|
+
entities: activities,
|
|
5056
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.activity.id,
|
|
5057
|
+
updater: (matchedPinnedActivity) => {
|
|
5058
|
+
const newActivity = sharedUpdateActivity({
|
|
5059
|
+
currentActivity: matchedPinnedActivity.activity,
|
|
5060
|
+
event,
|
|
5061
|
+
eventBelongsToCurrentUser,
|
|
5062
|
+
});
|
|
5063
|
+
if (newActivity === matchedPinnedActivity.activity) {
|
|
5064
|
+
return matchedPinnedActivity;
|
|
4901
5065
|
}
|
|
4902
|
-
|
|
4903
|
-
|
|
4904
|
-
|
|
4905
|
-
|
|
4906
|
-
|
|
4907
|
-
|
|
4908
|
-
|
|
4909
|
-
const
|
|
4910
|
-
|
|
4911
|
-
|
|
4912
|
-
|
|
4913
|
-
const
|
|
4914
|
-
|
|
4915
|
-
|
|
4916
|
-
|
|
4917
|
-
|
|
4918
|
-
|
|
4919
|
-
|
|
4920
|
-
|
|
4921
|
-
|
|
4922
|
-
const currentActivities = this.currentState.activities;
|
|
4923
|
-
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
4924
|
-
const isCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
4925
|
-
const result = updateBookmarkInActivities(event, currentActivities, isCurrentUser);
|
|
4926
|
-
if (result.changed) {
|
|
4927
|
-
this.state.partialNext({ activities: result.activities });
|
|
5066
|
+
return {
|
|
5067
|
+
...matchedPinnedActivity,
|
|
5068
|
+
activity: newActivity,
|
|
5069
|
+
};
|
|
5070
|
+
},
|
|
5071
|
+
});
|
|
5072
|
+
function handleActivityReactionDeleted(event) {
|
|
5073
|
+
const { activities: currentActivities, pinned_activities: currentPinnedActivities, } = this.currentState;
|
|
5074
|
+
const connectedUser = this.client.state.getLatestValue().connected_user;
|
|
5075
|
+
const eventBelongsToCurrentUser = typeof connectedUser !== 'undefined' &&
|
|
5076
|
+
event.reaction.user.id === connectedUser.id;
|
|
5077
|
+
const [result1, result2] = [
|
|
5078
|
+
removeReactionFromActivities(event, currentActivities, eventBelongsToCurrentUser),
|
|
5079
|
+
removeReactionFromPinnedActivities(event, currentPinnedActivities, eventBelongsToCurrentUser),
|
|
5080
|
+
];
|
|
5081
|
+
if (result1.changed || result2.changed) {
|
|
5082
|
+
this.state.partialNext({
|
|
5083
|
+
activities: result1.entities,
|
|
5084
|
+
pinned_activities: result2.entities,
|
|
5085
|
+
});
|
|
4928
5086
|
}
|
|
4929
5087
|
}
|
|
4930
5088
|
|
|
@@ -6212,5 +6370,5 @@ class FeedSearchSource extends BaseSearchSource {
|
|
|
6212
6370
|
}
|
|
6213
6371
|
}
|
|
6214
6372
|
|
|
6215
|
-
export { ActivitySearchSource, BaseSearchSource, ChannelOwnCapability, Constants, Feed, FeedOwnCapability, FeedSearchSource, FeedsClient, MergedStateStore, SearchController, StateStore, StreamApiError, StreamPoll, UserSearchSource, checkHasAnotherPage, getStateUpdateQueueId, isCommentResponse, isFollowResponse, isImageFile, isPatch, isVideoFile, isVoteAnswer, shouldUpdateState, uniqueArrayMerge };
|
|
6373
|
+
export { ActivitySearchSource, BaseSearchSource, ChannelOwnCapability, Constants, Feed, FeedOwnCapability, FeedSearchSource, FeedsClient, MergedStateStore, SearchController, StateStore, StreamApiError, StreamPoll, UserSearchSource, checkHasAnotherPage, getStateUpdateQueueId, isCommentResponse, isFollowResponse, isImageFile, isPatch, isVideoFile, isVoteAnswer, shouldUpdateState, uniqueArrayMerge, updateEntityInArray };
|
|
6216
6374
|
//# sourceMappingURL=index.browser.js.map
|