@stream-io/feeds-client 0.3.51 → 1.1.0
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 +21 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +5 -19
- package/dist/cjs/react-bindings.js.map +1 -1
- package/dist/es/index.mjs +15 -14
- package/dist/es/index.mjs.map +1 -1
- package/dist/es/react-bindings.mjs +5 -19
- package/dist/es/react-bindings.mjs.map +1 -1
- package/dist/{feeds-client-B4zeBggL.js → feeds-client-C1c6lcS3.js} +705 -214
- package/dist/feeds-client-C1c6lcS3.js.map +1 -0
- package/dist/{feeds-client-DeAqnd1a.mjs → feeds-client-jtUTE4AC.mjs} +711 -220
- package/dist/feeds-client-jtUTE4AC.mjs.map +1 -0
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/types/activity-with-state-updates/activity-with-state-updates.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts +6 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.d.ts.map +1 -1
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts +6 -2
- package/dist/types/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.d.ts.map +1 -1
- package/dist/types/feed/activity-filter.d.ts +11 -0
- package/dist/types/feed/activity-filter.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-deleted.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-deleted.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts +5 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-feedback.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-pinned.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-pinned.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-unpinned.d.ts +3 -2
- package/dist/types/feed/event-handlers/activity/handle-activity-unpinned.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity/index.d.ts +3 -1
- package/dist/types/feed/event-handlers/activity/index.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/activity-updater.d.ts +1 -0
- package/dist/types/feed/event-handlers/activity-updater.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/add-aggregated-activities-to-state.d.ts +1 -1
- package/dist/types/feed/event-handlers/add-aggregated-activities-to-state.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +6 -5
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +6 -5
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +6 -5
- package/dist/types/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/comment/handle-comment-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/feed/handle-feed-deleted.d.ts +4 -0
- package/dist/types/feed/event-handlers/feed/handle-feed-deleted.d.ts.map +1 -0
- package/dist/types/feed/event-handlers/feed/handle-feed-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/feed/index.d.ts +1 -0
- package/dist/types/feed/event-handlers/feed/index.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -2
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-added.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -2
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -2
- package/dist/types/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/follow/handle-follow-created.d.ts +2 -2
- package/dist/types/feed/event-handlers/follow/handle-follow-created.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/follow/handle-follow-updated.d.ts.map +1 -1
- package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -2
- package/dist/types/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts.map +1 -1
- package/dist/types/feed/feed.d.ts +17 -12
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/apply-new-activity-to-active-feeds.d.ts +4 -0
- package/dist/types/feeds-client/apply-new-activity-to-active-feeds.d.ts.map +1 -0
- package/dist/types/feeds-client/feeds-client.d.ts +29 -8
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/gen/feeds/FeedsApi.d.ts +6 -4
- package/dist/types/gen/feeds/FeedsApi.d.ts.map +1 -1
- package/dist/types/gen/models/index.d.ts +40 -2
- package/dist/types/gen/models/index.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +15 -0
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils/state-update-queue.d.ts +11 -2
- package/dist/types/utils/state-update-queue.d.ts.map +1 -1
- package/dist/types/utils/unique-array-merge.d.ts +1 -1
- package/dist/types/utils/unique-array-merge.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/activity-with-state-updates/activity-with-state-updates.ts +8 -2
- package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivityRead.ts +6 -20
- package/src/bindings/react/hooks/feed-state-hooks/useIsAggregatedActivitySeen.ts +6 -20
- package/src/feed/activity-filter.ts +44 -0
- package/src/feed/event-handlers/activity/handle-activity-added.ts +22 -8
- package/src/feed/event-handlers/activity/handle-activity-deleted.ts +28 -2
- package/src/feed/event-handlers/activity/handle-activity-feedback.ts +17 -7
- package/src/feed/event-handlers/activity/handle-activity-pinned.ts +25 -3
- package/src/feed/event-handlers/activity/handle-activity-unpinned.ts +25 -2
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +5 -1
- package/src/feed/event-handlers/activity/index.ts +3 -1
- package/src/feed/event-handlers/add-aggregated-activities-to-state.ts +11 -2
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +20 -11
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +21 -11
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +24 -10
- package/src/feed/event-handlers/comment/handle-comment-updated.ts +11 -10
- package/src/feed/event-handlers/feed/handle-feed-deleted.ts +12 -0
- package/src/feed/event-handlers/feed/handle-feed-updated.ts +8 -0
- package/src/feed/event-handlers/feed/index.ts +1 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +25 -2
- package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +25 -2
- package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +25 -2
- package/src/feed/event-handlers/follow/handle-follow-created.ts +18 -1
- package/src/feed/event-handlers/follow/handle-follow-updated.ts +14 -0
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +68 -2
- package/src/feed/event-handlers/story-feeds/handle-story-feeds-updated.ts +1 -1
- package/src/feed/feed.ts +79 -26
- package/src/feeds-client/apply-new-activity-to-active-feeds.ts +9 -0
- package/src/feeds-client/feeds-client.ts +301 -28
- package/src/gen/feeds/FeedsApi.ts +79 -12
- package/src/gen/model-decoders/decoders.ts +7 -0
- package/src/gen/models/index.ts +66 -4
- package/src/index.ts +1 -0
- package/src/types.ts +17 -0
- package/src/utils/state-update-queue.ts +42 -28
- package/src/utils/unique-array-merge.ts +11 -3
- package/dist/feeds-client-B4zeBggL.js.map +0 -1
- package/dist/feeds-client-DeAqnd1a.mjs.map +0 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-marked.d.ts +0 -12
- package/dist/types/feed/event-handlers/activity/handle-activity-marked.d.ts.map +0 -1
- package/src/feed/event-handlers/activity/handle-activity-marked.ts +0 -68
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
const stateStore = require("@stream-io/state-store");
|
|
3
3
|
const loggerInternal = require("@stream-io/logger");
|
|
4
4
|
const axiosImport = require("axios");
|
|
5
|
+
const filter = require("@stream-io/filter");
|
|
5
6
|
function _interopNamespaceDefault(e) {
|
|
6
7
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
7
8
|
if (e) {
|
|
@@ -1140,6 +1141,12 @@ decoders.QueryBookmarksResponse = (input) => {
|
|
|
1140
1141
|
};
|
|
1141
1142
|
return decode(typeMappings, input);
|
|
1142
1143
|
};
|
|
1144
|
+
decoders.QueryCollectionsResponse = (input) => {
|
|
1145
|
+
const typeMappings = {
|
|
1146
|
+
collections: { type: "CollectionResponse", isSingle: false }
|
|
1147
|
+
};
|
|
1148
|
+
return decode(typeMappings, input);
|
|
1149
|
+
};
|
|
1143
1150
|
decoders.QueryCommentReactionsResponse = (input) => {
|
|
1144
1151
|
const typeMappings = {
|
|
1145
1152
|
reactions: { type: "FeedsReactionResponse", isSingle: false }
|
|
@@ -1714,6 +1721,21 @@ class FeedsApi {
|
|
|
1714
1721
|
decoders.DeleteActivitiesResponse?.(response.body);
|
|
1715
1722
|
return { ...response.body, metadata: response.metadata };
|
|
1716
1723
|
}
|
|
1724
|
+
async trackActivityMetrics(request) {
|
|
1725
|
+
const body = {
|
|
1726
|
+
events: request?.events
|
|
1727
|
+
};
|
|
1728
|
+
const response = await this.apiClient.sendRequest(
|
|
1729
|
+
"POST",
|
|
1730
|
+
"/api/v2/feeds/activities/metrics/track",
|
|
1731
|
+
void 0,
|
|
1732
|
+
void 0,
|
|
1733
|
+
body,
|
|
1734
|
+
"application/json"
|
|
1735
|
+
);
|
|
1736
|
+
decoders.TrackActivityMetricsResponse?.(response.body);
|
|
1737
|
+
return { ...response.body, metadata: response.metadata };
|
|
1738
|
+
}
|
|
1717
1739
|
async queryActivities(request) {
|
|
1718
1740
|
const body = {
|
|
1719
1741
|
enrich_own_fields: request?.enrich_own_fields,
|
|
@@ -2126,6 +2148,25 @@ class FeedsApi {
|
|
|
2126
2148
|
decoders.CreateCollectionsResponse?.(response.body);
|
|
2127
2149
|
return { ...response.body, metadata: response.metadata };
|
|
2128
2150
|
}
|
|
2151
|
+
async queryCollections(request) {
|
|
2152
|
+
const body = {
|
|
2153
|
+
limit: request?.limit,
|
|
2154
|
+
next: request?.next,
|
|
2155
|
+
prev: request?.prev,
|
|
2156
|
+
sort: request?.sort,
|
|
2157
|
+
filter: request?.filter
|
|
2158
|
+
};
|
|
2159
|
+
const response = await this.apiClient.sendRequest(
|
|
2160
|
+
"POST",
|
|
2161
|
+
"/api/v2/feeds/collections/query",
|
|
2162
|
+
void 0,
|
|
2163
|
+
void 0,
|
|
2164
|
+
body,
|
|
2165
|
+
"application/json"
|
|
2166
|
+
);
|
|
2167
|
+
decoders.QueryCollectionsResponse?.(response.body);
|
|
2168
|
+
return { ...response.body, metadata: response.metadata };
|
|
2169
|
+
}
|
|
2129
2170
|
async getComments(request) {
|
|
2130
2171
|
const queryParams = {
|
|
2131
2172
|
object_id: request?.object_id,
|
|
@@ -2185,6 +2226,7 @@ class FeedsApi {
|
|
|
2185
2226
|
async queryComments(request) {
|
|
2186
2227
|
const body = {
|
|
2187
2228
|
filter: request?.filter,
|
|
2229
|
+
id_around: request?.id_around,
|
|
2188
2230
|
limit: request?.limit,
|
|
2189
2231
|
next: request?.next,
|
|
2190
2232
|
prev: request?.prev,
|
|
@@ -3216,15 +3258,26 @@ class FeedsApi {
|
|
|
3216
3258
|
decoders.UpdateUserGroupResponse?.(response.body);
|
|
3217
3259
|
return { ...response.body, metadata: response.metadata };
|
|
3218
3260
|
}
|
|
3219
|
-
async
|
|
3261
|
+
async addUserGroupMembers(request) {
|
|
3220
3262
|
const pathParams = {
|
|
3221
3263
|
id: request?.id
|
|
3222
3264
|
};
|
|
3223
|
-
const
|
|
3224
|
-
|
|
3265
|
+
const body = {
|
|
3266
|
+
member_ids: request?.member_ids,
|
|
3267
|
+
team_id: request?.team_id
|
|
3268
|
+
};
|
|
3269
|
+
const response = await this.apiClient.sendRequest(
|
|
3270
|
+
"POST",
|
|
3271
|
+
"/api/v2/usergroups/{id}/members",
|
|
3272
|
+
pathParams,
|
|
3273
|
+
void 0,
|
|
3274
|
+
body,
|
|
3275
|
+
"application/json"
|
|
3276
|
+
);
|
|
3277
|
+
decoders.AddUserGroupMembersResponse?.(response.body);
|
|
3225
3278
|
return { ...response.body, metadata: response.metadata };
|
|
3226
3279
|
}
|
|
3227
|
-
async
|
|
3280
|
+
async removeUserGroupMembers(request) {
|
|
3228
3281
|
const pathParams = {
|
|
3229
3282
|
id: request?.id
|
|
3230
3283
|
};
|
|
@@ -3234,13 +3287,13 @@ class FeedsApi {
|
|
|
3234
3287
|
};
|
|
3235
3288
|
const response = await this.apiClient.sendRequest(
|
|
3236
3289
|
"POST",
|
|
3237
|
-
"/api/v2/usergroups/{id}/members",
|
|
3290
|
+
"/api/v2/usergroups/{id}/members/delete",
|
|
3238
3291
|
pathParams,
|
|
3239
3292
|
void 0,
|
|
3240
3293
|
body,
|
|
3241
3294
|
"application/json"
|
|
3242
3295
|
);
|
|
3243
|
-
decoders.
|
|
3296
|
+
decoders.RemoveUserGroupMembersResponse?.(response.body);
|
|
3244
3297
|
return { ...response.body, metadata: response.metadata };
|
|
3245
3298
|
}
|
|
3246
3299
|
async queryUsers(request) {
|
|
@@ -4128,7 +4181,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
|
|
|
4128
4181
|
};
|
|
4129
4182
|
return result;
|
|
4130
4183
|
};
|
|
4131
|
-
const version = "
|
|
4184
|
+
const version = "1.1.0";
|
|
4132
4185
|
const axios = axiosImport.default ?? axiosImport;
|
|
4133
4186
|
class ApiClient {
|
|
4134
4187
|
constructor(apiKey, tokenManager, connectionIdManager, options) {
|
|
@@ -4944,7 +4997,7 @@ const uniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
|
|
|
4944
4997
|
});
|
|
4945
4998
|
return existingArray.concat(filteredArrayToMerge);
|
|
4946
4999
|
};
|
|
4947
|
-
const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
|
|
5000
|
+
const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey, position) => {
|
|
4948
5001
|
const existingMap = /* @__PURE__ */ new Map();
|
|
4949
5002
|
(existingArray ?? []).forEach((item) => {
|
|
4950
5003
|
existingMap.set(getKey(item), item);
|
|
@@ -4960,9 +5013,14 @@ const replaceUniqueArrayMerge = (existingArray, arrayToMerge, getKey) => {
|
|
|
4960
5013
|
existingMap.delete(getKey(originalItem));
|
|
4961
5014
|
}
|
|
4962
5015
|
});
|
|
4963
|
-
|
|
4964
|
-
|
|
4965
|
-
|
|
5016
|
+
const newItemsInOrder = arrayToMerge.filter(
|
|
5017
|
+
(item) => existingMap.has(getKey(item))
|
|
5018
|
+
);
|
|
5019
|
+
if (position === "end") {
|
|
5020
|
+
newItemsInOrder.forEach((item) => result.push(item));
|
|
5021
|
+
} else {
|
|
5022
|
+
result.unshift(...newItemsInOrder);
|
|
5023
|
+
}
|
|
4966
5024
|
return result;
|
|
4967
5025
|
};
|
|
4968
5026
|
const Constants = {
|
|
@@ -5009,24 +5067,25 @@ function getStateUpdateQueueId(...args) {
|
|
|
5009
5067
|
const [data, prefix] = args;
|
|
5010
5068
|
const toJoin = [prefix];
|
|
5011
5069
|
switch (prefix) {
|
|
5070
|
+
case "activity-deleted": {
|
|
5071
|
+
return toJoin.concat([data.activity.id]).join("-");
|
|
5072
|
+
}
|
|
5073
|
+
case "activity-pinned":
|
|
5074
|
+
case "activity-unpinned": {
|
|
5075
|
+
return toJoin.concat([data.pinned_activity.activity.id]).join("-");
|
|
5076
|
+
}
|
|
5012
5077
|
case "activity-updated": {
|
|
5013
5078
|
return toJoin.concat([data.activity.id]).join("-");
|
|
5014
5079
|
}
|
|
5015
5080
|
case "activity-reaction-created":
|
|
5016
5081
|
case "activity-reaction-deleted":
|
|
5017
5082
|
case "activity-reaction-updated": {
|
|
5018
|
-
return toJoin.concat([
|
|
5019
|
-
data.activity.id,
|
|
5020
|
-
data.reaction.type
|
|
5021
|
-
]).join("-");
|
|
5083
|
+
return toJoin.concat([data.activity.id, data.reaction.type]).join("-");
|
|
5022
5084
|
}
|
|
5023
5085
|
case "comment-reaction-created":
|
|
5024
5086
|
case "comment-reaction-deleted":
|
|
5025
5087
|
case "comment-reaction-updated": {
|
|
5026
|
-
return toJoin.concat([
|
|
5027
|
-
data.comment.id,
|
|
5028
|
-
data.reaction.type
|
|
5029
|
-
]).join("-");
|
|
5088
|
+
return toJoin.concat([data.comment.id, data.reaction.type]).join("-");
|
|
5030
5089
|
}
|
|
5031
5090
|
case "comment-created":
|
|
5032
5091
|
case "comment-deleted":
|
|
@@ -5038,6 +5097,13 @@ function getStateUpdateQueueId(...args) {
|
|
|
5038
5097
|
case "follow-updated": {
|
|
5039
5098
|
return toJoin.concat([data.source_feed.feed, data.target_feed.feed]).join("-");
|
|
5040
5099
|
}
|
|
5100
|
+
case "feed-member-added":
|
|
5101
|
+
case "feed-member-updated": {
|
|
5102
|
+
return toJoin.concat([data.member.user.id]).join("-");
|
|
5103
|
+
}
|
|
5104
|
+
case "feed-member-removed": {
|
|
5105
|
+
return toJoin.concat([data.member_id]).join("-");
|
|
5106
|
+
}
|
|
5041
5107
|
default: {
|
|
5042
5108
|
ensureExhausted(data, "Encountered unknown state update queue prefix.");
|
|
5043
5109
|
}
|
|
@@ -5063,7 +5129,7 @@ function updateEntityInArray({
|
|
|
5063
5129
|
updatedEntities[index] = newEntity;
|
|
5064
5130
|
return { changed: true, entities: updatedEntities };
|
|
5065
5131
|
}
|
|
5066
|
-
const updateStateFollowCreated = (follow, currentState, currentFeedId, connectedUserId) => {
|
|
5132
|
+
const updateStateFollowCreated = (follow, currentState, currentFeedId, connectedUserId, hasOwnFields = false) => {
|
|
5067
5133
|
if (follow.status !== "accepted") {
|
|
5068
5134
|
return { changed: false, data: currentState };
|
|
5069
5135
|
}
|
|
@@ -5072,7 +5138,12 @@ const updateStateFollowCreated = (follow, currentState, currentFeedId, connected
|
|
|
5072
5138
|
newState = {
|
|
5073
5139
|
...newState,
|
|
5074
5140
|
// Update FeedResponse fields, that has the new follower/following count
|
|
5075
|
-
...follow.source_feed
|
|
5141
|
+
...follow.source_feed,
|
|
5142
|
+
...hasOwnFields ? {
|
|
5143
|
+
own_capabilities: follow.source_feed.own_capabilities,
|
|
5144
|
+
own_follows: follow.source_feed.own_follows,
|
|
5145
|
+
own_followings: follow.source_feed.own_followings
|
|
5146
|
+
} : {}
|
|
5076
5147
|
};
|
|
5077
5148
|
if (currentState.following !== void 0) {
|
|
5078
5149
|
newState.following = [follow, ...currentState.following];
|
|
@@ -5085,9 +5156,14 @@ const updateStateFollowCreated = (follow, currentState, currentFeedId, connected
|
|
|
5085
5156
|
newState = {
|
|
5086
5157
|
...newState,
|
|
5087
5158
|
// Update FeedResponse fields, that has the new follower/following count
|
|
5088
|
-
...follow.target_feed
|
|
5089
|
-
|
|
5090
|
-
|
|
5159
|
+
...follow.target_feed,
|
|
5160
|
+
...hasOwnFields ? {
|
|
5161
|
+
own_capabilities: follow.target_feed.own_capabilities,
|
|
5162
|
+
own_follows: follow.target_feed.own_follows,
|
|
5163
|
+
own_followings: follow.target_feed.own_followings
|
|
5164
|
+
} : {}
|
|
5165
|
+
};
|
|
5166
|
+
if (source.created_by.id === connectedUserId && !hasOwnFields) {
|
|
5091
5167
|
newState.own_follows = currentState.own_follows ? currentState.own_follows.concat(follow) : [follow];
|
|
5092
5168
|
}
|
|
5093
5169
|
if (currentState.followers !== void 0) {
|
|
@@ -5096,7 +5172,7 @@ const updateStateFollowCreated = (follow, currentState, currentFeedId, connected
|
|
|
5096
5172
|
}
|
|
5097
5173
|
return { changed: true, data: newState };
|
|
5098
5174
|
};
|
|
5099
|
-
function handleFollowCreated(eventOrResponse, fromWs) {
|
|
5175
|
+
function handleFollowCreated(eventOrResponse, fromWs, hasOwnFields = false) {
|
|
5100
5176
|
const follow = eventOrResponse.follow;
|
|
5101
5177
|
if (!shouldUpdateState({
|
|
5102
5178
|
stateUpdateQueueId: getStateUpdateQueueId(follow, "follow-created"),
|
|
@@ -5112,7 +5188,8 @@ function handleFollowCreated(eventOrResponse, fromWs) {
|
|
|
5112
5188
|
follow,
|
|
5113
5189
|
this.currentState,
|
|
5114
5190
|
this.feed,
|
|
5115
|
-
connectedUser?.id
|
|
5191
|
+
connectedUser?.id,
|
|
5192
|
+
hasOwnFields
|
|
5116
5193
|
);
|
|
5117
5194
|
if (result.changed) {
|
|
5118
5195
|
this.state.next(result.data);
|
|
@@ -5195,7 +5272,12 @@ function handleFollowUpdated(eventOrResponse, fromWs) {
|
|
|
5195
5272
|
newState ?? (newState = {
|
|
5196
5273
|
...currentState,
|
|
5197
5274
|
// Update FeedResponse fields, that has the new follower/following count
|
|
5198
|
-
...follow.source_feed
|
|
5275
|
+
...follow.source_feed,
|
|
5276
|
+
...follow.source_feed.own_capabilities !== void 0 ? {
|
|
5277
|
+
own_capabilities: follow.source_feed.own_capabilities,
|
|
5278
|
+
own_follows: follow.source_feed.own_follows,
|
|
5279
|
+
own_followings: follow.source_feed.own_followings
|
|
5280
|
+
} : {}
|
|
5199
5281
|
});
|
|
5200
5282
|
const index = currentState.following?.findIndex(
|
|
5201
5283
|
(f) => f.target_feed.feed === follow.target_feed.feed
|
|
@@ -5212,7 +5294,12 @@ function handleFollowUpdated(eventOrResponse, fromWs) {
|
|
|
5212
5294
|
newState ?? (newState = {
|
|
5213
5295
|
...currentState,
|
|
5214
5296
|
// Update FeedResponse fields, that has the new follower/following count
|
|
5215
|
-
...follow.target_feed
|
|
5297
|
+
...follow.target_feed,
|
|
5298
|
+
...follow.target_feed.own_capabilities !== void 0 ? {
|
|
5299
|
+
own_capabilities: follow.target_feed.own_capabilities,
|
|
5300
|
+
own_follows: follow.target_feed.own_follows,
|
|
5301
|
+
own_followings: follow.target_feed.own_followings
|
|
5302
|
+
} : {}
|
|
5216
5303
|
});
|
|
5217
5304
|
if (source.created_by.id === connectedUserId && currentState.own_follows) {
|
|
5218
5305
|
const index2 = currentState.own_follows.findIndex(
|
|
@@ -5336,14 +5423,14 @@ function handleCommentUpdated(payload, fromWs) {
|
|
|
5336
5423
|
const { comment } = payload;
|
|
5337
5424
|
const entityId = comment.parent_id ?? comment.object_id;
|
|
5338
5425
|
if (!shouldUpdateState({
|
|
5339
|
-
stateUpdateQueueId: getStateUpdateQueueId(
|
|
5340
|
-
payload,
|
|
5341
|
-
"comment-updated"
|
|
5342
|
-
),
|
|
5426
|
+
stateUpdateQueueId: getStateUpdateQueueId(payload, "comment-updated"),
|
|
5343
5427
|
stateUpdateQueue: this.stateUpdateQueue,
|
|
5344
5428
|
watch: this.currentState.watch,
|
|
5345
5429
|
fromWs,
|
|
5346
|
-
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5430
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5431
|
+
this,
|
|
5432
|
+
payload
|
|
5433
|
+
)
|
|
5347
5434
|
})) {
|
|
5348
5435
|
return;
|
|
5349
5436
|
}
|
|
@@ -5353,7 +5440,10 @@ function handleCommentUpdated(payload, fromWs) {
|
|
|
5353
5440
|
const index = this.getCommentIndex(comment, currentState);
|
|
5354
5441
|
if (index === -1) return currentState;
|
|
5355
5442
|
const newComments = [...entityState.comments];
|
|
5356
|
-
newComments[index] =
|
|
5443
|
+
newComments[index] = {
|
|
5444
|
+
...comment,
|
|
5445
|
+
own_reactions: entityState.comments[index].own_reactions
|
|
5446
|
+
};
|
|
5357
5447
|
return {
|
|
5358
5448
|
...currentState,
|
|
5359
5449
|
comments_by_entity_id: {
|
|
@@ -5504,7 +5594,19 @@ function handleCommentReactionUpdated(payload, fromWs) {
|
|
|
5504
5594
|
};
|
|
5505
5595
|
});
|
|
5506
5596
|
}
|
|
5507
|
-
function handleFeedMemberAdded(event) {
|
|
5597
|
+
function handleFeedMemberAdded(event, fromWs) {
|
|
5598
|
+
if (!shouldUpdateState({
|
|
5599
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "feed-member-added"),
|
|
5600
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
5601
|
+
watch: this.currentState.watch,
|
|
5602
|
+
fromWs,
|
|
5603
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5604
|
+
this,
|
|
5605
|
+
event
|
|
5606
|
+
)
|
|
5607
|
+
})) {
|
|
5608
|
+
return;
|
|
5609
|
+
}
|
|
5508
5610
|
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
5509
5611
|
this.state.next((currentState) => {
|
|
5510
5612
|
let newState;
|
|
@@ -5523,7 +5625,19 @@ function handleFeedMemberAdded(event) {
|
|
|
5523
5625
|
return newState ?? currentState;
|
|
5524
5626
|
});
|
|
5525
5627
|
}
|
|
5526
|
-
function handleFeedMemberUpdated(event) {
|
|
5628
|
+
function handleFeedMemberUpdated(event, fromWs) {
|
|
5629
|
+
if (!shouldUpdateState({
|
|
5630
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "feed-member-updated"),
|
|
5631
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
5632
|
+
watch: this.currentState.watch,
|
|
5633
|
+
fromWs,
|
|
5634
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5635
|
+
this,
|
|
5636
|
+
event
|
|
5637
|
+
)
|
|
5638
|
+
})) {
|
|
5639
|
+
return;
|
|
5640
|
+
}
|
|
5527
5641
|
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
5528
5642
|
this.state.next((currentState) => {
|
|
5529
5643
|
const memberIndex = currentState.members?.findIndex(
|
|
@@ -5547,7 +5661,19 @@ function handleFeedMemberUpdated(event) {
|
|
|
5547
5661
|
return newState ?? currentState;
|
|
5548
5662
|
});
|
|
5549
5663
|
}
|
|
5550
|
-
function handleFeedMemberRemoved(event) {
|
|
5664
|
+
function handleFeedMemberRemoved(event, fromWs) {
|
|
5665
|
+
if (!shouldUpdateState({
|
|
5666
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "feed-member-removed"),
|
|
5667
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
5668
|
+
watch: this.currentState.watch,
|
|
5669
|
+
fromWs,
|
|
5670
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
5671
|
+
this,
|
|
5672
|
+
event
|
|
5673
|
+
)
|
|
5674
|
+
})) {
|
|
5675
|
+
return;
|
|
5676
|
+
}
|
|
5551
5677
|
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
5552
5678
|
this.state.next((currentState) => {
|
|
5553
5679
|
let newState;
|
|
@@ -5567,6 +5693,9 @@ function handleFeedMemberRemoved(event) {
|
|
|
5567
5693
|
return newState ?? currentState;
|
|
5568
5694
|
});
|
|
5569
5695
|
}
|
|
5696
|
+
const isSameBookmark = (bookmark1, bookmark2) => {
|
|
5697
|
+
return bookmark1.user.id === bookmark2.user.id && bookmark1.activity.id === bookmark2.activity.id && bookmark1.folder?.id === bookmark2.folder?.id && bookmark1.updated_at.getTime() === bookmark2.updated_at.getTime();
|
|
5698
|
+
};
|
|
5570
5699
|
const sharedUpdateActivity$6 = ({
|
|
5571
5700
|
currentActivity,
|
|
5572
5701
|
event,
|
|
@@ -5574,7 +5703,9 @@ const sharedUpdateActivity$6 = ({
|
|
|
5574
5703
|
}) => {
|
|
5575
5704
|
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
5576
5705
|
if (eventBelongsToCurrentUser) {
|
|
5577
|
-
newOwnBookmarks =
|
|
5706
|
+
newOwnBookmarks = currentActivity.own_bookmarks.filter(
|
|
5707
|
+
(bookmark) => !isSameBookmark(bookmark, event.bookmark)
|
|
5708
|
+
);
|
|
5578
5709
|
}
|
|
5579
5710
|
return {
|
|
5580
5711
|
...currentActivity,
|
|
@@ -5582,18 +5713,20 @@ const sharedUpdateActivity$6 = ({
|
|
|
5582
5713
|
own_bookmarks: newOwnBookmarks
|
|
5583
5714
|
};
|
|
5584
5715
|
};
|
|
5585
|
-
const
|
|
5716
|
+
const removeBookmarkFromActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5586
5717
|
entities: activities,
|
|
5587
|
-
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
5718
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || activity.own_bookmarks.some((b) => isSameBookmark(b, event.bookmark))),
|
|
5588
5719
|
updater: (matchedActivity) => sharedUpdateActivity$6({
|
|
5589
5720
|
currentActivity: matchedActivity,
|
|
5590
5721
|
event,
|
|
5591
5722
|
eventBelongsToCurrentUser
|
|
5592
5723
|
})
|
|
5593
5724
|
});
|
|
5594
|
-
const
|
|
5725
|
+
const removeBookmarkFromPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5595
5726
|
entities: pinnedActivities,
|
|
5596
|
-
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id
|
|
5727
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || pinnedActivity.activity.own_bookmarks.some(
|
|
5728
|
+
(b) => isSameBookmark(b, event.bookmark)
|
|
5729
|
+
)),
|
|
5597
5730
|
updater: (matchedPinnedActivity) => {
|
|
5598
5731
|
const newActivity = sharedUpdateActivity$6({
|
|
5599
5732
|
currentActivity: matchedPinnedActivity.activity,
|
|
@@ -5609,7 +5742,7 @@ const addBookmarkToPinnedActivities = (event, pinnedActivities, eventBelongsToCu
|
|
|
5609
5742
|
};
|
|
5610
5743
|
}
|
|
5611
5744
|
});
|
|
5612
|
-
function
|
|
5745
|
+
function handleBookmarkDeleted(event) {
|
|
5613
5746
|
const {
|
|
5614
5747
|
activities: currentActivities,
|
|
5615
5748
|
pinned_activities: currentPinnedActivities
|
|
@@ -5617,12 +5750,12 @@ function handleBookmarkAdded(event) {
|
|
|
5617
5750
|
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
5618
5751
|
const eventBelongsToCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
5619
5752
|
const [result1, result2] = [
|
|
5620
|
-
|
|
5753
|
+
removeBookmarkFromActivities(
|
|
5621
5754
|
event,
|
|
5622
5755
|
currentActivities,
|
|
5623
5756
|
eventBelongsToCurrentUser
|
|
5624
5757
|
),
|
|
5625
|
-
|
|
5758
|
+
removeBookmarkFromPinnedActivities(
|
|
5626
5759
|
event,
|
|
5627
5760
|
currentPinnedActivities,
|
|
5628
5761
|
eventBelongsToCurrentUser
|
|
@@ -5635,9 +5768,6 @@ function handleBookmarkAdded(event) {
|
|
|
5635
5768
|
});
|
|
5636
5769
|
}
|
|
5637
5770
|
}
|
|
5638
|
-
const isSameBookmark = (bookmark1, bookmark2) => {
|
|
5639
|
-
return bookmark1.user.id === bookmark2.user.id && bookmark1.activity.id === bookmark2.activity.id && bookmark1.folder?.id === bookmark2.folder?.id;
|
|
5640
|
-
};
|
|
5641
5771
|
const sharedUpdateActivity$5 = ({
|
|
5642
5772
|
currentActivity,
|
|
5643
5773
|
event,
|
|
@@ -5645,9 +5775,7 @@ const sharedUpdateActivity$5 = ({
|
|
|
5645
5775
|
}) => {
|
|
5646
5776
|
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
5647
5777
|
if (eventBelongsToCurrentUser) {
|
|
5648
|
-
newOwnBookmarks =
|
|
5649
|
-
(bookmark) => !isSameBookmark(bookmark, event.bookmark)
|
|
5650
|
-
);
|
|
5778
|
+
newOwnBookmarks = [...newOwnBookmarks, event.bookmark];
|
|
5651
5779
|
}
|
|
5652
5780
|
return {
|
|
5653
5781
|
...currentActivity,
|
|
@@ -5655,18 +5783,20 @@ const sharedUpdateActivity$5 = ({
|
|
|
5655
5783
|
own_bookmarks: newOwnBookmarks
|
|
5656
5784
|
};
|
|
5657
5785
|
};
|
|
5658
|
-
const
|
|
5786
|
+
const addBookmarkToActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5659
5787
|
entities: activities,
|
|
5660
|
-
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
5788
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || !activity.own_bookmarks.some((b) => isSameBookmark(b, event.bookmark))),
|
|
5661
5789
|
updater: (matchedActivity) => sharedUpdateActivity$5({
|
|
5662
5790
|
currentActivity: matchedActivity,
|
|
5663
5791
|
event,
|
|
5664
5792
|
eventBelongsToCurrentUser
|
|
5665
5793
|
})
|
|
5666
5794
|
});
|
|
5667
|
-
const
|
|
5795
|
+
const addBookmarkToPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5668
5796
|
entities: pinnedActivities,
|
|
5669
|
-
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id
|
|
5797
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || !pinnedActivity.activity.own_bookmarks.some(
|
|
5798
|
+
(b) => isSameBookmark(b, event.bookmark)
|
|
5799
|
+
)),
|
|
5670
5800
|
updater: (matchedPinnedActivity) => {
|
|
5671
5801
|
const newActivity = sharedUpdateActivity$5({
|
|
5672
5802
|
currentActivity: matchedPinnedActivity.activity,
|
|
@@ -5682,7 +5812,7 @@ const removeBookmarkFromPinnedActivities = (event, pinnedActivities, eventBelong
|
|
|
5682
5812
|
};
|
|
5683
5813
|
}
|
|
5684
5814
|
});
|
|
5685
|
-
function
|
|
5815
|
+
function handleBookmarkAdded(event) {
|
|
5686
5816
|
const {
|
|
5687
5817
|
activities: currentActivities,
|
|
5688
5818
|
pinned_activities: currentPinnedActivities
|
|
@@ -5690,12 +5820,12 @@ function handleBookmarkDeleted(event) {
|
|
|
5690
5820
|
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
5691
5821
|
const eventBelongsToCurrentUser = event.bookmark.user.id === connectedUser?.id;
|
|
5692
5822
|
const [result1, result2] = [
|
|
5693
|
-
|
|
5823
|
+
addBookmarkToActivities(
|
|
5694
5824
|
event,
|
|
5695
5825
|
currentActivities,
|
|
5696
5826
|
eventBelongsToCurrentUser
|
|
5697
5827
|
),
|
|
5698
|
-
|
|
5828
|
+
addBookmarkToPinnedActivities(
|
|
5699
5829
|
event,
|
|
5700
5830
|
currentPinnedActivities,
|
|
5701
5831
|
eventBelongsToCurrentUser
|
|
@@ -5716,7 +5846,7 @@ const sharedUpdateActivity$4 = ({
|
|
|
5716
5846
|
let newOwnBookmarks = currentActivity.own_bookmarks;
|
|
5717
5847
|
if (eventBelongsToCurrentUser) {
|
|
5718
5848
|
const bookmarkIndex = newOwnBookmarks.findIndex(
|
|
5719
|
-
(bookmark) =>
|
|
5849
|
+
(bookmark) => bookmark.user.id === event.bookmark.user.id && bookmark.activity.id === event.bookmark.activity.id && bookmark.folder?.id === event.bookmark.folder?.id
|
|
5720
5850
|
);
|
|
5721
5851
|
if (bookmarkIndex !== -1) {
|
|
5722
5852
|
newOwnBookmarks = [...newOwnBookmarks];
|
|
@@ -5731,7 +5861,7 @@ const sharedUpdateActivity$4 = ({
|
|
|
5731
5861
|
};
|
|
5732
5862
|
const updateBookmarkInActivities = (event, activities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5733
5863
|
entities: activities,
|
|
5734
|
-
matcher: (activity) => activity.id === event.bookmark.activity.id,
|
|
5864
|
+
matcher: (activity) => activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || !activity.own_bookmarks.some((b) => isSameBookmark(b, event.bookmark))),
|
|
5735
5865
|
updater: (matchedActivity) => sharedUpdateActivity$4({
|
|
5736
5866
|
currentActivity: matchedActivity,
|
|
5737
5867
|
event,
|
|
@@ -5740,7 +5870,9 @@ const updateBookmarkInActivities = (event, activities, eventBelongsToCurrentUser
|
|
|
5740
5870
|
});
|
|
5741
5871
|
const updateBookmarkInPinnedActivities = (event, pinnedActivities, eventBelongsToCurrentUser) => updateEntityInArray({
|
|
5742
5872
|
entities: pinnedActivities,
|
|
5743
|
-
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id
|
|
5873
|
+
matcher: (pinnedActivity) => pinnedActivity.activity.id === event.bookmark.activity.id && (!eventBelongsToCurrentUser || !pinnedActivity.activity.own_bookmarks.some(
|
|
5874
|
+
(b) => isSameBookmark(b, event.bookmark)
|
|
5875
|
+
)),
|
|
5744
5876
|
updater: (matchedPinnedActivity) => {
|
|
5745
5877
|
const newActivity = sharedUpdateActivity$4({
|
|
5746
5878
|
currentActivity: matchedPinnedActivity.activity,
|
|
@@ -5782,7 +5914,13 @@ function handleBookmarkUpdated(event) {
|
|
|
5782
5914
|
});
|
|
5783
5915
|
}
|
|
5784
5916
|
}
|
|
5785
|
-
function addActivitiesToState(newActivities, activities, position, {
|
|
5917
|
+
function addActivitiesToState(newActivities, activities, position, {
|
|
5918
|
+
hasOwnFields,
|
|
5919
|
+
backfillOwnFields
|
|
5920
|
+
} = {
|
|
5921
|
+
hasOwnFields: true,
|
|
5922
|
+
backfillOwnFields: true
|
|
5923
|
+
}) {
|
|
5786
5924
|
if (activities === void 0) {
|
|
5787
5925
|
return {
|
|
5788
5926
|
changed: false,
|
|
@@ -5805,23 +5943,31 @@ function addActivitiesToState(newActivities, activities, position, { fromWebSock
|
|
|
5805
5943
|
...activities,
|
|
5806
5944
|
...position === "end" ? newActivitiesDeduplicated : []
|
|
5807
5945
|
];
|
|
5808
|
-
this.
|
|
5946
|
+
this.activitiesAddedOrUpdated(newActivitiesDeduplicated, {
|
|
5947
|
+
hasOwnFields,
|
|
5948
|
+
backfillOwnFields
|
|
5949
|
+
});
|
|
5809
5950
|
result = { changed: true, activities: updatedActivities };
|
|
5810
5951
|
}
|
|
5811
5952
|
return result;
|
|
5812
5953
|
}
|
|
5813
5954
|
function handleActivityAdded(event) {
|
|
5814
|
-
|
|
5815
|
-
|
|
5816
|
-
|
|
5817
|
-
|
|
5955
|
+
const currentUser = this.client.state.getLatestValue().connected_user;
|
|
5956
|
+
const decision = this.resolveNewActivityDecision(
|
|
5957
|
+
event.activity,
|
|
5958
|
+
currentUser,
|
|
5959
|
+
false
|
|
5960
|
+
);
|
|
5961
|
+
if (decision === "ignore") {
|
|
5962
|
+
return;
|
|
5818
5963
|
}
|
|
5964
|
+
const position = decision === "add-to-end" ? "end" : "start";
|
|
5819
5965
|
const currentActivities = this.currentState.activities;
|
|
5820
5966
|
const result = addActivitiesToState.bind(this)(
|
|
5821
5967
|
[event.activity],
|
|
5822
5968
|
currentActivities,
|
|
5823
|
-
|
|
5824
|
-
{
|
|
5969
|
+
position,
|
|
5970
|
+
{ hasOwnFields: false, backfillOwnFields: true }
|
|
5825
5971
|
);
|
|
5826
5972
|
if (result.changed) {
|
|
5827
5973
|
const activity = event.activity;
|
|
@@ -5853,7 +5999,19 @@ const removePinnedActivityFromState = (activityResponse, pinnedActivities) => {
|
|
|
5853
5999
|
return { changed: false, pinned_activities: pinnedActivities };
|
|
5854
6000
|
}
|
|
5855
6001
|
};
|
|
5856
|
-
function handleActivityDeleted(event) {
|
|
6002
|
+
function handleActivityDeleted(event, fromWs) {
|
|
6003
|
+
if (!shouldUpdateState({
|
|
6004
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "activity-deleted"),
|
|
6005
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
6006
|
+
watch: this.currentState.watch,
|
|
6007
|
+
fromWs,
|
|
6008
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
6009
|
+
this,
|
|
6010
|
+
event
|
|
6011
|
+
)
|
|
6012
|
+
})) {
|
|
6013
|
+
return;
|
|
6014
|
+
}
|
|
5857
6015
|
const {
|
|
5858
6016
|
activities: currentActivities,
|
|
5859
6017
|
pinned_activities: currentPinnedActivities
|
|
@@ -5938,7 +6096,10 @@ function handleActivityUpdated(payload, fromWs) {
|
|
|
5938
6096
|
updatePinnedActivityInState(payload, currentPinnedActivities)
|
|
5939
6097
|
];
|
|
5940
6098
|
if (result1?.changed || result2.changed) {
|
|
5941
|
-
this.
|
|
6099
|
+
this.activitiesAddedOrUpdated([payload.activity], {
|
|
6100
|
+
hasOwnFields: payload.activity.current_feed?.own_capabilities !== void 0,
|
|
6101
|
+
backfillOwnFields: false
|
|
6102
|
+
});
|
|
5942
6103
|
this.state.partialNext({
|
|
5943
6104
|
activities: result1?.changed ? result1.entities : currentActivities,
|
|
5944
6105
|
pinned_activities: result2.entities
|
|
@@ -6196,53 +6357,133 @@ function handleActivityReactionUpdated(payload, fromWs) {
|
|
|
6196
6357
|
});
|
|
6197
6358
|
}
|
|
6198
6359
|
}
|
|
6199
|
-
|
|
6200
|
-
if (!
|
|
6201
|
-
|
|
6202
|
-
|
|
6203
|
-
|
|
6204
|
-
|
|
6205
|
-
|
|
6206
|
-
|
|
6207
|
-
|
|
6208
|
-
|
|
6209
|
-
|
|
6210
|
-
|
|
6211
|
-
.../* @__PURE__ */ new Set([
|
|
6212
|
-
...currentNotificationStatus.read_activities ?? [],
|
|
6213
|
-
...allGroupIds
|
|
6214
|
-
])
|
|
6215
|
-
];
|
|
6360
|
+
function handleActivityPinned(event, fromWs) {
|
|
6361
|
+
if (!shouldUpdateState({
|
|
6362
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "activity-pinned"),
|
|
6363
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
6364
|
+
watch: this.currentState.watch,
|
|
6365
|
+
fromWs,
|
|
6366
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
6367
|
+
this,
|
|
6368
|
+
event
|
|
6369
|
+
)
|
|
6370
|
+
})) {
|
|
6371
|
+
return;
|
|
6216
6372
|
}
|
|
6217
|
-
|
|
6218
|
-
newState
|
|
6219
|
-
|
|
6220
|
-
|
|
6221
|
-
|
|
6222
|
-
|
|
6223
|
-
|
|
6373
|
+
this.state.next((currentState) => {
|
|
6374
|
+
const newState = {
|
|
6375
|
+
...currentState
|
|
6376
|
+
};
|
|
6377
|
+
const pinnedActivity = {
|
|
6378
|
+
...event.pinned_activity,
|
|
6379
|
+
user: event.user,
|
|
6380
|
+
updated_at: /* @__PURE__ */ new Date()
|
|
6381
|
+
};
|
|
6382
|
+
newState.pinned_activities = currentState.pinned_activities ? [pinnedActivity, ...currentState.pinned_activities] : [pinnedActivity];
|
|
6383
|
+
return newState;
|
|
6384
|
+
});
|
|
6385
|
+
}
|
|
6386
|
+
function handleActivityUnpinned(event, fromWs) {
|
|
6387
|
+
if (!shouldUpdateState({
|
|
6388
|
+
stateUpdateQueueId: getStateUpdateQueueId(event, "activity-unpinned"),
|
|
6389
|
+
stateUpdateQueue: this.stateUpdateQueue,
|
|
6390
|
+
watch: this.currentState.watch,
|
|
6391
|
+
fromWs,
|
|
6392
|
+
isTriggeredByConnectedUser: eventTriggeredByConnectedUser.call(
|
|
6393
|
+
this,
|
|
6394
|
+
event
|
|
6395
|
+
)
|
|
6396
|
+
})) {
|
|
6397
|
+
return;
|
|
6224
6398
|
}
|
|
6225
|
-
|
|
6226
|
-
newState
|
|
6399
|
+
this.state.next((currentState) => {
|
|
6400
|
+
let newState;
|
|
6401
|
+
const index = currentState.pinned_activities?.findIndex(
|
|
6402
|
+
(pinnedActivity) => pinnedActivity.activity.id === event.pinned_activity.activity.id
|
|
6403
|
+
) ?? -1;
|
|
6404
|
+
if (index >= 0) {
|
|
6405
|
+
newState ?? (newState = {
|
|
6406
|
+
...currentState
|
|
6407
|
+
});
|
|
6408
|
+
const newPinnedActivities = [...currentState.pinned_activities];
|
|
6409
|
+
newPinnedActivities.splice(index, 1);
|
|
6410
|
+
newState.pinned_activities = newPinnedActivities;
|
|
6411
|
+
}
|
|
6412
|
+
return newState ?? currentState;
|
|
6413
|
+
});
|
|
6414
|
+
}
|
|
6415
|
+
const isPin = (entity) => {
|
|
6416
|
+
return "activity" in entity;
|
|
6417
|
+
};
|
|
6418
|
+
const updateActivityFromFeedback = (feedback, activities) => {
|
|
6419
|
+
if (!activities) {
|
|
6420
|
+
return {
|
|
6421
|
+
changed: false,
|
|
6422
|
+
entities: []
|
|
6423
|
+
};
|
|
6227
6424
|
}
|
|
6228
|
-
return {
|
|
6229
|
-
|
|
6230
|
-
|
|
6231
|
-
|
|
6425
|
+
return updateEntityInArray({
|
|
6426
|
+
entities: activities,
|
|
6427
|
+
matcher: (e) => {
|
|
6428
|
+
const newHidden = feedback.value === "true";
|
|
6429
|
+
if (isPin(e)) {
|
|
6430
|
+
return e.activity.id === feedback.activity_id && e.activity.hidden !== newHidden;
|
|
6431
|
+
}
|
|
6432
|
+
return e.id === feedback.activity_id && e.hidden !== newHidden;
|
|
6433
|
+
},
|
|
6434
|
+
updater: (e) => {
|
|
6435
|
+
if (isPin(e)) {
|
|
6436
|
+
return {
|
|
6437
|
+
...e,
|
|
6438
|
+
activity: {
|
|
6439
|
+
...e.activity,
|
|
6440
|
+
hidden: feedback.value === "true"
|
|
6441
|
+
}
|
|
6442
|
+
};
|
|
6443
|
+
} else {
|
|
6444
|
+
return {
|
|
6445
|
+
...e,
|
|
6446
|
+
hidden: feedback.value === "true"
|
|
6447
|
+
};
|
|
6448
|
+
}
|
|
6449
|
+
}
|
|
6450
|
+
});
|
|
6232
6451
|
};
|
|
6233
|
-
function
|
|
6234
|
-
const
|
|
6235
|
-
|
|
6236
|
-
|
|
6237
|
-
|
|
6238
|
-
);
|
|
6239
|
-
|
|
6452
|
+
function handleActivityFeedback(event) {
|
|
6453
|
+
const {
|
|
6454
|
+
activities: currentActivities,
|
|
6455
|
+
pinned_activities: currentPinnedActivities
|
|
6456
|
+
} = this.currentState;
|
|
6457
|
+
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
6458
|
+
const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
|
|
6459
|
+
if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
|
|
6460
|
+
return;
|
|
6461
|
+
}
|
|
6462
|
+
const [result1, result2] = [
|
|
6463
|
+
updateActivityFromFeedback(event.activity_feedback, currentActivities),
|
|
6464
|
+
updateActivityFromFeedback(
|
|
6465
|
+
event.activity_feedback,
|
|
6466
|
+
currentPinnedActivities
|
|
6467
|
+
)
|
|
6468
|
+
];
|
|
6469
|
+
if (result1.changed || result2.changed) {
|
|
6240
6470
|
this.state.partialNext({
|
|
6241
|
-
|
|
6471
|
+
activities: result1.entities,
|
|
6472
|
+
pinned_activities: result2.entities
|
|
6242
6473
|
});
|
|
6243
6474
|
}
|
|
6244
6475
|
}
|
|
6476
|
+
function handleFeedDeleted(event) {
|
|
6477
|
+
if (this.currentState.deleted_at) {
|
|
6478
|
+
return;
|
|
6479
|
+
}
|
|
6480
|
+
this.state.partialNext({ deleted_at: event.created_at });
|
|
6481
|
+
}
|
|
6245
6482
|
function handleFeedUpdated(event) {
|
|
6483
|
+
const currentUpdatedAt = this.currentState.updated_at;
|
|
6484
|
+
if (currentUpdatedAt && event.feed.updated_at && currentUpdatedAt.getTime() >= event.feed.updated_at.getTime()) {
|
|
6485
|
+
return;
|
|
6486
|
+
}
|
|
6246
6487
|
this.state.partialNext({ ...event.feed });
|
|
6247
6488
|
}
|
|
6248
6489
|
const addAggregatedActivitiesToState = (newAggregatedActivities, aggregatedActivities, position) => {
|
|
@@ -6291,11 +6532,20 @@ const addAggregatedActivitiesToState = (newAggregatedActivities, aggregatedActiv
|
|
|
6291
6532
|
(a) => a.group
|
|
6292
6533
|
);
|
|
6293
6534
|
break;
|
|
6294
|
-
case "replace":
|
|
6535
|
+
case "replace-then-end":
|
|
6295
6536
|
result.aggregated_activities = replaceUniqueArrayMerge(
|
|
6296
6537
|
aggregatedActivities ?? [],
|
|
6297
6538
|
newAggregatedActivities,
|
|
6298
|
-
(a) => a.group
|
|
6539
|
+
(a) => a.group,
|
|
6540
|
+
"end"
|
|
6541
|
+
);
|
|
6542
|
+
break;
|
|
6543
|
+
case "replace-then-start":
|
|
6544
|
+
result.aggregated_activities = replaceUniqueArrayMerge(
|
|
6545
|
+
aggregatedActivities ?? [],
|
|
6546
|
+
newAggregatedActivities,
|
|
6547
|
+
(a) => a.group,
|
|
6548
|
+
"start"
|
|
6299
6549
|
);
|
|
6300
6550
|
break;
|
|
6301
6551
|
}
|
|
@@ -6322,7 +6572,7 @@ const updateNotificationStatus = (newNotificationStatus, currentNotificationStat
|
|
|
6322
6572
|
};
|
|
6323
6573
|
}
|
|
6324
6574
|
};
|
|
6325
|
-
const updateNotificationFeedFromEvent = (event, currentAggregatedActivities, currentNotificationStatus) => {
|
|
6575
|
+
const updateNotificationFeedFromEvent = (event, currentAggregatedActivities, currentNotificationStatus, currentActivities) => {
|
|
6326
6576
|
const updates = {};
|
|
6327
6577
|
if (event.notification_status) {
|
|
6328
6578
|
const notificationStatusResult = updateNotificationStatus(
|
|
@@ -6333,11 +6583,47 @@ const updateNotificationFeedFromEvent = (event, currentAggregatedActivities, cur
|
|
|
6333
6583
|
updates.notification_status = notificationStatusResult.notification_status;
|
|
6334
6584
|
}
|
|
6335
6585
|
}
|
|
6586
|
+
const effectiveStatus = event.notification_status ?? currentNotificationStatus;
|
|
6587
|
+
const lastReadAt = effectiveStatus?.last_read_at;
|
|
6588
|
+
const lastSeenAt = effectiveStatus?.last_seen_at;
|
|
6589
|
+
const readActivities = effectiveStatus?.read_activities ?? [];
|
|
6590
|
+
const seenActivities = effectiveStatus?.seen_activities ?? [];
|
|
6591
|
+
if (currentActivities?.length && !currentAggregatedActivities?.length && effectiveStatus) {
|
|
6592
|
+
let anyChanged = false;
|
|
6593
|
+
const updatedActivities = currentActivities.map((activity) => {
|
|
6594
|
+
const isRead = lastReadAt != null && activity.updated_at.getTime() < lastReadAt.getTime() || readActivities.includes(activity.id);
|
|
6595
|
+
const isSeen = lastSeenAt != null && activity.updated_at.getTime() < lastSeenAt.getTime() || seenActivities.includes(activity.id);
|
|
6596
|
+
if (activity.is_read !== isRead || activity.is_seen !== isSeen) {
|
|
6597
|
+
anyChanged = true;
|
|
6598
|
+
return { ...activity, is_read: isRead, is_seen: isSeen };
|
|
6599
|
+
}
|
|
6600
|
+
return activity;
|
|
6601
|
+
});
|
|
6602
|
+
if (anyChanged) {
|
|
6603
|
+
updates.activities = updatedActivities;
|
|
6604
|
+
}
|
|
6605
|
+
}
|
|
6606
|
+
if (currentAggregatedActivities?.length && effectiveStatus) {
|
|
6607
|
+
const baseAggregated = currentAggregatedActivities;
|
|
6608
|
+
let anyChanged = false;
|
|
6609
|
+
const updatedAggregated = baseAggregated.map((group) => {
|
|
6610
|
+
const isRead = lastReadAt != null && group.updated_at.getTime() < lastReadAt.getTime() || readActivities.includes(group.group);
|
|
6611
|
+
const isSeen = lastSeenAt != null && group.updated_at.getTime() < lastSeenAt.getTime() || seenActivities.includes(group.group);
|
|
6612
|
+
if (group.is_read !== isRead || group.is_seen !== isSeen) {
|
|
6613
|
+
anyChanged = true;
|
|
6614
|
+
return { ...group, is_read: isRead, is_seen: isSeen };
|
|
6615
|
+
}
|
|
6616
|
+
return group;
|
|
6617
|
+
});
|
|
6618
|
+
if (anyChanged) {
|
|
6619
|
+
updates.aggregated_activities = updatedAggregated;
|
|
6620
|
+
}
|
|
6621
|
+
}
|
|
6336
6622
|
if (event.aggregated_activities && currentAggregatedActivities) {
|
|
6337
6623
|
const aggregatedActivitiesResult = addAggregatedActivitiesToState(
|
|
6338
6624
|
event.aggregated_activities,
|
|
6339
|
-
currentAggregatedActivities,
|
|
6340
|
-
"start"
|
|
6625
|
+
updates.aggregated_activities ?? currentAggregatedActivities,
|
|
6626
|
+
"replace-then-start"
|
|
6341
6627
|
);
|
|
6342
6628
|
if (aggregatedActivitiesResult.changed) {
|
|
6343
6629
|
updates.aggregated_activities = aggregatedActivitiesResult.aggregated_activities;
|
|
@@ -6357,12 +6643,14 @@ function handleNotificationFeedUpdated(event) {
|
|
|
6357
6643
|
const result = updateNotificationFeedFromEvent(
|
|
6358
6644
|
event,
|
|
6359
6645
|
this.currentState.aggregated_activities,
|
|
6360
|
-
this.currentState.notification_status
|
|
6646
|
+
this.currentState.notification_status,
|
|
6647
|
+
this.currentState.activities
|
|
6361
6648
|
);
|
|
6362
6649
|
if (result.changed) {
|
|
6363
6650
|
this.state.partialNext({
|
|
6364
6651
|
notification_status: result.data?.notification_status,
|
|
6365
|
-
aggregated_activities: result.data?.aggregated_activities
|
|
6652
|
+
aggregated_activities: result.data?.aggregated_activities,
|
|
6653
|
+
activities: result.data?.activities ?? this.currentState.activities
|
|
6366
6654
|
});
|
|
6367
6655
|
}
|
|
6368
6656
|
}
|
|
@@ -6412,7 +6700,7 @@ function updateStoriesFeedFromEvent(aggregatedActivities, activities, event) {
|
|
|
6412
6700
|
const aggregatedActivitiesResult = addAggregatedActivitiesToState(
|
|
6413
6701
|
event.aggregated_activities,
|
|
6414
6702
|
aggregatedActivities,
|
|
6415
|
-
"replace"
|
|
6703
|
+
"replace-then-end"
|
|
6416
6704
|
);
|
|
6417
6705
|
if (aggregatedActivitiesResult.changed) {
|
|
6418
6706
|
result.data.aggregated_activities = aggregatedActivitiesResult.aggregated_activities;
|
|
@@ -6450,6 +6738,30 @@ function handleWatchStarted() {
|
|
|
6450
6738
|
function handleWatchStopped() {
|
|
6451
6739
|
this.state.partialNext({ watch: false });
|
|
6452
6740
|
}
|
|
6741
|
+
const activityResolvers = [
|
|
6742
|
+
{
|
|
6743
|
+
matchesField: (field) => field === "activity_type",
|
|
6744
|
+
resolve: (activity) => activity.type
|
|
6745
|
+
},
|
|
6746
|
+
{
|
|
6747
|
+
matchesField: (field) => field === "within_bounds",
|
|
6748
|
+
resolve: (activity) => activity.location
|
|
6749
|
+
},
|
|
6750
|
+
{
|
|
6751
|
+
matchesField: () => true,
|
|
6752
|
+
resolve: (item, path) => filter.resolveDotPathValue(item, path)
|
|
6753
|
+
}
|
|
6754
|
+
];
|
|
6755
|
+
function activityFilter(activity, requestConfig) {
|
|
6756
|
+
const filter$1 = requestConfig?.filter;
|
|
6757
|
+
if (!filter$1 || typeof filter$1 !== "object") {
|
|
6758
|
+
return true;
|
|
6759
|
+
}
|
|
6760
|
+
return filter.itemMatchesFilter(activity, filter$1, {
|
|
6761
|
+
resolvers: [...activityResolvers],
|
|
6762
|
+
arrayEqMode: "contains"
|
|
6763
|
+
});
|
|
6764
|
+
}
|
|
6453
6765
|
const DEFAULT_MAX_RETRIES = 3;
|
|
6454
6766
|
function isRetryableError(error) {
|
|
6455
6767
|
if (error instanceof StreamApiError) {
|
|
@@ -6482,61 +6794,6 @@ async function withRetry(fn, options = {}) {
|
|
|
6482
6794
|
}
|
|
6483
6795
|
throw lastError;
|
|
6484
6796
|
}
|
|
6485
|
-
const isPin = (entity) => {
|
|
6486
|
-
return "activity" in entity;
|
|
6487
|
-
};
|
|
6488
|
-
const updateActivityFromFeedback = (feedback, activities) => {
|
|
6489
|
-
if (!activities) {
|
|
6490
|
-
return {
|
|
6491
|
-
changed: false,
|
|
6492
|
-
entities: []
|
|
6493
|
-
};
|
|
6494
|
-
}
|
|
6495
|
-
return updateEntityInArray({
|
|
6496
|
-
entities: activities,
|
|
6497
|
-
matcher: (e) => isPin(e) ? e.activity.id === feedback.activity_id : e.id === feedback.activity_id,
|
|
6498
|
-
updater: (e) => {
|
|
6499
|
-
if (isPin(e)) {
|
|
6500
|
-
return {
|
|
6501
|
-
...e,
|
|
6502
|
-
activity: {
|
|
6503
|
-
...e.activity,
|
|
6504
|
-
hidden: feedback.value === "true"
|
|
6505
|
-
}
|
|
6506
|
-
};
|
|
6507
|
-
} else {
|
|
6508
|
-
return {
|
|
6509
|
-
...e,
|
|
6510
|
-
hidden: feedback.value === "true"
|
|
6511
|
-
};
|
|
6512
|
-
}
|
|
6513
|
-
}
|
|
6514
|
-
});
|
|
6515
|
-
};
|
|
6516
|
-
function handleActivityFeedback(event) {
|
|
6517
|
-
const {
|
|
6518
|
-
activities: currentActivities,
|
|
6519
|
-
pinned_activities: currentPinnedActivities
|
|
6520
|
-
} = this.currentState;
|
|
6521
|
-
const { connected_user: connectedUser } = this.client.state.getLatestValue();
|
|
6522
|
-
const eventBelongsToCurrentUser = event.activity_feedback.user.id === connectedUser?.id;
|
|
6523
|
-
if (!eventBelongsToCurrentUser || event.activity_feedback.action !== "hide") {
|
|
6524
|
-
return;
|
|
6525
|
-
}
|
|
6526
|
-
const [result1, result2] = [
|
|
6527
|
-
updateActivityFromFeedback(event.activity_feedback, currentActivities),
|
|
6528
|
-
updateActivityFromFeedback(
|
|
6529
|
-
event.activity_feedback,
|
|
6530
|
-
currentPinnedActivities
|
|
6531
|
-
)
|
|
6532
|
-
];
|
|
6533
|
-
if (result1.changed || result2.changed) {
|
|
6534
|
-
this.state.partialNext({
|
|
6535
|
-
activities: result1.entities,
|
|
6536
|
-
pinned_activities: result2.entities
|
|
6537
|
-
});
|
|
6538
|
-
}
|
|
6539
|
-
}
|
|
6540
6797
|
const deepEqual = (x, y) => {
|
|
6541
6798
|
if (x === y) {
|
|
6542
6799
|
return true;
|
|
@@ -6641,9 +6898,9 @@ function clearQueuedFeeds() {
|
|
|
6641
6898
|
queuedFeeds.clear();
|
|
6642
6899
|
}
|
|
6643
6900
|
const _Feed = class _Feed extends FeedApi {
|
|
6644
|
-
constructor(client, groupId, id, data, watch = false,
|
|
6901
|
+
constructor(client, groupId, id, data, watch = false, onNewActivity) {
|
|
6645
6902
|
super(client, groupId, id);
|
|
6646
|
-
this.
|
|
6903
|
+
this.onNewActivity = onNewActivity;
|
|
6647
6904
|
this.indexedActivityIds = /* @__PURE__ */ new Set();
|
|
6648
6905
|
this.stateUpdateQueue = /* @__PURE__ */ new Set();
|
|
6649
6906
|
this.eventHandlers = {
|
|
@@ -6663,7 +6920,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6663
6920
|
"feeds.comment.deleted": handleCommentDeleted.bind(this),
|
|
6664
6921
|
"feeds.comment.updated": handleCommentUpdated.bind(this),
|
|
6665
6922
|
"feeds.feed.created": _Feed.noop,
|
|
6666
|
-
"feeds.feed.deleted":
|
|
6923
|
+
"feeds.feed.deleted": handleFeedDeleted.bind(this),
|
|
6667
6924
|
"feeds.feed.updated": handleFeedUpdated.bind(this),
|
|
6668
6925
|
"feeds.feed_group.changed": _Feed.noop,
|
|
6669
6926
|
"feeds.feed_group.deleted": _Feed.noop,
|
|
@@ -6686,9 +6943,9 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6686
6943
|
"feeds.poll.vote_casted": _Feed.noop,
|
|
6687
6944
|
"feeds.poll.vote_changed": _Feed.noop,
|
|
6688
6945
|
"feeds.poll.vote_removed": _Feed.noop,
|
|
6689
|
-
"feeds.activity.pinned":
|
|
6690
|
-
"feeds.activity.unpinned":
|
|
6691
|
-
"feeds.activity.marked":
|
|
6946
|
+
"feeds.activity.pinned": handleActivityPinned.bind(this),
|
|
6947
|
+
"feeds.activity.unpinned": handleActivityUnpinned.bind(this),
|
|
6948
|
+
"feeds.activity.marked": _Feed.noop,
|
|
6692
6949
|
"moderation.custom_action": _Feed.noop,
|
|
6693
6950
|
"moderation.flagged": _Feed.noop,
|
|
6694
6951
|
"moderation.mark_reviewed": _Feed.noop,
|
|
@@ -6713,8 +6970,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6713
6970
|
is_loading: false,
|
|
6714
6971
|
is_loading_activities: false,
|
|
6715
6972
|
comments_by_entity_id: {},
|
|
6716
|
-
watch
|
|
6717
|
-
addNewActivitiesTo
|
|
6973
|
+
watch
|
|
6718
6974
|
});
|
|
6719
6975
|
this.client = client;
|
|
6720
6976
|
this.state.subscribeWithSelector(
|
|
@@ -6735,9 +6991,6 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6735
6991
|
get currentState() {
|
|
6736
6992
|
return this.state.getLatestValue();
|
|
6737
6993
|
}
|
|
6738
|
-
set addNewActivitiesTo(value) {
|
|
6739
|
-
this.state.partialNext({ addNewActivitiesTo: value });
|
|
6740
|
-
}
|
|
6741
6994
|
hasActivity(activityId) {
|
|
6742
6995
|
return this.indexedActivityIds.has(activityId);
|
|
6743
6996
|
}
|
|
@@ -6746,6 +6999,24 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6746
6999
|
(pinnedActivity) => pinnedActivity.activity.id === activityId
|
|
6747
7000
|
);
|
|
6748
7001
|
}
|
|
7002
|
+
/**
|
|
7003
|
+
* Resolves how to handle a new activity (WS or HTTP): ignore, add-to-start, or add-to-end.
|
|
7004
|
+
* Uses onNewActivity if set; else default (current user + filter match) adds to start.
|
|
7005
|
+
*/
|
|
7006
|
+
resolveNewActivityDecision(activity, currentUser, _fromHttp) {
|
|
7007
|
+
if (this.onNewActivity) {
|
|
7008
|
+
return this.onNewActivity({ activity, currentUser });
|
|
7009
|
+
}
|
|
7010
|
+
if (!currentUser) return "ignore";
|
|
7011
|
+
if (activity.user?.id !== currentUser.id) return "ignore";
|
|
7012
|
+
if (!activityFilter(
|
|
7013
|
+
activity,
|
|
7014
|
+
this.currentState.last_get_or_create_request_config
|
|
7015
|
+
)) {
|
|
7016
|
+
return "ignore";
|
|
7017
|
+
}
|
|
7018
|
+
return "add-to-start";
|
|
7019
|
+
}
|
|
6749
7020
|
async synchronize() {
|
|
6750
7021
|
const { last_get_or_create_request_config } = this.state.getLatestValue();
|
|
6751
7022
|
if (last_get_or_create_request_config?.watch) {
|
|
@@ -6783,7 +7054,8 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6783
7054
|
const result = addActivitiesToState.bind(this)(
|
|
6784
7055
|
response.activities,
|
|
6785
7056
|
currentActivities,
|
|
6786
|
-
"end"
|
|
7057
|
+
"end",
|
|
7058
|
+
{ hasOwnFields: true, backfillOwnFields: false }
|
|
6787
7059
|
);
|
|
6788
7060
|
const aggregatedActivitiesResult = addAggregatedActivitiesToState(
|
|
6789
7061
|
response.aggregated_activities,
|
|
@@ -6832,7 +7104,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6832
7104
|
return nextState;
|
|
6833
7105
|
});
|
|
6834
7106
|
}
|
|
6835
|
-
this.
|
|
7107
|
+
this.activitiesAddedOrUpdated(response.activities);
|
|
6836
7108
|
return response;
|
|
6837
7109
|
} finally {
|
|
6838
7110
|
this.state.partialNext({
|
|
@@ -7140,11 +7412,11 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7140
7412
|
* _Note: Useful only for feeds with `groupId` of `user` value._
|
|
7141
7413
|
*/
|
|
7142
7414
|
async queryFollowers(request) {
|
|
7143
|
-
const
|
|
7415
|
+
const filter2 = {
|
|
7144
7416
|
target_feed: this.feed
|
|
7145
7417
|
};
|
|
7146
7418
|
const response = await this.client.queryFollows({
|
|
7147
|
-
filter,
|
|
7419
|
+
filter: filter2,
|
|
7148
7420
|
...request
|
|
7149
7421
|
});
|
|
7150
7422
|
return response;
|
|
@@ -7155,11 +7427,11 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7155
7427
|
* _Note: Useful only for feeds with `groupId` of `timeline` value._
|
|
7156
7428
|
*/
|
|
7157
7429
|
async queryFollowing(request) {
|
|
7158
|
-
const
|
|
7430
|
+
const filter2 = {
|
|
7159
7431
|
source_feed: this.feed
|
|
7160
7432
|
};
|
|
7161
7433
|
const response = await this.client.queryFollows({
|
|
7162
|
-
filter,
|
|
7434
|
+
filter: filter2,
|
|
7163
7435
|
...request
|
|
7164
7436
|
});
|
|
7165
7437
|
return response;
|
|
@@ -7207,11 +7479,41 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7207
7479
|
next: currentState.next
|
|
7208
7480
|
});
|
|
7209
7481
|
}
|
|
7482
|
+
/**
|
|
7483
|
+
* Applies a new activity to this feed's state (decision + add to activities).
|
|
7484
|
+
* Used when the activity was added via this feed's addActivity or via client.addActivity.
|
|
7485
|
+
*/
|
|
7486
|
+
addActivityFromHTTPResponse(activity) {
|
|
7487
|
+
const currentUser = this.client.state.getLatestValue().connected_user;
|
|
7488
|
+
const decision = this.resolveNewActivityDecision(
|
|
7489
|
+
activity,
|
|
7490
|
+
currentUser,
|
|
7491
|
+
true
|
|
7492
|
+
);
|
|
7493
|
+
if (decision !== "ignore") {
|
|
7494
|
+
const position = decision === "add-to-end" ? "end" : "start";
|
|
7495
|
+
const currentActivities = this.currentState.activities;
|
|
7496
|
+
const result = addActivitiesToState.bind(this)(
|
|
7497
|
+
[activity],
|
|
7498
|
+
currentActivities,
|
|
7499
|
+
position,
|
|
7500
|
+
{
|
|
7501
|
+
hasOwnFields: activity.current_feed?.own_capabilities !== void 0,
|
|
7502
|
+
backfillOwnFields: false
|
|
7503
|
+
}
|
|
7504
|
+
);
|
|
7505
|
+
if (result.changed) {
|
|
7506
|
+
this.client.hydratePollCache([activity]);
|
|
7507
|
+
this.state.partialNext({ activities: result.activities });
|
|
7508
|
+
}
|
|
7509
|
+
}
|
|
7510
|
+
}
|
|
7210
7511
|
async addActivity(request) {
|
|
7211
7512
|
const response = await this.client.addActivity({
|
|
7212
7513
|
...request,
|
|
7213
7514
|
feeds: [this.feed]
|
|
7214
7515
|
});
|
|
7516
|
+
this.addActivityFromHTTPResponse(response.activity);
|
|
7215
7517
|
return response;
|
|
7216
7518
|
}
|
|
7217
7519
|
handleWSEvent(event) {
|
|
@@ -7232,7 +7534,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7232
7534
|
}
|
|
7233
7535
|
this.eventDispatcher.dispatch(event);
|
|
7234
7536
|
}
|
|
7235
|
-
|
|
7537
|
+
activitiesAddedOrUpdated(activities, options = { hasOwnFields: true, backfillOwnFields: true }) {
|
|
7236
7538
|
this.client.hydratePollCache(activities);
|
|
7237
7539
|
this.getOrCreateFeeds(activities, options);
|
|
7238
7540
|
}
|
|
@@ -7250,7 +7552,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7250
7552
|
});
|
|
7251
7553
|
const newFeeds = Array.from(feedsToGetOrCreate.values());
|
|
7252
7554
|
const fieldsToUpdate = [];
|
|
7253
|
-
if (
|
|
7555
|
+
if (options.hasOwnFields) {
|
|
7254
7556
|
fieldsToUpdate.push("own_membership");
|
|
7255
7557
|
if (!enrichmentOptions?.skip_own_capabilities) {
|
|
7256
7558
|
fieldsToUpdate.push("own_capabilities");
|
|
@@ -7270,7 +7572,7 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7270
7572
|
fieldsToUpdate
|
|
7271
7573
|
});
|
|
7272
7574
|
});
|
|
7273
|
-
if (options.
|
|
7575
|
+
if (!options.hasOwnFields && options.backfillOwnFields) {
|
|
7274
7576
|
const uninitializedFeeds = newFeeds.filter((feedResponse) => {
|
|
7275
7577
|
const feed = this.client.feed(feedResponse.group_id, feedResponse.id);
|
|
7276
7578
|
return feed.currentState.own_capabilities === void 0;
|
|
@@ -7293,6 +7595,9 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
7293
7595
|
_Feed.noop = () => {
|
|
7294
7596
|
};
|
|
7295
7597
|
let Feed = _Feed;
|
|
7598
|
+
function applyNewActivityToActiveFeeds(activity) {
|
|
7599
|
+
return this.addActivityFromHTTPResponse(activity);
|
|
7600
|
+
}
|
|
7296
7601
|
function handleUserUpdated(event) {
|
|
7297
7602
|
this.state.next((currentState) => {
|
|
7298
7603
|
let newState;
|
|
@@ -7372,7 +7677,9 @@ function disconnectActivityFromFeed(activity) {
|
|
|
7372
7677
|
}
|
|
7373
7678
|
}
|
|
7374
7679
|
class ActivityWithStateUpdates {
|
|
7375
|
-
constructor(id, feedsClient, { fromResponse } = {
|
|
7680
|
+
constructor(id, feedsClient, { fromResponse } = {
|
|
7681
|
+
fromResponse: void 0
|
|
7682
|
+
}) {
|
|
7376
7683
|
this.id = id;
|
|
7377
7684
|
this.feedsClient = feedsClient;
|
|
7378
7685
|
this.state = new stateStore.StateStore({
|
|
@@ -7423,7 +7730,7 @@ class ActivityWithStateUpdates {
|
|
|
7423
7730
|
initialState: activityResponse
|
|
7424
7731
|
});
|
|
7425
7732
|
if (this.feed) {
|
|
7426
|
-
this.feed.
|
|
7733
|
+
this.feed.onNewActivity = () => "ignore";
|
|
7427
7734
|
}
|
|
7428
7735
|
if (comments) {
|
|
7429
7736
|
await this.loadNextPageActivityComments(comments);
|
|
@@ -7476,7 +7783,11 @@ class ActivityWithStateUpdates {
|
|
|
7476
7783
|
const { activities } = addActivitiesToState.bind(this.feed)(
|
|
7477
7784
|
[initialState],
|
|
7478
7785
|
[],
|
|
7479
|
-
"start"
|
|
7786
|
+
"start",
|
|
7787
|
+
{
|
|
7788
|
+
hasOwnFields: initialState.current_feed?.own_capabilities !== void 0,
|
|
7789
|
+
backfillOwnFields: false
|
|
7790
|
+
}
|
|
7480
7791
|
);
|
|
7481
7792
|
this.feed?.state.partialNext({
|
|
7482
7793
|
activities
|
|
@@ -7748,6 +8059,53 @@ class FeedsClient extends FeedsApi {
|
|
|
7748
8059
|
}
|
|
7749
8060
|
return response;
|
|
7750
8061
|
};
|
|
8062
|
+
this.updateActivityPartial = async (...args) => {
|
|
8063
|
+
const response = await super.updateActivityPartial(...args);
|
|
8064
|
+
for (const feed of this.allActiveFeeds) {
|
|
8065
|
+
handleActivityUpdated.bind(feed)(response, false);
|
|
8066
|
+
}
|
|
8067
|
+
return response;
|
|
8068
|
+
};
|
|
8069
|
+
this.deleteActivity = async (...args) => {
|
|
8070
|
+
const response = await super.deleteActivity(...args);
|
|
8071
|
+
const activityId = args[0].id;
|
|
8072
|
+
for (const feed of this.allActiveFeeds) {
|
|
8073
|
+
handleActivityDeleted.bind(feed)(
|
|
8074
|
+
{ activity: { id: activityId } },
|
|
8075
|
+
false
|
|
8076
|
+
);
|
|
8077
|
+
}
|
|
8078
|
+
this.activeActivities = this.activeActivities.filter(
|
|
8079
|
+
(activity) => activity.id !== activityId
|
|
8080
|
+
);
|
|
8081
|
+
return response;
|
|
8082
|
+
};
|
|
8083
|
+
this.activityFeedback = async (request) => {
|
|
8084
|
+
const response = await super.activityFeedback(request);
|
|
8085
|
+
if (request.hide !== void 0) {
|
|
8086
|
+
const feedback = {
|
|
8087
|
+
activity_id: request.activity_id,
|
|
8088
|
+
value: request.hide ? "true" : "false"
|
|
8089
|
+
};
|
|
8090
|
+
for (const feed of this.allActiveFeeds) {
|
|
8091
|
+
const {
|
|
8092
|
+
activities: currentActivities,
|
|
8093
|
+
pinned_activities: currentPinnedActivities
|
|
8094
|
+
} = feed.currentState;
|
|
8095
|
+
const [result1, result2] = [
|
|
8096
|
+
updateActivityFromFeedback(feedback, currentActivities),
|
|
8097
|
+
updateActivityFromFeedback(feedback, currentPinnedActivities)
|
|
8098
|
+
];
|
|
8099
|
+
if (result1.changed || result2.changed) {
|
|
8100
|
+
feed.state.partialNext({
|
|
8101
|
+
activities: result1.entities,
|
|
8102
|
+
pinned_activities: result2.entities
|
|
8103
|
+
});
|
|
8104
|
+
}
|
|
8105
|
+
}
|
|
8106
|
+
}
|
|
8107
|
+
return response;
|
|
8108
|
+
};
|
|
7751
8109
|
this.addComment = async (request) => {
|
|
7752
8110
|
const response = await super.addComment(request);
|
|
7753
8111
|
const { comment } = response;
|
|
@@ -7833,10 +8191,125 @@ class FeedsClient extends FeedsApi {
|
|
|
7833
8191
|
}
|
|
7834
8192
|
return response;
|
|
7835
8193
|
};
|
|
8194
|
+
this.addBookmark = async (request) => {
|
|
8195
|
+
const response = await super.addBookmark(request);
|
|
8196
|
+
for (const feed of this.allActiveFeeds) {
|
|
8197
|
+
handleBookmarkAdded.bind(feed)(response);
|
|
8198
|
+
}
|
|
8199
|
+
return response;
|
|
8200
|
+
};
|
|
8201
|
+
this.updateBookmark = async (request) => {
|
|
8202
|
+
const response = await super.updateBookmark(request);
|
|
8203
|
+
for (const feed of this.allActiveFeeds) {
|
|
8204
|
+
handleBookmarkUpdated.bind(feed)(response);
|
|
8205
|
+
}
|
|
8206
|
+
return response;
|
|
8207
|
+
};
|
|
8208
|
+
this.deleteBookmark = async (request) => {
|
|
8209
|
+
const response = await super.deleteBookmark(request);
|
|
8210
|
+
for (const feed of this.allActiveFeeds) {
|
|
8211
|
+
handleBookmarkDeleted.bind(feed)(response);
|
|
8212
|
+
}
|
|
8213
|
+
return response;
|
|
8214
|
+
};
|
|
8215
|
+
this.pinActivity = async (...args) => {
|
|
8216
|
+
const response = await super.pinActivity(...args);
|
|
8217
|
+
const feedIds = response.activity?.feeds ?? (response.feed ? [response.feed] : []);
|
|
8218
|
+
for (const fid of feedIds) {
|
|
8219
|
+
const feed = this.activeFeeds[fid];
|
|
8220
|
+
if (feed) {
|
|
8221
|
+
handleActivityPinned.bind(feed)(
|
|
8222
|
+
{ pinned_activity: response },
|
|
8223
|
+
false
|
|
8224
|
+
);
|
|
8225
|
+
}
|
|
8226
|
+
}
|
|
8227
|
+
return response;
|
|
8228
|
+
};
|
|
8229
|
+
this.unpinActivity = async (...args) => {
|
|
8230
|
+
const response = await super.unpinActivity(...args);
|
|
8231
|
+
const feedIds = response.activity?.feeds ?? (response.feed ? [response.feed] : []);
|
|
8232
|
+
for (const fid of feedIds) {
|
|
8233
|
+
const feed = this.activeFeeds[fid];
|
|
8234
|
+
if (feed) {
|
|
8235
|
+
handleActivityUnpinned.bind(feed)(
|
|
8236
|
+
{
|
|
8237
|
+
pinned_activity: {
|
|
8238
|
+
...response,
|
|
8239
|
+
created_at: /* @__PURE__ */ new Date()
|
|
8240
|
+
}
|
|
8241
|
+
},
|
|
8242
|
+
false
|
|
8243
|
+
);
|
|
8244
|
+
}
|
|
8245
|
+
}
|
|
8246
|
+
return response;
|
|
8247
|
+
};
|
|
8248
|
+
this.updateFeed = async (...args) => {
|
|
8249
|
+
const response = await super.updateFeed(...args);
|
|
8250
|
+
const fid = `${args[0].feed_group_id}:${args[0].feed_id}`;
|
|
8251
|
+
const feed = this.activeFeeds[fid];
|
|
8252
|
+
if (feed) {
|
|
8253
|
+
handleFeedUpdated.call(feed, { feed: response.feed });
|
|
8254
|
+
}
|
|
8255
|
+
return response;
|
|
8256
|
+
};
|
|
8257
|
+
this.deleteFeed = async (...args) => {
|
|
8258
|
+
const response = await super.deleteFeed(...args);
|
|
8259
|
+
const fid = `${args[0].feed_group_id}:${args[0].feed_id}`;
|
|
8260
|
+
const feed = this.activeFeeds[fid];
|
|
8261
|
+
if (feed) {
|
|
8262
|
+
handleFeedDeleted.call(feed, {
|
|
8263
|
+
created_at: /* @__PURE__ */ new Date()
|
|
8264
|
+
});
|
|
8265
|
+
if (!feed.currentState.watch) {
|
|
8266
|
+
delete this.activeFeeds[fid];
|
|
8267
|
+
this.activeActivities = this.activeActivities.filter(
|
|
8268
|
+
(activity) => getFeed.call(activity)?.feed !== fid
|
|
8269
|
+
);
|
|
8270
|
+
}
|
|
8271
|
+
}
|
|
8272
|
+
return response;
|
|
8273
|
+
};
|
|
8274
|
+
this.updateFeedMembers = async (...args) => {
|
|
8275
|
+
const response = await super.updateFeedMembers(...args);
|
|
8276
|
+
const fid = `${args[0].feed_group_id}:${args[0].feed_id}`;
|
|
8277
|
+
const feed = this.activeFeeds[fid];
|
|
8278
|
+
if (feed) {
|
|
8279
|
+
for (const member of response.added) {
|
|
8280
|
+
handleFeedMemberAdded.call(feed, { member }, false);
|
|
8281
|
+
}
|
|
8282
|
+
for (const member of response.updated) {
|
|
8283
|
+
handleFeedMemberUpdated.call(feed, { member }, false);
|
|
8284
|
+
}
|
|
8285
|
+
for (const memberId of response.removed_ids) {
|
|
8286
|
+
handleFeedMemberRemoved.call(feed, { member_id: memberId }, false);
|
|
8287
|
+
}
|
|
8288
|
+
}
|
|
8289
|
+
return response;
|
|
8290
|
+
};
|
|
8291
|
+
this.acceptFeedMemberInvite = async (...args) => {
|
|
8292
|
+
const response = await super.acceptFeedMemberInvite(...args);
|
|
8293
|
+
const fid = `${args[0].feed_group_id}:${args[0].feed_id}`;
|
|
8294
|
+
const feed = this.activeFeeds[fid];
|
|
8295
|
+
if (feed) {
|
|
8296
|
+
handleFeedMemberUpdated.call(feed, { member: response.member }, false);
|
|
8297
|
+
}
|
|
8298
|
+
return response;
|
|
8299
|
+
};
|
|
8300
|
+
this.rejectFeedMemberInvite = async (...args) => {
|
|
8301
|
+
const response = await super.rejectFeedMemberInvite(...args);
|
|
8302
|
+
const fid = `${args[0].feed_group_id}:${args[0].feed_id}`;
|
|
8303
|
+
const feed = this.activeFeeds[fid];
|
|
8304
|
+
if (feed) {
|
|
8305
|
+
handleFeedMemberUpdated.call(feed, { member: response.member }, false);
|
|
8306
|
+
}
|
|
8307
|
+
return response;
|
|
8308
|
+
};
|
|
7836
8309
|
this.queryPollAnswers = async (request) => {
|
|
7837
|
-
const
|
|
8310
|
+
const filter2 = request.filter ?? {};
|
|
7838
8311
|
const queryPollAnswersFilter = {
|
|
7839
|
-
...
|
|
8312
|
+
...filter2,
|
|
7840
8313
|
is_answer: true
|
|
7841
8314
|
};
|
|
7842
8315
|
const queryPollAnswersRequest = {
|
|
@@ -7907,18 +8380,12 @@ class FeedsClient extends FeedsApi {
|
|
|
7907
8380
|
id,
|
|
7908
8381
|
data,
|
|
7909
8382
|
watch,
|
|
7910
|
-
options2?.
|
|
7911
|
-
options2?.activityAddedEventFilter
|
|
8383
|
+
options2?.onNewActivity
|
|
7912
8384
|
);
|
|
7913
8385
|
}
|
|
7914
8386
|
const feed = this.activeFeeds[fid];
|
|
7915
|
-
if (!isCreated && options2) {
|
|
7916
|
-
|
|
7917
|
-
feed.addNewActivitiesTo = options2.addNewActivitiesTo;
|
|
7918
|
-
}
|
|
7919
|
-
if (options2?.activityAddedEventFilter) {
|
|
7920
|
-
feed.activityAddedEventFilter = options2.activityAddedEventFilter;
|
|
7921
|
-
}
|
|
8387
|
+
if (!isCreated && options2?.onNewActivity !== void 0) {
|
|
8388
|
+
feed.onNewActivity = options2.onNewActivity;
|
|
7922
8389
|
}
|
|
7923
8390
|
if (!feed.currentState.watch) {
|
|
7924
8391
|
if (!isCreated && data) {
|
|
@@ -8098,6 +8565,16 @@ class FeedsClient extends FeedsApi {
|
|
|
8098
8565
|
});
|
|
8099
8566
|
}
|
|
8100
8567
|
}
|
|
8568
|
+
async addActivity(request) {
|
|
8569
|
+
const response = await super.addActivity(request);
|
|
8570
|
+
request.feeds.forEach((fid) => {
|
|
8571
|
+
const feed = this.activeFeeds[fid];
|
|
8572
|
+
if (feed) {
|
|
8573
|
+
applyNewActivityToActiveFeeds.call(feed, response.activity);
|
|
8574
|
+
}
|
|
8575
|
+
});
|
|
8576
|
+
return response;
|
|
8577
|
+
}
|
|
8101
8578
|
async queryFeeds(request) {
|
|
8102
8579
|
const response = await this._queryFeeds(request);
|
|
8103
8580
|
const feedResponses = response.feeds;
|
|
@@ -8107,12 +8584,12 @@ class FeedsClient extends FeedsApi {
|
|
|
8107
8584
|
id: feedResponse.id,
|
|
8108
8585
|
data: feedResponse,
|
|
8109
8586
|
watch: request?.watch,
|
|
8110
|
-
fieldsToUpdate: [
|
|
8587
|
+
fieldsToUpdate: request?.enrich_own_fields ? [
|
|
8111
8588
|
"own_capabilities",
|
|
8112
8589
|
"own_follows",
|
|
8113
8590
|
"own_membership",
|
|
8114
8591
|
"own_followings"
|
|
8115
|
-
]
|
|
8592
|
+
] : []
|
|
8116
8593
|
})
|
|
8117
8594
|
);
|
|
8118
8595
|
return {
|
|
@@ -8144,10 +8621,21 @@ class FeedsClient extends FeedsApi {
|
|
|
8144
8621
|
});
|
|
8145
8622
|
return response;
|
|
8146
8623
|
}
|
|
8624
|
+
async acceptFollow(...args) {
|
|
8625
|
+
const response = await super.acceptFollow(...args);
|
|
8626
|
+
[
|
|
8627
|
+
response.follow.source_feed.feed,
|
|
8628
|
+
response.follow.target_feed.feed
|
|
8629
|
+
].forEach((fid) => {
|
|
8630
|
+
const feeds = this.findAllActiveFeedsByFid(fid);
|
|
8631
|
+
feeds.forEach((f) => handleFollowUpdated.bind(f)(response, false));
|
|
8632
|
+
});
|
|
8633
|
+
return response;
|
|
8634
|
+
}
|
|
8147
8635
|
// For follow API endpoints we update the state after HTTP response to allow queryFeeds with watch: false
|
|
8148
8636
|
async follow(request) {
|
|
8149
8637
|
const response = await super.follow(request);
|
|
8150
|
-
this.updateStateFromFollows([response.follow]);
|
|
8638
|
+
this.updateStateFromFollows([response.follow], !!request.enrich_own_fields);
|
|
8151
8639
|
return response;
|
|
8152
8640
|
}
|
|
8153
8641
|
/**
|
|
@@ -8157,12 +8645,12 @@ class FeedsClient extends FeedsApi {
|
|
|
8157
8645
|
*/
|
|
8158
8646
|
async followBatch(request) {
|
|
8159
8647
|
const response = await super.followBatch(request);
|
|
8160
|
-
this.updateStateFromFollows(response.follows);
|
|
8648
|
+
this.updateStateFromFollows(response.follows, !!request.enrich_own_fields);
|
|
8161
8649
|
return response;
|
|
8162
8650
|
}
|
|
8163
8651
|
async getOrCreateFollows(request) {
|
|
8164
8652
|
const response = await super.getOrCreateFollows(request);
|
|
8165
|
-
this.updateStateFromFollows(response.created);
|
|
8653
|
+
this.updateStateFromFollows(response.created, !!request.enrich_own_fields);
|
|
8166
8654
|
return response;
|
|
8167
8655
|
}
|
|
8168
8656
|
async unfollow(request) {
|
|
@@ -8253,13 +8741,15 @@ class FeedsClient extends FeedsApi {
|
|
|
8253
8741
|
}).map((a) => getFeed.call(a))
|
|
8254
8742
|
];
|
|
8255
8743
|
}
|
|
8256
|
-
updateStateFromFollows(follows) {
|
|
8744
|
+
updateStateFromFollows(follows, hasOwnFields) {
|
|
8257
8745
|
follows.forEach((follow) => {
|
|
8258
8746
|
const feeds = [
|
|
8259
8747
|
...this.findAllActiveFeedsByFid(follow.source_feed.feed),
|
|
8260
8748
|
...this.findAllActiveFeedsByFid(follow.target_feed.feed)
|
|
8261
8749
|
];
|
|
8262
|
-
feeds.forEach(
|
|
8750
|
+
feeds.forEach(
|
|
8751
|
+
(f) => handleFollowCreated.bind(f)({ follow }, false, hasOwnFields)
|
|
8752
|
+
);
|
|
8263
8753
|
});
|
|
8264
8754
|
}
|
|
8265
8755
|
updateStateFromUnfollows(follows) {
|
|
@@ -8290,6 +8780,7 @@ exports.Feed = Feed;
|
|
|
8290
8780
|
exports.FeedsClient = FeedsClient;
|
|
8291
8781
|
exports.StreamApiError = StreamApiError;
|
|
8292
8782
|
exports.StreamPoll = StreamPoll;
|
|
8783
|
+
exports.activityFilter = activityFilter;
|
|
8293
8784
|
exports.checkHasAnotherPage = checkHasAnotherPage;
|
|
8294
8785
|
exports.debounce = debounce;
|
|
8295
8786
|
exports.ensureExhausted = ensureExhausted;
|
|
@@ -8305,4 +8796,4 @@ exports.replaceUniqueArrayMerge = replaceUniqueArrayMerge;
|
|
|
8305
8796
|
exports.shouldUpdateState = shouldUpdateState;
|
|
8306
8797
|
exports.uniqueArrayMerge = uniqueArrayMerge;
|
|
8307
8798
|
exports.updateEntityInArray = updateEntityInArray;
|
|
8308
|
-
//# sourceMappingURL=feeds-client-
|
|
8799
|
+
//# sourceMappingURL=feeds-client-C1c6lcS3.js.map
|