@stream-io/feeds-client 0.1.10 → 0.2.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 +30 -0
- package/dist/@react-bindings/contexts/StreamFeedContext.d.ts +1 -1
- package/dist/@react-bindings/contexts/StreamFeedsContext.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useComments.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFeedActivities.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFeedMetadata.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFollowers.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useFollowing.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useOwnCapabilities.d.ts +1 -1
- package/dist/@react-bindings/hooks/feed-state-hooks/useOwnFollows.d.ts +1 -1
- package/dist/@react-bindings/hooks/useCreateFeedsClient.d.ts +1 -1
- package/dist/@react-bindings/wrappers/StreamFeed.d.ts +1 -1
- package/dist/index-react-bindings.browser.cjs +1720 -1601
- package/dist/index-react-bindings.browser.cjs.map +1 -1
- package/dist/index-react-bindings.browser.js +1720 -1601
- package/dist/index-react-bindings.browser.js.map +1 -1
- package/dist/index-react-bindings.node.cjs +1720 -1601
- package/dist/index-react-bindings.node.cjs.map +1 -1
- package/dist/index-react-bindings.node.js +1720 -1601
- package/dist/index-react-bindings.node.js.map +1 -1
- package/dist/index.browser.cjs +1724 -1602
- package/dist/index.browser.cjs.map +1 -1
- package/dist/index.browser.js +1722 -1603
- package/dist/index.browser.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.node.cjs +1724 -1602
- package/dist/index.node.cjs.map +1 -1
- package/dist/index.node.js +1722 -1603
- package/dist/index.node.js.map +1 -1
- package/dist/src/common/ActivitySearchSource.d.ts +1 -1
- package/dist/src/common/FeedSearchSource.d.ts +2 -2
- package/dist/src/common/Poll.d.ts +1 -1
- package/dist/src/common/UserSearchSource.d.ts +1 -1
- package/dist/src/common/real-time/StableWSConnection.d.ts +3 -3
- package/dist/src/feed/event-handlers/activity/handle-activity-added.d.ts +7 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-deleted.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-added.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-reaction-deleted.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-removed-from-feed.d.ts +3 -0
- package/dist/src/feed/event-handlers/activity/handle-activity-updated.d.ts +8 -0
- package/dist/src/feed/event-handlers/activity/index.d.ts +6 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-added.d.ts +8 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-deleted.d.ts +9 -0
- package/dist/src/feed/event-handlers/bookmark/handle-bookmark-updated.d.ts +8 -0
- package/dist/src/feed/event-handlers/bookmark/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-added.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-deleted.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-reaction.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/handle-comment-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/comment/index.d.ts +4 -0
- package/dist/src/feed/event-handlers/feed/handle-feed-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed/index.d.ts +1 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-added.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-removed.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/handle-feed-member-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/feed-member/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-created.d.ts +7 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-deleted.d.ts +7 -0
- package/dist/src/feed/event-handlers/follow/handle-follow-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/follow/index.d.ts +3 -0
- package/dist/src/feed/event-handlers/index.d.ts +8 -0
- package/dist/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.d.ts +3 -0
- package/dist/src/feed/event-handlers/notification-feed/index.d.ts +1 -0
- package/dist/src/feed/event-handlers/watch/handle-watch-started.d.ts +2 -0
- package/dist/src/feed/event-handlers/watch/handle-watch-stopped.d.ts +2 -0
- package/dist/src/feed/event-handlers/watch/index.d.ts +2 -0
- package/dist/src/{Feed.d.ts → feed/feed.d.ts} +16 -43
- package/dist/src/feed/index.d.ts +2 -0
- package/dist/src/feeds-client/event-handlers/index.d.ts +1 -0
- package/dist/src/feeds-client/event-handlers/user/handle-user-updated.d.ts +3 -0
- package/dist/src/feeds-client/feeds-client.d.ts +76 -0
- package/dist/src/feeds-client/index.d.ts +2 -0
- package/dist/src/gen/feeds/FeedsApi.d.ts +27 -23
- package/dist/src/gen/models/index.d.ts +168 -23
- package/dist/src/gen-imports.d.ts +1 -1
- package/dist/src/test-utils/index.d.ts +1 -0
- package/dist/src/test-utils/response-generators.d.ts +9 -0
- package/dist/src/types-internal.d.ts +7 -0
- package/dist/src/types.d.ts +1 -1
- package/dist/src/utils/check-has-another-page.d.ts +1 -0
- package/dist/src/utils/constants.d.ts +3 -0
- package/dist/src/utils/index.d.ts +5 -0
- package/dist/src/utils/state-update-queue.d.ts +6 -0
- package/dist/src/utils/type-assertions.d.ts +7 -0
- package/dist/src/utils/unique-array-merge.d.ts +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/index.ts +2 -2
- package/package.json +3 -2
- package/src/common/ActivitySearchSource.ts +1 -1
- package/src/common/FeedSearchSource.ts +2 -2
- package/src/common/Poll.ts +1 -1
- package/src/common/UserSearchSource.ts +1 -1
- package/src/{state-updates → feed/event-handlers/activity}/activity-reaction-utils.test.ts +12 -2
- package/src/{state-updates → feed/event-handlers/activity}/activity-utils.test.ts +3 -2
- package/src/{state-updates/activity-utils.ts → feed/event-handlers/activity/handle-activity-added.ts} +16 -36
- package/src/feed/event-handlers/activity/handle-activity-deleted.ts +30 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-added.ts +67 -0
- package/src/feed/event-handlers/activity/handle-activity-reaction-deleted.ts +75 -0
- package/src/feed/event-handlers/activity/handle-activity-removed-from-feed.ts +16 -0
- package/src/feed/event-handlers/activity/handle-activity-updated.ts +47 -0
- package/src/feed/event-handlers/activity/index.ts +6 -0
- package/src/{state-updates → feed/event-handlers/bookmark}/bookmark-utils.test.ts +2 -2
- package/src/feed/event-handlers/bookmark/handle-bookmark-added.ts +63 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-deleted.ts +84 -0
- package/src/feed/event-handlers/bookmark/handle-bookmark-updated.ts +76 -0
- package/src/feed/event-handlers/bookmark/index.ts +3 -0
- package/src/feed/event-handlers/comment/handle-comment-added.ts +38 -0
- package/src/feed/event-handlers/comment/handle-comment-deleted.ts +35 -0
- package/src/feed/event-handlers/comment/handle-comment-reaction.ts +61 -0
- package/src/feed/event-handlers/comment/handle-comment-updated.ts +35 -0
- package/src/feed/event-handlers/comment/index.ts +4 -0
- package/src/feed/event-handlers/feed/handle-feed-updated.ts +9 -0
- package/src/feed/event-handlers/feed/index.ts +1 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-added.ts +31 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-removed.ts +24 -0
- package/src/feed/event-handlers/feed-member/handle-feed-member-updated.ts +40 -0
- package/src/feed/event-handlers/feed-member/index.ts +3 -0
- package/src/feed/event-handlers/follow/handle-follow-created.test.ts +250 -0
- package/src/feed/event-handlers/follow/handle-follow-created.ts +90 -0
- package/src/feed/event-handlers/follow/handle-follow-deleted.test.ts +268 -0
- package/src/feed/event-handlers/follow/handle-follow-deleted.ts +95 -0
- package/src/feed/event-handlers/follow/handle-follow-updated.test.ts +174 -0
- package/src/feed/event-handlers/follow/handle-follow-updated.ts +85 -0
- package/src/feed/event-handlers/follow/index.ts +3 -0
- package/src/feed/event-handlers/index.ts +8 -0
- package/src/feed/event-handlers/notification-feed/handle-notification-feed-updated.ts +10 -0
- package/src/feed/event-handlers/notification-feed/index.ts +1 -0
- package/src/feed/event-handlers/watch/handle-watch-started.ts +5 -0
- package/src/feed/event-handlers/watch/handle-watch-stopped.ts +5 -0
- package/src/feed/event-handlers/watch/index.ts +2 -0
- package/src/{Feed.ts → feed/feed.ts} +87 -516
- package/src/feed/index.ts +2 -0
- package/src/feeds-client/event-handlers/index.ts +1 -0
- package/src/feeds-client/event-handlers/user/handle-user-updated.test.ts +53 -0
- package/src/feeds-client/event-handlers/user/handle-user-updated.ts +28 -0
- package/src/{FeedsClient.ts → feeds-client/feeds-client.ts} +63 -36
- package/src/feeds-client/index.ts +2 -0
- package/src/gen/feeds/FeedsApi.ts +164 -138
- package/src/gen/model-decoders/decoders.ts +22 -0
- package/src/gen/models/index.ts +288 -29
- package/src/gen-imports.ts +1 -1
- package/src/test-utils/index.ts +1 -0
- package/src/test-utils/response-generators.ts +101 -0
- package/src/types-internal.ts +11 -0
- package/src/types.ts +1 -1
- package/src/utils/check-has-another-page.ts +6 -0
- package/src/utils/constants.ts +3 -0
- package/src/utils/index.ts +5 -0
- package/src/{state-updates → utils}/state-update-queue.test.ts +6 -6
- package/src/utils/state-update-queue.ts +42 -0
- package/src/utils/type-assertions.ts +22 -0
- package/src/{utils.test.ts → utils/unique-array-merge.test.ts} +7 -3
- package/src/utils/unique-array-merge.ts +19 -0
- package/dist/src/FeedsClient.d.ts +0 -75
- package/dist/src/state-updates/activity-reaction-utils.d.ts +0 -10
- package/dist/src/state-updates/activity-utils.d.ts +0 -13
- package/dist/src/state-updates/bookmark-utils.d.ts +0 -14
- package/dist/src/state-updates/follow-utils.d.ts +0 -19
- package/dist/src/state-updates/state-update-queue.d.ts +0 -15
- package/dist/src/utils.d.ts +0 -10
- package/src/state-updates/activity-reaction-utils.ts +0 -107
- package/src/state-updates/bookmark-utils.ts +0 -167
- package/src/state-updates/follow-utils.test.ts +0 -552
- package/src/state-updates/follow-utils.ts +0 -126
- package/src/state-updates/state-update-queue.ts +0 -35
- package/src/utils.ts +0 -48
- /package/dist/src/{ModerationClient.d.ts → moderation-client.d.ts} +0 -0
- /package/src/{ModerationClient.ts → moderation-client.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './user/handle-user-updated';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { describe, it, beforeEach, expect } from 'vitest';
|
|
2
|
+
|
|
3
|
+
import { FeedsClient, handleUserUpdated } from '../..';
|
|
4
|
+
import { generateOwnUser, generateUserResponse } from '../../../test-utils';
|
|
5
|
+
import { EventPayload } from '../../../types-internal';
|
|
6
|
+
|
|
7
|
+
describe('handleUserUpdated', () => {
|
|
8
|
+
let feedsClient: FeedsClient;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
feedsClient = new FeedsClient('mock-api-key');
|
|
12
|
+
const connectedUser = generateOwnUser();
|
|
13
|
+
|
|
14
|
+
feedsClient.state.partialNext({ connected_user: connectedUser });
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
it('should update the connected user in the state', () => {
|
|
18
|
+
const stateBefore = feedsClient.state.getLatestValue();
|
|
19
|
+
|
|
20
|
+
const event: EventPayload<'user.updated'> = {
|
|
21
|
+
type: 'user.updated',
|
|
22
|
+
created_at: new Date(),
|
|
23
|
+
custom: {},
|
|
24
|
+
user: {
|
|
25
|
+
...generateUserResponse(),
|
|
26
|
+
...stateBefore.connected_user!,
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
handleUserUpdated.call(feedsClient, event);
|
|
31
|
+
|
|
32
|
+
const stateAfter = feedsClient.state.getLatestValue();
|
|
33
|
+
|
|
34
|
+
expect(stateAfter.connected_user).toMatchObject({ name: event.user.name });
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it('should not update the connected user if the incoming event contains other user', () => {
|
|
38
|
+
const event: EventPayload<'user.updated'> = {
|
|
39
|
+
type: 'user.updated',
|
|
40
|
+
created_at: new Date(),
|
|
41
|
+
custom: {},
|
|
42
|
+
user: generateUserResponse(),
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const stateBefore = feedsClient.state.getLatestValue();
|
|
46
|
+
|
|
47
|
+
handleUserUpdated.call(feedsClient, event);
|
|
48
|
+
|
|
49
|
+
const stateAfter = feedsClient.state.getLatestValue();
|
|
50
|
+
|
|
51
|
+
expect(stateAfter.connected_user).toBe(stateBefore.connected_user);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { EventPayload } from '../../../types-internal';
|
|
2
|
+
import type { FeedsClient, FeedsClientState } from '../../feeds-client';
|
|
3
|
+
|
|
4
|
+
export function handleUserUpdated(
|
|
5
|
+
this: FeedsClient,
|
|
6
|
+
event: EventPayload<'user.updated'>,
|
|
7
|
+
) {
|
|
8
|
+
this.state.next((currentState) => {
|
|
9
|
+
let newState: FeedsClientState | undefined;
|
|
10
|
+
|
|
11
|
+
const { connected_user } = currentState;
|
|
12
|
+
|
|
13
|
+
if (connected_user && connected_user.id === event.user.id) {
|
|
14
|
+
newState ??= {
|
|
15
|
+
...currentState,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
newState.connected_user = {
|
|
19
|
+
...connected_user,
|
|
20
|
+
...event.user,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// TODO: update other users in user map (if/once applicable)
|
|
25
|
+
|
|
26
|
+
return newState ?? currentState;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
@@ -1,40 +1,49 @@
|
|
|
1
|
-
import { FeedsApi } from '
|
|
1
|
+
import { FeedsApi } from '../gen/feeds/FeedsApi';
|
|
2
2
|
import {
|
|
3
3
|
ActivityResponse,
|
|
4
4
|
FeedResponse,
|
|
5
5
|
FileUploadRequest,
|
|
6
6
|
FollowBatchRequest,
|
|
7
|
+
FollowRequest,
|
|
7
8
|
ImageUploadRequest,
|
|
8
9
|
OwnUser,
|
|
9
10
|
PollResponse,
|
|
10
11
|
PollVotesResponse,
|
|
11
12
|
QueryFeedsRequest,
|
|
12
13
|
QueryPollVotesRequest,
|
|
13
|
-
|
|
14
|
+
UpdateFollowRequest,
|
|
14
15
|
UserRequest,
|
|
15
16
|
WSEvent,
|
|
16
|
-
} from '
|
|
17
|
-
import { FeedsEvent, StreamFile, TokenOrProvider } from '
|
|
18
|
-
import { StateStore } from '
|
|
19
|
-
import { TokenManager } from '
|
|
20
|
-
import { ConnectionIdManager } from '
|
|
21
|
-
import { StableWSConnection } from '
|
|
22
|
-
import { EventDispatcher } from '
|
|
23
|
-
import { ApiClient } from '
|
|
17
|
+
} from '../gen/models';
|
|
18
|
+
import { FeedsEvent, StreamFile, TokenOrProvider } from '../types';
|
|
19
|
+
import { StateStore } from '../common/StateStore';
|
|
20
|
+
import { TokenManager } from '../common/TokenManager';
|
|
21
|
+
import { ConnectionIdManager } from '../common/ConnectionIdManager';
|
|
22
|
+
import { StableWSConnection } from '../common/real-time/StableWSConnection';
|
|
23
|
+
import { EventDispatcher } from '../common/EventDispatcher';
|
|
24
|
+
import { ApiClient } from '../common/ApiClient';
|
|
24
25
|
import {
|
|
25
26
|
addConnectionEventListeners,
|
|
26
27
|
removeConnectionEventListeners,
|
|
27
28
|
streamDevToken,
|
|
28
|
-
} from '
|
|
29
|
-
import { decodeWSEvent } from '
|
|
30
|
-
import { Feed } from './Feed';
|
|
29
|
+
} from '../common/utils';
|
|
30
|
+
import { decodeWSEvent } from '../gen/model-decoders/event-decoder-mapping';
|
|
31
31
|
import {
|
|
32
32
|
FeedsClientOptions,
|
|
33
33
|
NetworkChangedEvent,
|
|
34
34
|
StreamResponse,
|
|
35
|
-
} from '
|
|
36
|
-
import { ModerationClient } from '
|
|
37
|
-
import { StreamPoll } from '
|
|
35
|
+
} from '../common/types';
|
|
36
|
+
import { ModerationClient } from '../moderation-client';
|
|
37
|
+
import { StreamPoll } from '../common/Poll';
|
|
38
|
+
import {
|
|
39
|
+
Feed,
|
|
40
|
+
handleFollowCreated,
|
|
41
|
+
handleFollowDeleted,
|
|
42
|
+
handleFollowUpdated,
|
|
43
|
+
handleWatchStarted,
|
|
44
|
+
handleWatchStopped,
|
|
45
|
+
} from '../feed';
|
|
46
|
+
import { handleUserUpdated } from './event-handlers';
|
|
38
47
|
|
|
39
48
|
export type FeedsClientState = {
|
|
40
49
|
connected_user: OwnUser | undefined;
|
|
@@ -101,7 +110,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
101
110
|
}
|
|
102
111
|
} else {
|
|
103
112
|
for (const activeFeed of Object.values(this.activeFeeds)) {
|
|
104
|
-
|
|
113
|
+
handleWatchStopped.bind(activeFeed)();
|
|
105
114
|
}
|
|
106
115
|
}
|
|
107
116
|
break;
|
|
@@ -188,6 +197,10 @@ export class FeedsClient extends FeedsApi {
|
|
|
188
197
|
|
|
189
198
|
break;
|
|
190
199
|
}
|
|
200
|
+
case 'user.updated': {
|
|
201
|
+
handleUserUpdated.call(this, event);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
191
204
|
default: {
|
|
192
205
|
feed?.handleWSEvent(event as unknown as WSEvent);
|
|
193
206
|
}
|
|
@@ -338,7 +351,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
338
351
|
};
|
|
339
352
|
|
|
340
353
|
async queryFeeds(request?: QueryFeedsRequest) {
|
|
341
|
-
const response = await this.
|
|
354
|
+
const response = await this._queryFeeds(request);
|
|
342
355
|
|
|
343
356
|
const feeds = response.feeds.map((f) =>
|
|
344
357
|
this.getOrCreateActiveFeed(f.group_id, f.id, f, request?.watch),
|
|
@@ -363,18 +376,35 @@ export class FeedsClient extends FeedsApi {
|
|
|
363
376
|
this.eventDispatcher.dispatch(networkEvent);
|
|
364
377
|
};
|
|
365
378
|
|
|
379
|
+
async updateFollow(request: UpdateFollowRequest) {
|
|
380
|
+
const response = await super.updateFollow(request);
|
|
381
|
+
|
|
382
|
+
[
|
|
383
|
+
response.follow.source_feed.feed,
|
|
384
|
+
response.follow.target_feed.feed,
|
|
385
|
+
].forEach((fid) => {
|
|
386
|
+
const feed = this.activeFeeds[fid];
|
|
387
|
+
if (feed) {
|
|
388
|
+
handleFollowUpdated.bind(feed)(response);
|
|
389
|
+
}
|
|
390
|
+
});
|
|
391
|
+
|
|
392
|
+
return response;
|
|
393
|
+
}
|
|
394
|
+
|
|
366
395
|
// For follow API endpoints we update the state after HTTP response to allow queryFeeds with watch: false
|
|
367
|
-
async follow(request:
|
|
396
|
+
async follow(request: FollowRequest) {
|
|
368
397
|
const response = await super.follow(request);
|
|
369
398
|
|
|
370
|
-
[
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
399
|
+
[
|
|
400
|
+
response.follow.source_feed.feed,
|
|
401
|
+
response.follow.target_feed.feed,
|
|
402
|
+
].forEach((fid) => {
|
|
403
|
+
const feed = this.activeFeeds[fid];
|
|
404
|
+
if (feed) {
|
|
405
|
+
handleFollowCreated.bind(feed)(response);
|
|
406
|
+
}
|
|
407
|
+
});
|
|
378
408
|
|
|
379
409
|
return response;
|
|
380
410
|
}
|
|
@@ -383,25 +413,22 @@ export class FeedsClient extends FeedsApi {
|
|
|
383
413
|
const response = await super.followBatch(request);
|
|
384
414
|
|
|
385
415
|
response.follows.forEach((follow) => {
|
|
386
|
-
const feed = this.activeFeeds[follow.source_feed.
|
|
416
|
+
const feed = this.activeFeeds[follow.source_feed.feed];
|
|
387
417
|
if (feed) {
|
|
388
|
-
|
|
418
|
+
handleFollowCreated.bind(feed)({ follow });
|
|
389
419
|
}
|
|
390
420
|
});
|
|
391
421
|
|
|
392
422
|
return response;
|
|
393
423
|
}
|
|
394
424
|
|
|
395
|
-
async unfollow(request:
|
|
425
|
+
async unfollow(request: FollowRequest) {
|
|
396
426
|
const response = await super.unfollow(request);
|
|
397
427
|
|
|
398
428
|
[request.source, request.target].forEach((fid) => {
|
|
399
429
|
const feed = this.activeFeeds[fid];
|
|
400
430
|
if (feed) {
|
|
401
|
-
|
|
402
|
-
source_feed: { fid: request.source },
|
|
403
|
-
target_feed: { fid: request.target },
|
|
404
|
-
});
|
|
431
|
+
handleFollowDeleted.bind(feed)(response);
|
|
405
432
|
}
|
|
406
433
|
});
|
|
407
434
|
|
|
@@ -418,7 +445,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
418
445
|
const feed =
|
|
419
446
|
this.activeFeeds[`${request.feed_group_id}:${request.feed_id}`];
|
|
420
447
|
if (feed) {
|
|
421
|
-
|
|
448
|
+
handleWatchStopped.bind(feed)();
|
|
422
449
|
}
|
|
423
450
|
|
|
424
451
|
return response;
|
|
@@ -434,7 +461,7 @@ export class FeedsClient extends FeedsApi {
|
|
|
434
461
|
if (this.activeFeeds[fid]) {
|
|
435
462
|
const feed = this.activeFeeds[fid];
|
|
436
463
|
if (watch && !feed.currentState.watch) {
|
|
437
|
-
|
|
464
|
+
handleWatchStarted.bind(feed)();
|
|
438
465
|
}
|
|
439
466
|
return feed;
|
|
440
467
|
} else {
|