@stream-io/feeds-client 0.3.24 → 0.3.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/react-bindings.js +1 -1
- package/dist/es/index.mjs +3 -2
- package/dist/es/react-bindings.mjs +1 -1
- package/dist/{feeds-client-DljxtRSI.mjs → feeds-client-BNiazJbH.mjs} +114 -44
- package/dist/feeds-client-BNiazJbH.mjs.map +1 -0
- package/dist/{feeds-client-CuCL126K.js → feeds-client-K0WzrfH-.js} +114 -44
- package/dist/feeds-client-K0WzrfH-.js.map +1 -0
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts +3 -1
- package/dist/types/feed/event-handlers/activity/handle-activity-added.d.ts.map +1 -1
- package/dist/types/feed/feed.d.ts +4 -1
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/feeds-client/feeds-client.d.ts +10 -3
- package/dist/types/feeds-client/feeds-client.d.ts.map +1 -1
- package/dist/types/feeds-client/get-or-create-active-feed.d.ts +1 -2
- package/dist/types/feeds-client/get-or-create-active-feed.d.ts.map +1 -1
- package/dist/types/utils/check-own-fields-equality.d.ts +5 -0
- package/dist/types/utils/check-own-fields-equality.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/utils/own-feed-fields.d.ts +3 -0
- package/dist/types/utils/own-feed-fields.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/feed/event-handlers/activity/handle-activity-added.ts +3 -1
- package/src/feed/feed.ts +49 -16
- package/src/feeds-client/feeds-client.ts +69 -30
- package/src/feeds-client/get-or-create-active-feed.ts +2 -6
- package/src/test-utils/response-generators.ts +2 -1
- package/src/utils/check-own-fields-equality.ts +40 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/own-feed-fields.ts +6 -0
- package/dist/feeds-client-CuCL126K.js.map +0 -1
- package/dist/feeds-client-DljxtRSI.mjs.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const require$$0 = require("react");
|
|
4
4
|
require("@stream-io/state-store");
|
|
5
|
-
const feedsClient = require("../feeds-client-
|
|
5
|
+
const feedsClient = require("../feeds-client-K0WzrfH-.js");
|
|
6
6
|
var shim = { exports: {} };
|
|
7
7
|
var useSyncExternalStoreShim_production = {};
|
|
8
8
|
/**
|
package/dist/es/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { StateStore } from "@stream-io/state-store";
|
|
2
2
|
export * from "@stream-io/state-store";
|
|
3
|
-
import { d as debounce } from "../feeds-client-
|
|
4
|
-
import { A, C, a, F, S, b, c, n, m, k, g, e, h, f, j, i, r, s, u, l } from "../feeds-client-
|
|
3
|
+
import { d as debounce } from "../feeds-client-BNiazJbH.mjs";
|
|
4
|
+
import { A, C, a, F, S, b, c, n, m, k, g, e, h, f, j, i, o, r, s, u, l } from "../feeds-client-BNiazJbH.mjs";
|
|
5
5
|
import { LogLevelEnum } from "@stream-io/logger";
|
|
6
6
|
const ChannelOwnCapability = {
|
|
7
7
|
BAN_CHANNEL_MEMBERS: "ban-channel-members",
|
|
@@ -461,6 +461,7 @@ export {
|
|
|
461
461
|
f as isReactionResponse,
|
|
462
462
|
j as isVideoFile,
|
|
463
463
|
i as isVoteAnswer,
|
|
464
|
+
o as ownFeedFields,
|
|
464
465
|
r as replaceUniqueArrayMerge,
|
|
465
466
|
s as shouldUpdateState,
|
|
466
467
|
u as uniqueArrayMerge,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import require$$0, { useCallback, useMemo, useState, useEffect, createContext, useContext, useRef } from "react";
|
|
2
2
|
import "@stream-io/state-store";
|
|
3
|
-
import { F as FeedsClient, g as isCommentResponse, c as checkHasAnotherPage } from "../feeds-client-
|
|
3
|
+
import { F as FeedsClient, g as isCommentResponse, c as checkHasAnotherPage } from "../feeds-client-BNiazJbH.mjs";
|
|
4
4
|
var shim = { exports: {} };
|
|
5
5
|
var useSyncExternalStoreShim_production = {};
|
|
6
6
|
/**
|
|
@@ -3918,7 +3918,7 @@ const getRateLimitFromResponseHeader = (response_headers) => {
|
|
|
3918
3918
|
};
|
|
3919
3919
|
return result;
|
|
3920
3920
|
};
|
|
3921
|
-
const version = "0.3.
|
|
3921
|
+
const version = "0.3.26";
|
|
3922
3922
|
const axios = axiosImport.default ?? axiosImport;
|
|
3923
3923
|
class ApiClient {
|
|
3924
3924
|
constructor(apiKey, tokenManager, connectionIdManager, options) {
|
|
@@ -4780,6 +4780,7 @@ function updateEntityInArray({
|
|
|
4780
4780
|
updatedEntities[index] = newEntity;
|
|
4781
4781
|
return { changed: true, entities: updatedEntities };
|
|
4782
4782
|
}
|
|
4783
|
+
const ownFeedFields = ["own_capabilities", "own_follows", "own_membership"];
|
|
4783
4784
|
const updateStateFollowCreated = (follow, currentState, currentFeedId, connectedUserId) => {
|
|
4784
4785
|
if (follow.status !== "accepted") {
|
|
4785
4786
|
return { changed: false, data: currentState };
|
|
@@ -5486,7 +5487,7 @@ function handleBookmarkUpdated(event) {
|
|
|
5486
5487
|
});
|
|
5487
5488
|
}
|
|
5488
5489
|
}
|
|
5489
|
-
function addActivitiesToState(newActivities, activities, position) {
|
|
5490
|
+
function addActivitiesToState(newActivities, activities, position, { fromWebSocket } = { fromWebSocket: false }) {
|
|
5490
5491
|
if (activities === void 0) {
|
|
5491
5492
|
return {
|
|
5492
5493
|
changed: false,
|
|
@@ -5509,7 +5510,7 @@ function addActivitiesToState(newActivities, activities, position) {
|
|
|
5509
5510
|
...activities,
|
|
5510
5511
|
...position === "end" ? newActivitiesDeduplicated : []
|
|
5511
5512
|
];
|
|
5512
|
-
this.newActivitiesAdded(newActivitiesDeduplicated);
|
|
5513
|
+
this.newActivitiesAdded(newActivitiesDeduplicated, { fromWebSocket });
|
|
5513
5514
|
result = { changed: true, activities: updatedActivities };
|
|
5514
5515
|
}
|
|
5515
5516
|
return result;
|
|
@@ -5524,7 +5525,8 @@ function handleActivityAdded(event) {
|
|
|
5524
5525
|
const result = addActivitiesToState.bind(this)(
|
|
5525
5526
|
[event.activity],
|
|
5526
5527
|
currentActivities,
|
|
5527
|
-
this.currentState.addNewActivitiesTo
|
|
5528
|
+
this.currentState.addNewActivitiesTo,
|
|
5529
|
+
{ fromWebSocket: true }
|
|
5528
5530
|
);
|
|
5529
5531
|
if (result.changed) {
|
|
5530
5532
|
const activity = event.activity;
|
|
@@ -6228,8 +6230,8 @@ const deepEqual = (x, y) => {
|
|
|
6228
6230
|
return false;
|
|
6229
6231
|
}
|
|
6230
6232
|
};
|
|
6231
|
-
function getOrCreateActiveFeed(
|
|
6232
|
-
return this.getOrCreateActiveFeed(
|
|
6233
|
+
function getOrCreateActiveFeed(...args) {
|
|
6234
|
+
return this.getOrCreateActiveFeed(...args);
|
|
6233
6235
|
}
|
|
6234
6236
|
const _Feed = class _Feed extends FeedApi {
|
|
6235
6237
|
constructor(client, groupId, id, data, watch = false, addNewActivitiesTo = "start", activityAddedEventFilter) {
|
|
@@ -6812,9 +6814,11 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6812
6814
|
event.activity.current_feed = currentActivity.current_feed;
|
|
6813
6815
|
}
|
|
6814
6816
|
if (event.activity.feeds.length === 1 && event.activity.current_feed && currentActivity?.current_feed) {
|
|
6815
|
-
|
|
6816
|
-
|
|
6817
|
-
|
|
6817
|
+
ownFeedFields.forEach((field) => {
|
|
6818
|
+
if (field in currentActivity.current_feed) {
|
|
6819
|
+
event.activity.current_feed[field] = currentActivity.current_feed[field];
|
|
6820
|
+
}
|
|
6821
|
+
});
|
|
6818
6822
|
}
|
|
6819
6823
|
}
|
|
6820
6824
|
eventHandler?.(event);
|
|
@@ -6824,17 +6828,31 @@ const _Feed = class _Feed extends FeedApi {
|
|
|
6824
6828
|
}
|
|
6825
6829
|
this.eventDispatcher.dispatch(event);
|
|
6826
6830
|
}
|
|
6827
|
-
newActivitiesAdded(activities) {
|
|
6831
|
+
newActivitiesAdded(activities, options = { fromWebSocket: false }) {
|
|
6828
6832
|
this.client.hydratePollCache(activities);
|
|
6829
|
-
|
|
6830
|
-
|
|
6831
|
-
|
|
6832
|
-
|
|
6833
|
-
|
|
6834
|
-
|
|
6835
|
-
|
|
6836
|
-
|
|
6837
|
-
|
|
6833
|
+
this.getOrCreateFeeds(activities, options);
|
|
6834
|
+
}
|
|
6835
|
+
getOrCreateFeeds(activities, options) {
|
|
6836
|
+
const enrichmentOptions = this.currentState.last_get_or_create_request_config?.enrichment_options;
|
|
6837
|
+
if (!enrichmentOptions?.skip_activity_current_feed && !enrichmentOptions?.skip_all) {
|
|
6838
|
+
const feedsToGetOrCreate = /* @__PURE__ */ new Map();
|
|
6839
|
+
activities.forEach((activity) => {
|
|
6840
|
+
if (activity.current_feed && !feedsToGetOrCreate.has(activity.current_feed.feed)) {
|
|
6841
|
+
feedsToGetOrCreate.set(
|
|
6842
|
+
activity.current_feed.feed,
|
|
6843
|
+
activity.current_feed
|
|
6844
|
+
);
|
|
6845
|
+
}
|
|
6846
|
+
});
|
|
6847
|
+
Array.from(feedsToGetOrCreate.values()).forEach((feed) => {
|
|
6848
|
+
getOrCreateActiveFeed.bind(this.client)({
|
|
6849
|
+
group: feed.group_id,
|
|
6850
|
+
id: feed.id,
|
|
6851
|
+
data: feed,
|
|
6852
|
+
fromWebSocket: options.fromWebSocket
|
|
6853
|
+
});
|
|
6854
|
+
});
|
|
6855
|
+
}
|
|
6838
6856
|
}
|
|
6839
6857
|
};
|
|
6840
6858
|
_Feed.noop = () => {
|
|
@@ -7124,6 +7142,30 @@ class ActivityWithStateUpdates {
|
|
|
7124
7142
|
function getFeed() {
|
|
7125
7143
|
return this.feed;
|
|
7126
7144
|
}
|
|
7145
|
+
const isOwnFollowsEqual = (currentState, newState) => {
|
|
7146
|
+
const existingFollows = new Set(
|
|
7147
|
+
currentState.own_follows?.map(
|
|
7148
|
+
(f) => `${f.source_feed.feed}:${f.target_feed.feed}:${f.updated_at.getTime()}`
|
|
7149
|
+
)
|
|
7150
|
+
);
|
|
7151
|
+
const newFollows = new Set(
|
|
7152
|
+
newState.own_follows?.map(
|
|
7153
|
+
(f) => `${f.source_feed.feed}:${f.target_feed.feed}:${f.updated_at.getTime()}`
|
|
7154
|
+
)
|
|
7155
|
+
);
|
|
7156
|
+
if (existingFollows.size === newFollows.size) {
|
|
7157
|
+
const areEqual = Array.from(existingFollows).every(
|
|
7158
|
+
(f) => newFollows.has(f)
|
|
7159
|
+
);
|
|
7160
|
+
if (areEqual) {
|
|
7161
|
+
return true;
|
|
7162
|
+
}
|
|
7163
|
+
}
|
|
7164
|
+
return false;
|
|
7165
|
+
};
|
|
7166
|
+
const isOwnMembershipEqual = (currentState, newState) => {
|
|
7167
|
+
return (currentState.own_membership?.updated_at.getTime() ?? 0) === (newState.own_membership?.updated_at.getTime() ?? 0);
|
|
7168
|
+
};
|
|
7127
7169
|
class FeedsClient extends FeedsApi {
|
|
7128
7170
|
constructor(apiKey, options) {
|
|
7129
7171
|
const tokenManager = new TokenManager();
|
|
@@ -7375,13 +7417,11 @@ class FeedsClient extends FeedsApi {
|
|
|
7375
7417
|
this.on = this.eventDispatcher.on;
|
|
7376
7418
|
this.off = this.eventDispatcher.off;
|
|
7377
7419
|
this.feed = (groupId, id, options2) => {
|
|
7378
|
-
return this.getOrCreateActiveFeed(
|
|
7379
|
-
groupId,
|
|
7420
|
+
return this.getOrCreateActiveFeed({
|
|
7421
|
+
group: groupId,
|
|
7380
7422
|
id,
|
|
7381
|
-
|
|
7382
|
-
|
|
7383
|
-
options2
|
|
7384
|
-
);
|
|
7423
|
+
options: options2
|
|
7424
|
+
});
|
|
7385
7425
|
};
|
|
7386
7426
|
this.activityWithStateUpdates = (id) => {
|
|
7387
7427
|
let activity = this.activeActivities[id];
|
|
@@ -7398,7 +7438,14 @@ class FeedsClient extends FeedsApi {
|
|
|
7398
7438
|
};
|
|
7399
7439
|
this.eventDispatcher.dispatch(networkEvent);
|
|
7400
7440
|
};
|
|
7401
|
-
this.getOrCreateActiveFeed = (
|
|
7441
|
+
this.getOrCreateActiveFeed = ({
|
|
7442
|
+
group,
|
|
7443
|
+
id,
|
|
7444
|
+
data,
|
|
7445
|
+
watch,
|
|
7446
|
+
options: options2,
|
|
7447
|
+
fromWebSocket = false
|
|
7448
|
+
}) => {
|
|
7402
7449
|
const fid = `${group}:${id}`;
|
|
7403
7450
|
let isCreated = false;
|
|
7404
7451
|
if (!this.activeFeeds[fid]) {
|
|
@@ -7423,7 +7470,29 @@ class FeedsClient extends FeedsApi {
|
|
|
7423
7470
|
}
|
|
7424
7471
|
}
|
|
7425
7472
|
if (!feed.currentState.watch) {
|
|
7426
|
-
if (data)
|
|
7473
|
+
if (!isCreated && data) {
|
|
7474
|
+
if ((feed.currentState.updated_at?.getTime() ?? 0) < data.updated_at.getTime()) {
|
|
7475
|
+
handleFeedUpdated.call(feed, { feed: data });
|
|
7476
|
+
} else if ((feed.currentState.updated_at?.getTime() ?? 0) === data.updated_at.getTime() && !fromWebSocket) {
|
|
7477
|
+
const fieldsToUpdate = [];
|
|
7478
|
+
if (!isOwnFollowsEqual(feed.currentState, data)) {
|
|
7479
|
+
fieldsToUpdate.push("own_follows");
|
|
7480
|
+
}
|
|
7481
|
+
if (!isOwnMembershipEqual(feed.currentState, data)) {
|
|
7482
|
+
fieldsToUpdate.push("own_membership");
|
|
7483
|
+
}
|
|
7484
|
+
if (fieldsToUpdate.length > 0) {
|
|
7485
|
+
const fieldsToUpdateData = fieldsToUpdate.reduce(
|
|
7486
|
+
(acc, field) => {
|
|
7487
|
+
acc[field] = data[field];
|
|
7488
|
+
return acc;
|
|
7489
|
+
},
|
|
7490
|
+
{}
|
|
7491
|
+
);
|
|
7492
|
+
feed.state.partialNext(fieldsToUpdateData);
|
|
7493
|
+
}
|
|
7494
|
+
}
|
|
7495
|
+
}
|
|
7427
7496
|
if (watch) handleWatchStarted.call(feed);
|
|
7428
7497
|
}
|
|
7429
7498
|
return feed;
|
|
@@ -7457,11 +7526,11 @@ class FeedsClient extends FeedsApi {
|
|
|
7457
7526
|
}
|
|
7458
7527
|
case "feeds.feed.created": {
|
|
7459
7528
|
if (this.activeFeeds[event.feed.id]) break;
|
|
7460
|
-
this.getOrCreateActiveFeed(
|
|
7461
|
-
event.feed.group_id,
|
|
7462
|
-
event.feed.id,
|
|
7463
|
-
event.feed
|
|
7464
|
-
);
|
|
7529
|
+
this.getOrCreateActiveFeed({
|
|
7530
|
+
group: event.feed.group_id,
|
|
7531
|
+
id: event.feed.id,
|
|
7532
|
+
data: event.feed
|
|
7533
|
+
});
|
|
7465
7534
|
break;
|
|
7466
7535
|
}
|
|
7467
7536
|
case "feeds.feed.deleted": {
|
|
@@ -7601,12 +7670,12 @@ class FeedsClient extends FeedsApi {
|
|
|
7601
7670
|
const response = await this._queryFeeds(request);
|
|
7602
7671
|
const feedResponses = response.feeds;
|
|
7603
7672
|
const feeds = feedResponses.map(
|
|
7604
|
-
(feedResponse) => this.getOrCreateActiveFeed(
|
|
7605
|
-
feedResponse.group_id,
|
|
7606
|
-
feedResponse.id,
|
|
7607
|
-
feedResponse,
|
|
7608
|
-
request?.watch
|
|
7609
|
-
)
|
|
7673
|
+
(feedResponse) => this.getOrCreateActiveFeed({
|
|
7674
|
+
group: feedResponse.group_id,
|
|
7675
|
+
id: feedResponse.id,
|
|
7676
|
+
data: feedResponse,
|
|
7677
|
+
watch: request?.watch
|
|
7678
|
+
})
|
|
7610
7679
|
);
|
|
7611
7680
|
this.hydrateCapabilitiesCache(feedResponses);
|
|
7612
7681
|
return {
|
|
@@ -7696,11 +7765,11 @@ class FeedsClient extends FeedsApi {
|
|
|
7696
7765
|
async getFollowSuggestions(...params) {
|
|
7697
7766
|
const response = await super.getFollowSuggestions(...params);
|
|
7698
7767
|
response.suggestions.forEach((suggestion) => {
|
|
7699
|
-
this.getOrCreateActiveFeed(
|
|
7700
|
-
suggestion.group_id,
|
|
7701
|
-
suggestion.id,
|
|
7702
|
-
suggestion
|
|
7703
|
-
);
|
|
7768
|
+
this.getOrCreateActiveFeed({
|
|
7769
|
+
group: suggestion.group_id,
|
|
7770
|
+
id: suggestion.id,
|
|
7771
|
+
data: suggestion
|
|
7772
|
+
});
|
|
7704
7773
|
});
|
|
7705
7774
|
return response;
|
|
7706
7775
|
}
|
|
@@ -7781,8 +7850,9 @@ export {
|
|
|
7781
7850
|
updateEntityInArray as l,
|
|
7782
7851
|
feedsLoggerSystem as m,
|
|
7783
7852
|
ensureExhausted as n,
|
|
7853
|
+
ownFeedFields as o,
|
|
7784
7854
|
replaceUniqueArrayMerge as r,
|
|
7785
7855
|
shouldUpdateState as s,
|
|
7786
7856
|
uniqueArrayMerge as u
|
|
7787
7857
|
};
|
|
7788
|
-
//# sourceMappingURL=feeds-client-
|
|
7858
|
+
//# sourceMappingURL=feeds-client-BNiazJbH.mjs.map
|