@stream-io/feeds-client 0.3.5 → 0.3.6
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 +7 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/react-bindings.js +1 -1
- package/dist/es/index.mjs +2 -2
- package/dist/es/react-bindings.mjs +1 -1
- package/dist/{feeds-client-DLRsdGJc.js → feeds-client-47vliZx_.js} +29 -3
- package/dist/feeds-client-47vliZx_.js.map +1 -0
- package/dist/{feeds-client-0zVMEzPX.mjs → feeds-client-Cd2LsXp-.mjs} +29 -3
- package/dist/feeds-client-Cd2LsXp-.mjs.map +1 -0
- package/dist/types/feed/feed.d.ts +1 -0
- package/dist/types/feed/feed.d.ts.map +1 -1
- package/dist/types/utils/deep-equal.d.ts +2 -0
- package/dist/types/utils/deep-equal.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/feed/feed.ts +24 -1
- package/src/utils/deep-equal.ts +22 -0
- package/dist/feeds-client-0zVMEzPX.mjs.map +0 -1
- package/dist/feeds-client-DLRsdGJc.js.map +0 -1
|
@@ -82,6 +82,7 @@ export declare class Feed extends FeedApi {
|
|
|
82
82
|
protected readonly stateUpdateQueue: Set<string>;
|
|
83
83
|
private readonly eventHandlers;
|
|
84
84
|
protected eventDispatcher: EventDispatcher<WSEvent['type'], WSEvent>;
|
|
85
|
+
private inProgressGetOrCreate?;
|
|
85
86
|
constructor(client: FeedsClient, groupId: 'user' | 'timeline' | (string & {}), id: string, data?: FeedResponse, watch?: boolean, addNewActivitiesTo?: 'start' | 'end', activityAddedEventFilter?: ((event: ActivityAddedEvent) => boolean) | undefined);
|
|
86
87
|
protected readonly client: FeedsClient;
|
|
87
88
|
get feed(): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,OAAO,EACP,gBAAgB,EAChB,eAAe,EAEf,uBAAuB,EACvB,gBAAgB,EAEhB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiCnD,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,EACb,8BAA8B,EAC/B,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../../../src/feed/feed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deep-equal.d.ts","sourceRoot":"","sources":["../../../src/utils/deep-equal.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,GAAG,GAAG,EAAE,GAAG,GAAG,YAqBvC,CAAC"}
|
package/package.json
CHANGED
package/src/feed/feed.ts
CHANGED
|
@@ -61,6 +61,7 @@ import type {
|
|
|
61
61
|
} from '../types';
|
|
62
62
|
import { checkHasAnotherPage, Constants, uniqueArrayMerge } from '../utils';
|
|
63
63
|
import { handleActivityFeedback } from './event-handlers/activity/handle-activity-feedback';
|
|
64
|
+
import { deepEqual } from '../utils/deep-equal';
|
|
64
65
|
|
|
65
66
|
export type FeedState = Omit<
|
|
66
67
|
Partial<GetOrCreateFeedResponse & FeedResponse>,
|
|
@@ -214,6 +215,10 @@ export class Feed extends FeedApi {
|
|
|
214
215
|
|
|
215
216
|
protected eventDispatcher: EventDispatcher<WSEvent['type'], WSEvent> =
|
|
216
217
|
new EventDispatcher<WSEvent['type'], WSEvent>();
|
|
218
|
+
private inProgressGetOrCreate?: {
|
|
219
|
+
request?: GetOrCreateFeedRequest;
|
|
220
|
+
promise: Promise<StreamResponse<GetOrCreateFeedResponse>>;
|
|
221
|
+
};
|
|
217
222
|
|
|
218
223
|
constructor(
|
|
219
224
|
client: FeedsClient,
|
|
@@ -279,11 +284,20 @@ export class Feed extends FeedApi {
|
|
|
279
284
|
async synchronize() {
|
|
280
285
|
const { last_get_or_create_request_config } = this.state.getLatestValue();
|
|
281
286
|
if (last_get_or_create_request_config?.watch) {
|
|
287
|
+
this.inProgressGetOrCreate = undefined;
|
|
282
288
|
await this.getOrCreate(last_get_or_create_request_config);
|
|
283
289
|
}
|
|
284
290
|
}
|
|
285
291
|
|
|
286
292
|
async getOrCreate(request?: GetOrCreateFeedRequest) {
|
|
293
|
+
if (
|
|
294
|
+
!request?.next &&
|
|
295
|
+
this.inProgressGetOrCreate &&
|
|
296
|
+
deepEqual(request, this.inProgressGetOrCreate.request)
|
|
297
|
+
) {
|
|
298
|
+
return this.inProgressGetOrCreate.promise;
|
|
299
|
+
}
|
|
300
|
+
|
|
287
301
|
if (this.currentState.is_loading_activities) {
|
|
288
302
|
throw new Error('Only one getOrCreate call is allowed at a time');
|
|
289
303
|
}
|
|
@@ -297,7 +311,13 @@ export class Feed extends FeedApi {
|
|
|
297
311
|
// and pre-populate comments_by_entity_id (once comment_sort and comment_limit are supported)
|
|
298
312
|
|
|
299
313
|
try {
|
|
300
|
-
const
|
|
314
|
+
const responsePromise = super.getOrCreate(request);
|
|
315
|
+
|
|
316
|
+
if (!request?.next) {
|
|
317
|
+
this.inProgressGetOrCreate = { request, promise: responsePromise };
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
const response = await responsePromise;
|
|
301
321
|
|
|
302
322
|
const currentActivityFeeds = [];
|
|
303
323
|
for (const activity of response.activities) {
|
|
@@ -396,6 +416,9 @@ export class Feed extends FeedApi {
|
|
|
396
416
|
is_loading: false,
|
|
397
417
|
is_loading_activities: false,
|
|
398
418
|
});
|
|
419
|
+
if (!request?.next) {
|
|
420
|
+
this.inProgressGetOrCreate = undefined;
|
|
421
|
+
}
|
|
399
422
|
}
|
|
400
423
|
}
|
|
401
424
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export const deepEqual = (x: any, y: any) => {
|
|
2
|
+
if (x === y) {
|
|
3
|
+
return true;
|
|
4
|
+
} else if (
|
|
5
|
+
typeof x == 'object' &&
|
|
6
|
+
x != null &&
|
|
7
|
+
typeof y == 'object' &&
|
|
8
|
+
y != null
|
|
9
|
+
) {
|
|
10
|
+
if (Object.keys(x).length != Object.keys(y).length) return false;
|
|
11
|
+
|
|
12
|
+
for (const prop in x) {
|
|
13
|
+
if (Object.prototype.hasOwnProperty.call(y, prop)) {
|
|
14
|
+
if (!deepEqual(x[prop], y[prop])) return false;
|
|
15
|
+
} else return false;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return true;
|
|
19
|
+
} else {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
};
|