@amityco/ts-sdk 6.17.3-beac0a2.0 → 6.17.3-e382dbe.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/dist/@types/core/payload.d.ts +2 -0
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +2 -0
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/story.d.ts +18 -1
- package/dist/@types/domains/story.d.ts.map +1 -1
- package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
- package/dist/channelRepository/observers/getChannels/ChannelQueryStreamController.d.ts.map +1 -1
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/validateTexts.d.ts +8 -0
- package/dist/client/api/validateTexts.d.ts.map +1 -0
- package/dist/client/api/validateUrls.d.ts +8 -0
- package/dist/client/api/validateUrls.d.ts.map +1 -0
- package/dist/core/query/sorting.d.ts +6 -0
- package/dist/core/query/sorting.d.ts.map +1 -1
- package/dist/index.cjs.js +385 -39
- package/dist/index.esm.js +385 -40
- package/dist/index.umd.js +4 -4
- package/dist/storyRepository/api/createImageStory.d.ts.map +1 -1
- package/dist/storyRepository/api/createVideoStory.d.ts.map +1 -1
- package/dist/storyRepository/constants.d.ts +2 -0
- package/dist/storyRepository/constants.d.ts.map +1 -1
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts +14 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts +13 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts +16 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts +2 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.d.ts.map +1 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts +2 -0
- package/dist/storyRepository/observers/getGlobalStoryTargets/index.d.ts.map +1 -0
- package/dist/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.d.ts.map +1 -1
- package/dist/storyRepository/observers/index.d.ts +1 -0
- package/dist/storyRepository/observers/index.d.ts.map +1 -1
- package/dist/storyRepository/utils/StoryComputedValue.d.ts +23 -0
- package/dist/storyRepository/utils/StoryComputedValue.d.ts.map +1 -0
- package/dist/utils/linkedObject/storyLinkedObject.d.ts.map +1 -1
- package/dist/utils/linkedObject/storyTargetLinkedObject.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/payload.ts +4 -0
- package/src/@types/domains/client.ts +2 -0
- package/src/@types/domains/story.ts +22 -2
- package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +24 -1
- package/src/channelRepository/observers/getChannels/ChannelQueryStreamController.ts +4 -1
- package/src/client/api/createClient.ts +4 -0
- package/src/client/api/validateTexts.ts +23 -0
- package/src/client/api/validateUrls.ts +23 -0
- package/src/core/query/sorting.ts +8 -0
- package/src/storyRepository/api/createImageStory.ts +7 -0
- package/src/storyRepository/api/createVideoStory.ts +7 -0
- package/src/storyRepository/constants.ts +2 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.ts +153 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.ts +73 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.ts +94 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.ts +32 -0
- package/src/storyRepository/observers/getGlobalStoryTargets/index.ts +1 -0
- package/src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts +0 -2
- package/src/storyRepository/observers/index.ts +1 -0
- package/src/storyRepository/utils/StoryComputedValue.ts +144 -0
- package/src/utils/linkedObject/storyLinkedObject.ts +2 -1
- package/src/utils/linkedObject/storyTargetLinkedObject.ts +27 -4
- package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts +0 -6
- package/dist/storyRepository/utils/calculateHasUnseenFlag.d.ts.map +0 -1
- package/src/storyRepository/utils/calculateHasUnseenFlag.ts +0 -47
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createImageStory.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/api/createImageStory.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,eACf,MAAM,aAAa,CAAC,YAAY,CAAC,YACnC,MAAM,aAAa,CAAC,UAAU,CAAC,YAC/B,QAAQ,aACR,MAAM,QAAQ,qBACN,MAAM,gBAAgB,UACjC,MAAM,SAAS,EAAE,KACvB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"createImageStory.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/api/createImageStory.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,eACf,MAAM,aAAa,CAAC,YAAY,CAAC,YACnC,MAAM,aAAa,CAAC,UAAU,CAAC,YAC/B,QAAQ,aACR,MAAM,QAAQ,qBACN,MAAM,gBAAgB,UACjC,MAAM,SAAS,EAAE,KACvB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,CA2E/C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createVideoStory.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/api/createVideoStory.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,gBAAgB,eACf,MAAM,aAAa,CAAC,YAAY,CAAC,YACnC,MAAM,aAAa,CAAC,UAAU,CAAC,YAC/B,QAAQ,aACR,MAAM,QAAQ,UACjB,MAAM,SAAS,EAAE,KACvB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"createVideoStory.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/api/createVideoStory.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;GAYG;AAEH,eAAO,MAAM,gBAAgB,eACf,MAAM,aAAa,CAAC,YAAY,CAAC,YACnC,MAAM,aAAa,CAAC,UAAU,CAAC,YAC/B,QAAQ,aACR,MAAM,QAAQ,UACjB,MAAM,SAAS,EAAE,KACvB,QAAQ,MAAM,MAAM,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,CA0E/C,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export declare const enum STORY_KEY_CACHE {
|
|
2
2
|
STORY = "story",
|
|
3
|
+
STORY_TARGET = "storyTarget",
|
|
3
4
|
SYNC_STATE = "story-sync-state",
|
|
4
5
|
STORY_TARGET_IDS = "story-target-ids",
|
|
6
|
+
STORY_GLOBAL_FEED = "story-global-feed",
|
|
5
7
|
IS_SEEN = "story-seen",
|
|
6
8
|
LAST_SEEN = "story-last-seen",
|
|
7
9
|
EXPIRE = "story-expire",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/storyRepository/constants.ts"],"names":[],"mappings":"AAAA,0BAAkB,eAAe;IAC/B,KAAK,UAAU;IACf,UAAU,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,OAAO,eAAe;IACtB,SAAS,oBAAoB;IAC7B,MAAM,iBAAiB;IACvB,wBAAwB,oBAAoB;CAC7C"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/storyRepository/constants.ts"],"names":[],"mappings":"AAAA,0BAAkB,eAAe;IAC/B,KAAK,UAAU;IACf,YAAY,gBAAgB;IAC5B,UAAU,qBAAqB;IAC/B,gBAAgB,qBAAqB;IACrC,iBAAiB,sBAAsB;IACvC,OAAO,eAAe;IACtB,SAAS,oBAAoB;IAC7B,MAAM,iBAAiB;IACvB,wBAAwB,oBAAoB;CAC7C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
2
|
+
import { GlobalStoryPageController } from './GlobalStoryPageController';
|
|
3
|
+
export declare class GlobalStoryLiveCollectionController extends LiveCollectionController<'globalStoryFeed', Amity.StoryGlobalQuery, Amity.StoryTarget, GlobalStoryPageController> {
|
|
4
|
+
private queryStreamController;
|
|
5
|
+
private query;
|
|
6
|
+
constructor(query: Amity.StoryGlobalQuery, callback: Amity.LiveCollectionCallback<Amity.StoryTarget>);
|
|
7
|
+
protected setup(): void;
|
|
8
|
+
protected persistModel(response: Amity.GlobalStoryFeedPayload): void;
|
|
9
|
+
protected persistQueryStream({ response, direction, refresh, }: Amity.LiveCollectionPersistQueryStreamParams<'globalStoryFeed'>): void;
|
|
10
|
+
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams): void;
|
|
11
|
+
private applyFilter;
|
|
12
|
+
startSubscription(): Amity.Unsubscriber[];
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=GlobalStoryLiveCollectionController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalStoryLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAU1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAQxE,qBAAa,mCAAoC,SAAQ,wBAAwB,CAC/E,iBAAiB,EACjB,KAAK,CAAC,gBAAgB,EACtB,KAAK,CAAC,WAAW,EACjB,yBAAyB,CAC1B;IACC,OAAO,CAAC,qBAAqB,CAAmC;IAEhE,OAAO,CAAC,KAAK,CAAyB;gBAGpC,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAC7B,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,WAAW,CAAC;IAsB3D,SAAS,CAAC,KAAK;IAUf,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB;IAI7D,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,iBAAiB,CAAC;IAIlE,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAyBzE,OAAO,CAAC,WAAW;IAuCnB,iBAAiB;CAalB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PaginationController } from '~/core/liveCollection/PaginationController';
|
|
2
|
+
declare type GlobalStoryFeedResult = Amity.GlobalStoryFeedPayload & Amity.Pagination;
|
|
3
|
+
export declare class GlobalStoryPageController extends PaginationController<'globalStoryFeed', Amity.LiveCollectionParams<Amity.StoryGlobalQuery>> {
|
|
4
|
+
private smartFilterState;
|
|
5
|
+
getRequest(queryParams: Amity.LiveCollectionParams<Amity.StoryGlobalQuery>, token: string | undefined): Promise<GlobalStoryFeedResult>;
|
|
6
|
+
createRequest(params: {
|
|
7
|
+
seenState: Amity.StorySeenQuery;
|
|
8
|
+
limit: number;
|
|
9
|
+
token?: string;
|
|
10
|
+
}): Promise<GlobalStoryFeedResult>;
|
|
11
|
+
}
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=GlobalStoryPageController.d.ts.map
|
package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalStoryPageController.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryPageController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAC;AAElF,aAAK,qBAAqB,GAAG,KAAK,CAAC,sBAAsB,GAAG,KAAK,CAAC,UAAU,CAAC;AA2B7E,qBAAa,yBAA0B,SAAQ,oBAAoB,CACjE,iBAAiB,EACjB,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACnD;IACC,OAAO,CAAC,gBAAgB,CAA+B;IAEjD,UAAU,CACd,WAAW,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAC/D,KAAK,EAAE,MAAM,GAAG,SAAS;IAyBrB,aAAa,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,KAAK,CAAC,cAAc,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;CAU/F"}
|
package/dist/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
|
|
2
|
+
import { GlobalStoryPageController } from './GlobalStoryPageController';
|
|
3
|
+
export declare class GlobalStoryQueryStreamController extends QueryStreamController<Amity.GlobalStoryFeedPayload, Amity.LiveCollectionParams<Amity.StoryGlobalQuery>> {
|
|
4
|
+
private notifyChange;
|
|
5
|
+
private preparePayload;
|
|
6
|
+
private paginationController;
|
|
7
|
+
constructor(query: Amity.LiveCollectionParams<Amity.StoryGlobalQuery>, cacheKey: string[], notifyChange: (params: Amity.LiveCollectionNotifyParams) => void, paginationController: GlobalStoryPageController);
|
|
8
|
+
saveToMainDB(response: Amity.GlobalStoryFeedPayload): void;
|
|
9
|
+
appendToQueryStream(response: Amity.GlobalStoryFeedPayload, direction: Amity.LiveCollectionPageDirection, refresh?: boolean): void;
|
|
10
|
+
reactor(actionType: Amity.StoryActionType): (payload: Amity.InternalStory[]) => void;
|
|
11
|
+
subscribeRTE(createSubscriber: {
|
|
12
|
+
fn: (reactor: Amity.Listener<Amity.InternalStory[]>) => Amity.Unsubscriber;
|
|
13
|
+
action: Amity.StoryActionType;
|
|
14
|
+
}[]): Amity.Unsubscriber[];
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=GlobalStoryQueryStreamController.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GlobalStoryQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryQueryStreamController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAIpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAYxE,qBAAa,gCAAiC,SAAQ,qBAAqB,CACzE,KAAK,CAAC,sBAAsB,EAC5B,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,CACnD;IACC,OAAO,CAAC,YAAY,CAAqD;IAEzE,OAAO,CAAC,cAAc,CAA2E;IAEjG,OAAO,CAAC,oBAAoB,CAA4B;gBAGtD,KAAK,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,gBAAgB,CAAC,EACzD,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,KAAK,IAAI,EAChE,oBAAoB,EAAE,yBAAyB;IAUjD,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,sBAAsB;IAYnD,mBAAmB,CACjB,QAAQ,EAAE,KAAK,CAAC,sBAAsB,EACtC,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAC5C,OAAO,UAAQ;IAcjB,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,aACtB,MAAM,aAAa,EAAE;IAexC,YAAY,CACV,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;QAC3E,MAAM,EAAE,KAAK,CAAC,eAAe,CAAC;KAC/B,EAAE;CAIN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getGlobalStoryTargets.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getGlobalStoryTargets/getGlobalStoryTargets.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,qBAAqB,WACxB,MAAM,oBAAoB,CAAC,MAAM,gBAAgB,CAAC,YAChD,MAAM,sBAAsB,CAAC,MAAM,WAAW,CAAC,WAChD,MAAM,oBAAoB,eAuBpC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getGlobalStoryTargets/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoryPaginationNoPageController.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StoryPaginationNoPageController.d.ts","sourceRoot":"","sources":["../../../../src/storyRepository/observers/getStoriesByTargetIds/StoryPaginationNoPageController.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AAE9F,qBAAa,+BAAgC,SAAQ,0BAA0B,CAC7E,OAAO,EACP,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAC3C;IACO,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,SAAS,CAAC;CASzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/observers/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare class StoryComputedValue {
|
|
2
|
+
private readonly _targetId;
|
|
3
|
+
private readonly _lastStoryExpiresAt?;
|
|
4
|
+
private readonly _lastStorySeenExpiresAt?;
|
|
5
|
+
private cacheStoryExpireTime?;
|
|
6
|
+
private cacheStoreSeenTime?;
|
|
7
|
+
private _syncingStoriesCount;
|
|
8
|
+
private _syncedStoriesCount;
|
|
9
|
+
private _errorStoriesCount;
|
|
10
|
+
constructor(targetId: string, lastStoryExpiresAt?: Amity.timestamp, lastStorySeenExpiresAt?: Amity.timestamp);
|
|
11
|
+
get lastStoryExpiresAt(): number;
|
|
12
|
+
get lastStorySeenExpiresAt(): number;
|
|
13
|
+
get localLastStoryExpires(): number;
|
|
14
|
+
get localLastStorySeenExpiresAt(): number;
|
|
15
|
+
get isContainUnSyncedStory(): boolean;
|
|
16
|
+
getLocalLastSortingDate(): number;
|
|
17
|
+
getHasUnseenFlag(): boolean;
|
|
18
|
+
getTotalStoryByStatus(): void;
|
|
19
|
+
get syncedStoriesCount(): number;
|
|
20
|
+
get syncingStoriesCount(): number;
|
|
21
|
+
get failedStoriesCount(): number;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=StoryComputedValue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StoryComputedValue.d.ts","sourceRoot":"","sources":["../../../src/storyRepository/utils/StoryComputedValue.ts"],"names":[],"mappings":"AAGA,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAkB;IAEvD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAkB;IAE3D,OAAO,CAAC,oBAAoB,CAAC,CAAgC;IAE7D,OAAO,CAAC,kBAAkB,CAAC,CAAgC;IAE3D,OAAO,CAAC,oBAAoB,CAAK;IAEjC,OAAO,CAAC,mBAAmB,CAAK;IAEhC,OAAO,CAAC,kBAAkB,CAAK;gBAG7B,QAAQ,EAAE,MAAM,EAChB,kBAAkB,CAAC,EAAE,KAAK,CAAC,SAAS,EACpC,sBAAsB,CAAC,EAAE,KAAK,CAAC,SAAS;IAqB1C,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,sBAAsB,IAAI,MAAM,CAEnC;IAED,IAAI,qBAAqB,IAAI,MAAM,CAIlC;IAED,IAAI,2BAA2B,IAAI,MAAM,CAExC;IAED,IAAI,sBAAsB,IAAI,OAAO,CASpC;IAED,uBAAuB,IAAI,MAAM;IAQjC,gBAAgB,IAAI,OAAO;IAiB3B,qBAAqB,IAAI,IAAI;IAkC7B,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storyLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/storyLinkedObject.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,UAAW,MAAM,aAAa,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"storyLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/storyLinkedObject.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,UAAW,MAAM,aAAa,KAAG,MAAM,KAyGpE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storyTargetLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/storyTargetLinkedObject.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,cAAc,KAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"storyTargetLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/storyTargetLinkedObject.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,gBAAiB,MAAM,cAAc,KAAG,MAAM,WAiCjF,CAAC"}
|
package/package.json
CHANGED
|
@@ -18,6 +18,7 @@ declare global {
|
|
|
18
18
|
poll: Amity.PollPayload;
|
|
19
19
|
stream: Amity.StreamPayload;
|
|
20
20
|
story: Amity.StoryPayload;
|
|
21
|
+
globalStoryFeed: Amity.GlobalStoryFeedPayload;
|
|
21
22
|
reaction: Amity.ReactionPayload;
|
|
22
23
|
};
|
|
23
24
|
|
|
@@ -315,6 +316,9 @@ declare global {
|
|
|
315
316
|
storyTargets: Amity.RawStoryTarget[];
|
|
316
317
|
};
|
|
317
318
|
|
|
319
|
+
type GlobalStoryFeedPayload = Omit<Amity.StoryBasePayload, 'comments'> &
|
|
320
|
+
Amity.StoryTargetPayload;
|
|
321
|
+
|
|
318
322
|
// Original Payload form BE
|
|
319
323
|
type StoryPayload = {
|
|
320
324
|
stories: Amity.RawStory[];
|
|
@@ -41,6 +41,8 @@ declare global {
|
|
|
41
41
|
emitter: Emitter<Amity.Events>;
|
|
42
42
|
|
|
43
43
|
hasPermission: (permission: string) => Amity.PermissionChecker;
|
|
44
|
+
validateUrls: (urls: string[]) => Promise<boolean>;
|
|
45
|
+
validateTexts: (texts: string[]) => Promise<boolean>;
|
|
44
46
|
|
|
45
47
|
sessionState: Amity.SessionStates;
|
|
46
48
|
sessionHandler?: Amity.SessionHandler;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { VideoResolution } from './file';
|
|
2
2
|
|
|
3
|
-
export {};
|
|
4
|
-
|
|
5
3
|
declare global {
|
|
6
4
|
namespace Amity {
|
|
7
5
|
type CommunityStorySettings = {
|
|
@@ -33,11 +31,22 @@ declare global {
|
|
|
33
31
|
Video = 'video',
|
|
34
32
|
}
|
|
35
33
|
|
|
34
|
+
const enum StorySeenQuery {
|
|
35
|
+
SEEN = 'seen',
|
|
36
|
+
UNSEEN = 'unseen',
|
|
37
|
+
ALL = 'all',
|
|
38
|
+
SMART = 'smart',
|
|
39
|
+
}
|
|
40
|
+
|
|
36
41
|
type StorySortOption = {
|
|
37
42
|
sortBy?: StorySortBy;
|
|
38
43
|
orderBy?: 'asc' | 'desc';
|
|
39
44
|
};
|
|
40
45
|
|
|
46
|
+
type StoryGlobalQuery = {
|
|
47
|
+
seenState: Amity.StorySeenQuery;
|
|
48
|
+
};
|
|
49
|
+
|
|
41
50
|
type RawStoryTarget = {
|
|
42
51
|
lastStoryExpiresAt?: Amity.timestamp;
|
|
43
52
|
lastStorySeenExpiresAt?: Amity.timestamp;
|
|
@@ -45,6 +54,7 @@ declare global {
|
|
|
45
54
|
targetType: string;
|
|
46
55
|
targetPublicId: string;
|
|
47
56
|
targetUpdatedAt: Amity.timestamp;
|
|
57
|
+
localFilter?: Amity.StorySeenQuery;
|
|
48
58
|
};
|
|
49
59
|
|
|
50
60
|
type StoryTargetQueryParam = Pick<Amity.RawStoryTarget, 'targetId' | 'targetType'>;
|
|
@@ -65,6 +75,16 @@ declare global {
|
|
|
65
75
|
type StoryTarget = Pick<Amity.RawStoryTarget, 'targetId' | 'targetType'> & {
|
|
66
76
|
updatedAt: Amity.timestamp;
|
|
67
77
|
hasUnseen: boolean;
|
|
78
|
+
lastStoryExpiresAt?: Amity.timestamp;
|
|
79
|
+
|
|
80
|
+
localLastExpires: number;
|
|
81
|
+
localLastSeen: number;
|
|
82
|
+
localSortingDate: number;
|
|
83
|
+
localFilter?: Amity.StorySeenQuery;
|
|
84
|
+
|
|
85
|
+
syncedStoriesCount: number;
|
|
86
|
+
syncingStoriesCount: number;
|
|
87
|
+
failedStoriesCount: number;
|
|
68
88
|
};
|
|
69
89
|
|
|
70
90
|
type StoryItemData<T extends StoryItemType> = T extends 'hyperlink'
|
|
@@ -278,7 +278,30 @@ export class ChannelLiveCollectionController extends LiveCollectionController<
|
|
|
278
278
|
{ fn: onChannelUpdated, action: 'onUpdate' },
|
|
279
279
|
{ fn: onChannelMuted, action: 'onMute' },
|
|
280
280
|
{ fn: onChannelJoined, action: 'onJoin' },
|
|
281
|
-
{
|
|
281
|
+
{
|
|
282
|
+
fn: (reactor: Amity.Listener<Amity.InternalChannel>) => {
|
|
283
|
+
const callback = (
|
|
284
|
+
channel: Amity.InternalChannel,
|
|
285
|
+
member: Amity.Membership<'channel'>,
|
|
286
|
+
) => {
|
|
287
|
+
const { userId } = getActiveClient();
|
|
288
|
+
// if query for channel member and user is not a member, remove channelId from curren collection
|
|
289
|
+
if (this.query.membership === 'member' && userId === member.userId) {
|
|
290
|
+
const collection = pullFromCache<Amity.ChannelLiveCollectionCache>(
|
|
291
|
+
this.cacheKey,
|
|
292
|
+
)?.data;
|
|
293
|
+
|
|
294
|
+
pushToCache(this.cacheKey, {
|
|
295
|
+
...collection,
|
|
296
|
+
data: collection?.data.filter(c => c !== channel.channelId) ?? [],
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
return reactor(channel);
|
|
300
|
+
};
|
|
301
|
+
return onChannelLeft(callback);
|
|
302
|
+
},
|
|
303
|
+
action: 'onLeft',
|
|
304
|
+
},
|
|
282
305
|
{ fn: onChannelMemberAdded, action: 'onMemberAdded' },
|
|
283
306
|
{ fn: onChannelMemberRemoved, action: 'onMemberRemoved' },
|
|
284
307
|
{
|
|
@@ -69,7 +69,10 @@ export class ChannelQueryStreamController extends QueryStreamController<
|
|
|
69
69
|
const collection = pullFromCache<Amity.ChannelLiveCollectionCache>(this.cacheKey)?.data;
|
|
70
70
|
if (!collection) return;
|
|
71
71
|
|
|
72
|
-
if (
|
|
72
|
+
if (
|
|
73
|
+
this.paginationController instanceof ChannelPaginationController &&
|
|
74
|
+
action === 'onCreate'
|
|
75
|
+
) {
|
|
73
76
|
collection.data = [...new Set([payload.channelId, ...collection.data])];
|
|
74
77
|
pushToCache(this.cacheKey, collection);
|
|
75
78
|
}
|
|
@@ -14,6 +14,8 @@ import { createEventEmitter } from '~/core/events';
|
|
|
14
14
|
import { getMessagePreviewSetting } from '~/client/utils/messagePreviewEngine';
|
|
15
15
|
import { getSocialSettings } from '~/client/api/getSocialSettings';
|
|
16
16
|
import { hasPermission } from '~/client/utils/hasPermission';
|
|
17
|
+
import { validateUrls } from './validateUrls';
|
|
18
|
+
import { validateTexts } from './validateTexts';
|
|
17
19
|
import { getActiveClient, setActiveClient } from './activeClient';
|
|
18
20
|
import { getFeedSettings } from './getFeedSettings';
|
|
19
21
|
|
|
@@ -101,6 +103,8 @@ export const createClient = (
|
|
|
101
103
|
sessionHandler,
|
|
102
104
|
|
|
103
105
|
hasPermission,
|
|
106
|
+
validateUrls,
|
|
107
|
+
validateTexts,
|
|
104
108
|
getFeedSettings,
|
|
105
109
|
getSocialSettings,
|
|
106
110
|
getMessagePreviewSetting,
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getActiveClient } from './activeClient';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Validate a list of texts
|
|
5
|
+
* @param texts array of strings to validate (max 10 items)
|
|
6
|
+
*
|
|
7
|
+
* @category Client API
|
|
8
|
+
*/
|
|
9
|
+
export const validateTexts = async (texts: string[]): Promise<boolean> => {
|
|
10
|
+
const client = getActiveClient();
|
|
11
|
+
client.log('channel/markerSync');
|
|
12
|
+
|
|
13
|
+
if (texts.length === 0) return false;
|
|
14
|
+
|
|
15
|
+
const { data: payload } = await client.http.post<{ success: boolean }>(
|
|
16
|
+
'/api/v3/blocklists/verify',
|
|
17
|
+
{
|
|
18
|
+
data: texts,
|
|
19
|
+
},
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return payload.success;
|
|
23
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { getActiveClient } from './activeClient';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Validate a list of urls
|
|
5
|
+
* @param urls array of strings to validate (max 10 items)
|
|
6
|
+
*
|
|
7
|
+
* @category Client API
|
|
8
|
+
*/
|
|
9
|
+
export const validateUrls = async (urls: string[]): Promise<boolean> => {
|
|
10
|
+
const client = getActiveClient();
|
|
11
|
+
client.log('channel/markerSync');
|
|
12
|
+
|
|
13
|
+
if (urls.length === 0) return false;
|
|
14
|
+
|
|
15
|
+
const { data: payload } = await client.http.post<{ success: boolean }>(
|
|
16
|
+
'/api/v3/allowlists/verify',
|
|
17
|
+
{
|
|
18
|
+
data: urls,
|
|
19
|
+
},
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
return payload.success;
|
|
23
|
+
};
|
|
@@ -45,6 +45,14 @@ export const sortByFirstCreated: SortingFunc<{ createdAt: Date | number | string
|
|
|
45
45
|
{ createdAt: b },
|
|
46
46
|
) => new Date(a).valueOf() - new Date(b).valueOf();
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Sorting a story-collection by its localSortingDate
|
|
50
|
+
*/
|
|
51
|
+
export const sortByLocalSortingDate: SortingFunc<{
|
|
52
|
+
localSortingDate: Date | number | string;
|
|
53
|
+
}> = ({ localSortingDate: a }, { localSortingDate: b }) =>
|
|
54
|
+
new Date(b).getTime() - new Date(a).getTime();
|
|
55
|
+
|
|
48
56
|
/**
|
|
49
57
|
* Sorting a collection by its newest items
|
|
50
58
|
*/
|
|
@@ -50,8 +50,15 @@ export const createImageStory = async (
|
|
|
50
50
|
metadata,
|
|
51
51
|
};
|
|
52
52
|
|
|
53
|
+
const date = new Date();
|
|
53
54
|
pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
|
|
54
55
|
|
|
56
|
+
// Update local story expires time
|
|
57
|
+
pushToCache(
|
|
58
|
+
[STORY_KEY_CACHE.EXPIRE, targetId],
|
|
59
|
+
new Date(date.setFullYear(date.getFullYear() + 1)),
|
|
60
|
+
);
|
|
61
|
+
|
|
55
62
|
// Fire optimistic event
|
|
56
63
|
createOptimisticEvent({ payload, formData }, optimisticData => {
|
|
57
64
|
fireEvent('local.story.created', optimisticData);
|
|
@@ -47,8 +47,15 @@ export const createVideoStory = async (
|
|
|
47
47
|
metadata,
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
+
const date = new Date();
|
|
50
51
|
pushToCache([STORY_KEY_CACHE.SYNC_STATE, targetId], Amity.SyncState.Syncing);
|
|
51
52
|
|
|
53
|
+
// Update local story expires time
|
|
54
|
+
pushToCache(
|
|
55
|
+
[STORY_KEY_CACHE.EXPIRE, targetId],
|
|
56
|
+
new Date(date.setFullYear(date.getFullYear() + 1)),
|
|
57
|
+
);
|
|
58
|
+
|
|
52
59
|
// Fire optimistic event
|
|
53
60
|
createOptimisticEvent({ payload, formData, isVideo: true }, optimisticData => {
|
|
54
61
|
fireEvent('local.story.created', optimisticData);
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
export const enum STORY_KEY_CACHE {
|
|
2
2
|
STORY = 'story',
|
|
3
|
+
STORY_TARGET = 'storyTarget',
|
|
3
4
|
SYNC_STATE = 'story-sync-state',
|
|
4
5
|
STORY_TARGET_IDS = 'story-target-ids',
|
|
6
|
+
STORY_GLOBAL_FEED = 'story-global-feed',
|
|
5
7
|
IS_SEEN = 'story-seen',
|
|
6
8
|
LAST_SEEN = 'story-last-seen',
|
|
7
9
|
EXPIRE = 'story-expire',
|
package/src/storyRepository/observers/getGlobalStoryTargets/GlobalStoryLiveCollectionController.ts
ADDED
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import hash from 'object-hash';
|
|
2
|
+
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
3
|
+
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
4
|
+
import { LinkedObject } from '~/utils/linkedObject';
|
|
5
|
+
import { STORY_KEY_CACHE } from '~/storyRepository/constants';
|
|
6
|
+
import { sortByLocalSortingDate } from '~/core/query';
|
|
7
|
+
import { onStoryCreated, onStoryCreatedLocal } from '~/storyRepository/events/onStoryCreated';
|
|
8
|
+
import { onStoryUpdated, onStoryUpdatedLocal } from '~/storyRepository/events/onStoryUpdated';
|
|
9
|
+
import { onStoryDeleted, onStoryDeletedLocal } from '~/storyRepository/events/onStoryDeleted';
|
|
10
|
+
import { onStoryError } from '~/storyRepository/events/onStoryError';
|
|
11
|
+
import { GlobalStoryQueryStreamController } from './GlobalStoryQueryStreamController';
|
|
12
|
+
import { GlobalStoryPageController } from './GlobalStoryPageController';
|
|
13
|
+
|
|
14
|
+
type StoryTargetBySeenState = {
|
|
15
|
+
seen: Amity.StoryTarget[];
|
|
16
|
+
unseen: Amity.StoryTarget[];
|
|
17
|
+
unknown: Amity.StoryTarget[];
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export class GlobalStoryLiveCollectionController extends LiveCollectionController<
|
|
21
|
+
'globalStoryFeed',
|
|
22
|
+
Amity.StoryGlobalQuery,
|
|
23
|
+
Amity.StoryTarget,
|
|
24
|
+
GlobalStoryPageController
|
|
25
|
+
> {
|
|
26
|
+
private queryStreamController: GlobalStoryQueryStreamController;
|
|
27
|
+
|
|
28
|
+
private query: Amity.StoryGlobalQuery;
|
|
29
|
+
|
|
30
|
+
constructor(
|
|
31
|
+
query: Amity.StoryGlobalQuery,
|
|
32
|
+
callback: Amity.LiveCollectionCallback<Amity.StoryTarget>,
|
|
33
|
+
) {
|
|
34
|
+
const queryStreamId = hash(query);
|
|
35
|
+
const cacheKey = [STORY_KEY_CACHE.STORY_GLOBAL_FEED, 'collection', queryStreamId];
|
|
36
|
+
const paginationController = new GlobalStoryPageController(query);
|
|
37
|
+
|
|
38
|
+
super(paginationController, queryStreamId, cacheKey, callback);
|
|
39
|
+
|
|
40
|
+
this.query = query;
|
|
41
|
+
|
|
42
|
+
this.queryStreamController = new GlobalStoryQueryStreamController(
|
|
43
|
+
this.query,
|
|
44
|
+
this.cacheKey,
|
|
45
|
+
this.notifyChange.bind(this),
|
|
46
|
+
paginationController,
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
this.paginationController = paginationController;
|
|
50
|
+
this.callback = callback.bind(this);
|
|
51
|
+
this.loadPage(true);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
protected setup() {
|
|
55
|
+
const collection = pullFromCache<Amity.StoryTargetLiveCollectionCache>(this.cacheKey)?.data;
|
|
56
|
+
if (!collection) {
|
|
57
|
+
pushToCache(this.cacheKey, {
|
|
58
|
+
data: [],
|
|
59
|
+
params: {},
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
protected persistModel(response: Amity.GlobalStoryFeedPayload) {
|
|
65
|
+
this.queryStreamController.saveToMainDB(response);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
protected persistQueryStream({
|
|
69
|
+
response,
|
|
70
|
+
direction,
|
|
71
|
+
refresh,
|
|
72
|
+
}: Amity.LiveCollectionPersistQueryStreamParams<'globalStoryFeed'>) {
|
|
73
|
+
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
|
|
77
|
+
const collection = pullFromCache<Amity.StoryTargetLiveCollectionCache>(this.cacheKey)?.data;
|
|
78
|
+
if (!collection) return;
|
|
79
|
+
|
|
80
|
+
let data = collection.data
|
|
81
|
+
.map(
|
|
82
|
+
targetId =>
|
|
83
|
+
pullFromCache<Amity.RawStoryTarget>([STORY_KEY_CACHE.STORY_TARGET, 'get', targetId])!,
|
|
84
|
+
)
|
|
85
|
+
.filter(Boolean)
|
|
86
|
+
.map(storyTarget => LinkedObject.storyTarget(storyTarget.data));
|
|
87
|
+
|
|
88
|
+
if (!this.shouldNotify(data) && origin === 'event') return;
|
|
89
|
+
|
|
90
|
+
data = this.applyFilter(data);
|
|
91
|
+
|
|
92
|
+
this.callback({
|
|
93
|
+
onNextPage: () => this.loadPage(false, Amity.LiveCollectionPageDirection.NEXT),
|
|
94
|
+
data,
|
|
95
|
+
hasNextPage: !!this.paginationController.getNextToken(),
|
|
96
|
+
loading,
|
|
97
|
+
error,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
private applyFilter(data: Amity.StoryTarget[]) {
|
|
102
|
+
if (this.query.seenState !== Amity.StorySeenQuery.SMART) {
|
|
103
|
+
return data
|
|
104
|
+
.filter(({ hasUnseen }) => {
|
|
105
|
+
if (this.query.seenState === Amity.StorySeenQuery.ALL) return true;
|
|
106
|
+
if (this.query.seenState === Amity.StorySeenQuery.SEEN && !hasUnseen) return true;
|
|
107
|
+
return this.query.seenState === Amity.StorySeenQuery.UNSEEN && hasUnseen;
|
|
108
|
+
})
|
|
109
|
+
.sort(sortByLocalSortingDate);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Smart Filter - Apply local sorting on each list of data
|
|
113
|
+
const result = data.reduce<StoryTargetBySeenState>(
|
|
114
|
+
(acc, storyTarget) => {
|
|
115
|
+
if (storyTarget.localFilter === Amity.StorySeenQuery.UNSEEN) {
|
|
116
|
+
acc.unseen.push(storyTarget);
|
|
117
|
+
} else if (storyTarget.localFilter === Amity.StorySeenQuery.SEEN) {
|
|
118
|
+
acc.seen.push(storyTarget);
|
|
119
|
+
} else {
|
|
120
|
+
acc.unknown.push(storyTarget);
|
|
121
|
+
}
|
|
122
|
+
return acc;
|
|
123
|
+
},
|
|
124
|
+
{ unseen: [], seen: [], unknown: [] },
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
const sortedUnknown = result.unknown.sort(sortByLocalSortingDate) || [];
|
|
128
|
+
const sortedUnseen = result.unseen.sort(sortByLocalSortingDate) || [];
|
|
129
|
+
const sortedSeen = result.seen.sort(sortByLocalSortingDate) || [];
|
|
130
|
+
|
|
131
|
+
// Merge all status and remove internal fields
|
|
132
|
+
return sortedUnknown
|
|
133
|
+
.concat(sortedUnseen, sortedSeen)
|
|
134
|
+
.map(
|
|
135
|
+
({ localFilter, localLastExpires, localLastSeen, localSortingDate, ...rest }) =>
|
|
136
|
+
rest as Amity.StoryTarget,
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
startSubscription() {
|
|
141
|
+
return this.queryStreamController.subscribeRTE([
|
|
142
|
+
{ fn: onStoryCreated, action: Amity.StoryActionType.OnCreate },
|
|
143
|
+
{ fn: onStoryUpdated, action: Amity.StoryActionType.OnUpdate },
|
|
144
|
+
{ fn: onStoryDeleted, action: Amity.StoryActionType.OnDelete },
|
|
145
|
+
|
|
146
|
+
{ fn: onStoryCreatedLocal, action: Amity.StoryActionType.OnCreate },
|
|
147
|
+
{ fn: onStoryUpdatedLocal, action: Amity.StoryActionType.OnUpdate },
|
|
148
|
+
{ fn: onStoryDeletedLocal, action: Amity.StoryActionType.OnDelete },
|
|
149
|
+
|
|
150
|
+
{ fn: onStoryError, action: Amity.StoryActionType.OnError },
|
|
151
|
+
]);
|
|
152
|
+
}
|
|
153
|
+
}
|