@amityco/ts-sdk-react-native 6.26.3 → 6.26.4-b4d0c1f.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/.env +26 -26
- package/dist/@types/core/model.d.ts +5 -5
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/domains/ad.d.ts +14 -2
- package/dist/@types/domains/ad.d.ts.map +1 -1
- package/dist/@types/domains/message.d.ts +4 -1
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/adRepository/api/getNetworkAds.d.ts.map +1 -1
- package/dist/analytic/service/analytic/AnalyticsEngine.d.ts +2 -2
- package/dist/analytic/service/analytic/AnalyticsEngine.d.ts.map +1 -1
- package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts +11 -5
- package/dist/analytic/service/analytic/AnalyticsEventCapturer.d.ts.map +1 -1
- package/dist/index.cjs.js +282 -263
- package/dist/index.esm.js +282 -263
- package/dist/index.umd.js +3 -3
- package/dist/messageRepository/api/createMessage.d.ts +7 -25
- package/dist/messageRepository/api/createMessage.d.ts.map +1 -1
- package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts +4 -4
- package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessages/MessageQueryStreamController.d.ts.map +1 -1
- package/dist/messageRepository/utils/prepareMessagePayload.d.ts.map +1 -1
- package/dist/postRepository/observers/getPost.d.ts.map +1 -1
- package/dist/utils/linkedObject/adLinkedObject.d.ts +1 -1
- package/dist/utils/linkedObject/adLinkedObject.d.ts.map +1 -1
- package/dist/utils/linkedObject/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/@types/core/model.ts +5 -5
- package/src/@types/domains/ad.ts +17 -6
- package/src/@types/domains/message.ts +6 -1
- package/src/adRepository/api/getNetworkAds.ts +22 -8
- package/src/analytic/service/analytic/AnalyticsEngine.ts +2 -2
- package/src/analytic/service/analytic/AnalyticsEventCapturer.ts +45 -27
- package/src/core/model/idResolvers.ts +1 -1
- package/src/messageRepository/api/createMessage.ts +83 -98
- package/src/messageRepository/events/onMessageCreated.ts +12 -6
- package/src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts +26 -24
- package/src/messageRepository/observers/getMessages/MessageQueryStreamController.ts +3 -2
- package/src/messageRepository/observers/observeMessages.ts +3 -3
- package/src/messageRepository/utils/prepareMessagePayload.ts +1 -1
- package/src/postRepository/observers/getPost.ts +8 -1
- package/src/utils/linkedObject/adLinkedObject.ts +11 -11
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
declare type createMessageParam<T extends Amity.MessageContentType> = Pick<Amity.Message<T>, 'subChannelId' | 'parentId' | 'dataType' | 'tags' | 'metadata' | 'mentionees'> & {
|
|
2
|
+
data?: Amity.Message<T>['data'];
|
|
3
|
+
fileId?: Amity.File['fileId'];
|
|
4
|
+
referenceId?: string;
|
|
5
|
+
};
|
|
1
6
|
/**
|
|
2
7
|
* ```js
|
|
3
8
|
* import { createMessage, createQuery, runQuery } from '@amityco/ts-sdk-react-native'
|
|
@@ -20,29 +25,6 @@
|
|
|
20
25
|
* @category Message API
|
|
21
26
|
* @async
|
|
22
27
|
*/
|
|
23
|
-
export declare const createMessage:
|
|
24
|
-
|
|
25
|
-
data?: Amity.ContentData<T> | undefined;
|
|
26
|
-
fileId?: string | undefined;
|
|
27
|
-
referenceId?: string | undefined;
|
|
28
|
-
}): Promise<Amity.Cached<Amity.Message>>;
|
|
29
|
-
/**
|
|
30
|
-
* ```js
|
|
31
|
-
* import { createMessage } from '@amityco/ts-sdk-react-native'
|
|
32
|
-
*
|
|
33
|
-
* const created = createMessage.optimistically({
|
|
34
|
-
* channelId: 'foobar',
|
|
35
|
-
* data: { text: 'hello world' }
|
|
36
|
-
* })
|
|
37
|
-
* ```
|
|
38
|
-
*
|
|
39
|
-
* Creates an {@link Amity.Message} in cache
|
|
40
|
-
*
|
|
41
|
-
* @param bundle The data necessary to create a new {@link Amity.Message}
|
|
42
|
-
* @returns The newly created {@link Amity.Message}
|
|
43
|
-
*
|
|
44
|
-
* @category Message API
|
|
45
|
-
*/
|
|
46
|
-
optimistically({ referenceId, ...bundle }: Parameters<typeof createMessage>[0]): Amity.Cached<Amity.Message> | undefined;
|
|
47
|
-
};
|
|
28
|
+
export declare const createMessage: <T extends Amity.MessageContentType>(bundle: createMessageParam<T>) => Promise<Amity.Cached<Amity.Message>>;
|
|
29
|
+
export {};
|
|
48
30
|
//# sourceMappingURL=createMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createMessage.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/api/createMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"createMessage.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/api/createMessage.ts"],"names":[],"mappings":"AAmBA,aAAK,kBAAkB,CAAC,CAAC,SAAS,KAAK,CAAC,kBAAkB,IAAI,IAAI,CAChE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAChB,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAC9E,GAAG;IACF,IAAI,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAgEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,yEAEvB,QAAQ,MAAM,MAAM,CAAC,MAAM,OAAO,CAAC,CAsCrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onMessageCreated.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/events/onMessageCreated.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,aACrB,MAAM,QAAQ,CAAC,MAAM,eAAe,CAAC,KAC9C,MAAM,YA+BR,CAAC;AAEF,eAAO,MAAM,qBAAqB,aACtB,MAAM,QAAQ,CAAC,MAAM,eAAe,CAAC,KAC9C,MAAM,
|
|
1
|
+
{"version":3,"file":"onMessageCreated.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/events/onMessageCreated.ts"],"names":[],"mappings":"AASA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,oBAAoB,aACrB,MAAM,QAAQ,CAAC,MAAM,eAAe,CAAC,KAC9C,MAAM,YA+BR,CAAC;AAEF,eAAO,MAAM,qBAAqB,aACtB,MAAM,QAAQ,CAAC,MAAM,eAAe,CAAC,KAC9C,MAAM,YAoBR,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { MessagePaginationController } from './MessagePaginationController';
|
|
2
1
|
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
2
|
+
import { MessagePaginationController } from './MessagePaginationController';
|
|
3
3
|
export declare class MessageLiveCollectionController extends LiveCollectionController<'message', Amity.MessagesLiveCollection, Amity.Message, MessagePaginationController> {
|
|
4
4
|
private queryStreamController;
|
|
5
5
|
private query;
|
|
6
6
|
constructor(query: Amity.MessagesLiveCollection, callback: Amity.LiveCollectionCallback<Amity.Message>);
|
|
7
|
-
protected setup(): void;
|
|
8
|
-
protected persistModel(response: Amity.MessagePayload & Amity.Pagination): Promise<void>;
|
|
9
|
-
protected persistQueryStream({ response, direction, refresh, }: Amity.LiveCollectionPersistQueryStreamParams<'message'>): void;
|
|
10
7
|
startSubscription(): Amity.Unsubscriber[];
|
|
11
8
|
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams): void;
|
|
12
9
|
applyFilter(data: Amity.Message[]): Amity.Message<any>[];
|
|
10
|
+
protected setup(): void;
|
|
11
|
+
protected persistModel(response: Amity.MessagePayload & Amity.Pagination): Promise<void>;
|
|
12
|
+
protected persistQueryStream({ response, direction, refresh, }: Amity.LiveCollectionPersistQueryStreamParams<'message'>): void;
|
|
13
13
|
}
|
|
14
14
|
//# sourceMappingURL=MessageLiveCollectionController.d.ts.map
|
package/dist/messageRepository/observers/getMessages/MessageLiveCollectionController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MessageLiveCollectionController.d.ts","sourceRoot":"","sources":["../../../../src/messageRepository/observers/getMessages/MessageLiveCollectionController.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAM1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,+BAAgC,SAAQ,wBAAwB,CAC3E,SAAS,EACT,KAAK,CAAC,sBAAsB,EAC5B,KAAK,CAAC,OAAO,EACb,2BAA2B,CAC5B;IACC,OAAO,CAAC,qBAAqB,CAA+B;IAE5D,OAAO,CAAC,KAAK,CAA+B;gBAG1C,KAAK,EAAE,KAAK,CAAC,sBAAsB,EACnC,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC,KAAK,CAAC,OAAO,CAAC;IAqBvD,iBAAiB;IAmBjB,YAAY,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,CAAC,0BAA0B;IAyBzE,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;IA4CjC,SAAS,CAAC,KAAK;cAUC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,UAAU;IAI9E,SAAS,CAAC,kBAAkB,CAAC,EAC3B,QAAQ,EACR,SAAS,EACT,OAAO,GACR,EAAE,KAAK,CAAC,sCAAsC,CAAC,SAAS,CAAC;CAG3D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/messageRepository/observers/getMessages/MessageQueryStreamController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAKpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,4BAA6B,SAAQ,qBAAqB,CACrE,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,sBAAsB,CAC7B;IACC,OAAO,CAAC,YAAY,CAAqD;IAEzE,OAAO,CAAC,cAAc,CAEsB;IAE5C,OAAO,CAAC,oBAAoB,CAA8B;gBAGxD,KAAK,EAAE,KAAK,CAAC,sBAAsB,EACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,KAAK,IAAI,EAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAC1F,oBAAoB,EAAE,2BAA2B;IAS7C,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc;IAWjD,mBAAmB,CACjB,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1D,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAC5C,OAAO,UAAQ;IAsBjB,OAAO,CAAC,MAAM,EAAE,MAAM,aACH,MAAM,eAAe;
|
|
1
|
+
{"version":3,"file":"MessageQueryStreamController.d.ts","sourceRoot":"","sources":["../../../../src/messageRepository/observers/getMessages/MessageQueryStreamController.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAKpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,qBAAa,4BAA6B,SAAQ,qBAAqB,CACrE,KAAK,CAAC,cAAc,EACpB,KAAK,CAAC,sBAAsB,CAC7B;IACC,OAAO,CAAC,YAAY,CAAqD;IAEzE,OAAO,CAAC,cAAc,CAEsB;IAE5C,OAAO,CAAC,oBAAoB,CAA8B;gBAGxD,KAAK,EAAE,KAAK,CAAC,sBAAsB,EACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,0BAA0B,KAAK,IAAI,EAChE,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,KAAK,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAC1F,oBAAoB,EAAE,2BAA2B;IAS7C,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc;IAWjD,mBAAmB,CACjB,QAAQ,EAAE,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAC1D,SAAS,EAAE,KAAK,CAAC,2BAA2B,EAC5C,OAAO,UAAQ;IAsBjB,OAAO,CAAC,MAAM,EAAE,MAAM,aACH,MAAM,eAAe;IA6DxC,YAAY,CACV,gBAAgB,EAAE;QAChB,EAAE,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC;QAC3E,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE;CAIN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prepareMessagePayload.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/utils/prepareMessagePayload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prepareMessagePayload.d.ts","sourceRoot":"","sources":["../../../src/messageRepository/utils/prepareMessagePayload.ts"],"names":[],"mappings":"AAWA,wBAAgB,cAAc,CAC5B,OAAO,EAAE,KAAK,CAAC,UAAU,EACzB,QAAQ,CAAC,EAAE,KAAK,CAAC,eAAe,EAAE,EAClC,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,iBAAiB,GACpC,KAAK,CAAC,eAAe,CAmEvB;AAWD,eAAO,MAAM,qBAAqB,YACvB,MAAM,cAAc,UACrB,MAAM,MAAM,iBAAiB,KACpC,QAAQ,MAAM,uBAAuB,CA0CvC,CAAC;AAEF,aAAK,gBAAgB,GAAG,IAAI,CAC1B,KAAK,CAAC,aAAa,EAIjB,MAAM,GACN,QAAQ,GACR,cAAc,GACd,MAAM,GACN,gBAAgB,GAChB,iBAAiB,GACjB,UAAU,GACV,eAAe,GACf,eAAe,CAClB,GAAG;IACF,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACvC,aAAa,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACnD,QAAQ,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC;IACpC,OAAO,EAAE;QACP,MAAM,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACvC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KACrC,CAAC;CACH,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAC5B,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAc9C;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,YAAY,EACZ,IAAI,EACJ,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EACf,KAAK,EACL,IAAI,EACJ,GAAG,IAAI,EACR,EAAE,KAAK,CAAC,sBAAsB,GAAG,gBAAgB,CA6BjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getPost.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/getPost.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,WACV,MAAM,IAAI,CAAC,QAAQ,CAAC,YAClB,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,KAC7C,MAAM,
|
|
1
|
+
{"version":3,"file":"getPost.d.ts","sourceRoot":"","sources":["../../../src/postRepository/observers/getPost.ts"],"names":[],"mappings":"AAqBA;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,OAAO,WACV,MAAM,IAAI,CAAC,QAAQ,CAAC,YAClB,MAAM,kBAAkB,CAAC,MAAM,IAAI,CAAC,KAC7C,MAAM,YAyER,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const adLinkedObject: (ad: Amity.
|
|
1
|
+
export declare const adLinkedObject: (ad: Amity.InternalAd) => Amity.Ad;
|
|
2
2
|
//# sourceMappingURL=adLinkedObject.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/adLinkedObject.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,OAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"adLinkedObject.d.ts","sourceRoot":"","sources":["../../../src/utils/linkedObject/adLinkedObject.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc,OAAQ,MAAM,UAAU,KAAG,MAAM,EA8C3D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare const LinkedObject: {
|
|
2
|
-
ad: (ad: Amity.
|
|
2
|
+
ad: (ad: Amity.InternalAd) => Amity.Ad;
|
|
3
3
|
comment: (comment: Amity.InternalComment<any>) => Amity.Comment<any>;
|
|
4
4
|
post: (post: Amity.InternalPost<any>) => Amity.Post<any>;
|
|
5
5
|
user: (user: Amity.InternalUser) => Amity.User;
|
package/package.json
CHANGED
package/src/@types/core/model.ts
CHANGED
|
@@ -50,8 +50,8 @@ declare global {
|
|
|
50
50
|
|
|
51
51
|
feed: Amity.Feed;
|
|
52
52
|
|
|
53
|
-
ad:
|
|
54
|
-
advertiser:
|
|
53
|
+
ad: Amity.InternalAd;
|
|
54
|
+
advertiser: Amity.InternalAdvertiser;
|
|
55
55
|
};
|
|
56
56
|
|
|
57
57
|
type Model = ValueOf<Models>;
|
|
@@ -73,7 +73,7 @@ declare global {
|
|
|
73
73
|
channel: Pick<Amity.Channel, 'channelInternalId'>;
|
|
74
74
|
subChannel: Pick<Amity.SubChannel, 'subChannelId'>;
|
|
75
75
|
channelUsers: Pick<Amity.Membership<'channel'>, 'channelId' | 'userId'>;
|
|
76
|
-
message: Pick<Amity.InternalMessage, 'messageId'>;
|
|
76
|
+
message: Pick<Amity.InternalMessage, 'messageId' | 'referenceId'>;
|
|
77
77
|
|
|
78
78
|
messagePreviewChannel: Pick<Amity.MessagePreview, 'channelId'>;
|
|
79
79
|
messagePreviewSubChannel: Pick<Amity.MessagePreview, 'subChannelId'>;
|
|
@@ -106,8 +106,8 @@ declare global {
|
|
|
106
106
|
|
|
107
107
|
feed: Pick<Amity.Feed, 'targetId' | 'feedId'>;
|
|
108
108
|
|
|
109
|
-
ad: Pick<Amity.
|
|
110
|
-
advertiser: Pick<Amity.
|
|
109
|
+
ad: Pick<Amity.InternalAd, 'adId'>;
|
|
110
|
+
advertiser: Pick<Amity.Advertiser, 'advertiserId'>;
|
|
111
111
|
};
|
|
112
112
|
}
|
|
113
113
|
}
|
package/src/@types/domains/ad.ts
CHANGED
|
@@ -33,7 +33,7 @@ declare global {
|
|
|
33
33
|
callToActionUrl: string;
|
|
34
34
|
targets: Amity.AdTarget;
|
|
35
35
|
startAt: Amity.timestamp;
|
|
36
|
-
endAt
|
|
36
|
+
endAt?: Amity.timestamp;
|
|
37
37
|
createdAt: Amity.timestamp;
|
|
38
38
|
updatedAt: Amity.timestamp;
|
|
39
39
|
};
|
|
@@ -66,18 +66,29 @@ declare global {
|
|
|
66
66
|
updatedAt: Amity.timestamp;
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
+
type InternalAdvertiser = RawAdvertiser;
|
|
70
|
+
|
|
69
71
|
type Advertiser = RawAdvertiser & {
|
|
70
72
|
avatar?: Amity.File<'image'>;
|
|
71
73
|
};
|
|
72
74
|
|
|
73
|
-
type
|
|
75
|
+
type InternalAd = Omit<RawAd, 'endAt'> & {
|
|
76
|
+
endAt: Amity.timestamp | null;
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
type Ad = Omit<InternalAd, 'image1_1' | 'image9_16'> & {
|
|
74
80
|
advertiser?: Amity.Advertiser;
|
|
75
81
|
image1_1?: Amity.File<'image'>;
|
|
76
82
|
image9_16?: Amity.File<'image'>;
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
83
|
+
analytics: {
|
|
84
|
+
markAsSeen: (placement: Amity.AdPlacement) => void;
|
|
85
|
+
markLinkAsClicked: (placement: Amity.AdPlacement) => void;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
type InternalNetworkAds = {
|
|
90
|
+
ads: Amity.InternalAd[];
|
|
91
|
+
settings: Amity.AdsSettings;
|
|
81
92
|
};
|
|
82
93
|
|
|
83
94
|
type NetworkAds = {
|
|
@@ -22,6 +22,10 @@ declare global {
|
|
|
22
22
|
| 'onReactionAdded'
|
|
23
23
|
| 'onReactionRemoved';
|
|
24
24
|
|
|
25
|
+
type MessageOptimistic = {
|
|
26
|
+
syncState?: Amity.SyncState;
|
|
27
|
+
};
|
|
28
|
+
|
|
25
29
|
type RawMessage<T extends Amity.MessageContentType = any> = {
|
|
26
30
|
channelId: string;
|
|
27
31
|
channelPublicId: string;
|
|
@@ -74,7 +78,8 @@ declare global {
|
|
|
74
78
|
Amity.SoftDelete &
|
|
75
79
|
Amity.Subscribable &
|
|
76
80
|
Amity.Timestamps &
|
|
77
|
-
Amity.Taggable
|
|
81
|
+
Amity.Taggable &
|
|
82
|
+
Amity.MessageOptimistic;
|
|
78
83
|
|
|
79
84
|
type InternalMessage<T extends Amity.MessageContentType = any> = Omit<
|
|
80
85
|
Amity.Message<T>,
|
|
@@ -3,12 +3,16 @@ import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
|
3
3
|
import { pushToCache } from '~/cache/api';
|
|
4
4
|
import { LinkedObject } from '~/utils/linkedObject';
|
|
5
5
|
|
|
6
|
-
const
|
|
7
|
-
|
|
6
|
+
const convertToInternalAd = (ad: Amity.RawAd): Amity.InternalAd => {
|
|
7
|
+
return {
|
|
8
|
+
...ad,
|
|
9
|
+
endAt: ad.endAt ? ad.endAt : null,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
8
12
|
|
|
13
|
+
const convertToInternalAdvertiser = (advertiser: Amity.RawAdvertiser): Amity.InternalAdvertiser => {
|
|
9
14
|
return {
|
|
10
|
-
|
|
11
|
-
settings,
|
|
15
|
+
...advertiser,
|
|
12
16
|
};
|
|
13
17
|
};
|
|
14
18
|
|
|
@@ -16,9 +20,19 @@ export const getNetworkAds = async (): Promise<Amity.NetworkAds> => {
|
|
|
16
20
|
const client = getActiveClient();
|
|
17
21
|
|
|
18
22
|
const { data } = await client.http.get<Amity.AdPayload>('/api/v1/ads/me');
|
|
19
|
-
const { settings, ...rest } = data;
|
|
20
|
-
ingestInCache(rest as Omit<Amity.AdPayload, 'settings'>);
|
|
21
|
-
pushToCache(['ad', 'setting'], settings);
|
|
22
23
|
|
|
23
|
-
|
|
24
|
+
const internalAds = data.ads.map(convertToInternalAd);
|
|
25
|
+
const internalAdvertisers = data.advertisers.map(convertToInternalAdvertiser);
|
|
26
|
+
|
|
27
|
+
ingestInCache({
|
|
28
|
+
ads: internalAds,
|
|
29
|
+
advertisers: internalAdvertisers,
|
|
30
|
+
files: data.files,
|
|
31
|
+
});
|
|
32
|
+
pushToCache(['ad', 'setting'], data.settings);
|
|
33
|
+
|
|
34
|
+
return {
|
|
35
|
+
ads: internalAds.map(LinkedObject.ad),
|
|
36
|
+
settings: data.settings,
|
|
37
|
+
};
|
|
24
38
|
};
|
|
@@ -33,7 +33,7 @@ class AnalyticsEngine {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
markAdAsViewed(ad: Amity.
|
|
36
|
+
markAdAsViewed(ad: Amity.InternalAd, placement: Amity.AdPlacement) {
|
|
37
37
|
if (
|
|
38
38
|
this._client.sessionState === Amity.SessionStates.ESTABLISHED ||
|
|
39
39
|
this._client.sessionState === Amity.SessionStates.TOKEN_EXPIRED
|
|
@@ -42,7 +42,7 @@ class AnalyticsEngine {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
markAdAsClicked(ad: Amity.
|
|
45
|
+
markAdAsClicked(ad: Amity.InternalAd, placement: Amity.AdPlacement) {
|
|
46
46
|
if (
|
|
47
47
|
this._client.sessionState === Amity.SessionStates.ESTABLISHED ||
|
|
48
48
|
this._client.sessionState === Amity.SessionStates.TOKEN_EXPIRED
|
|
@@ -21,19 +21,19 @@ export class AnalyticsEventCapturer {
|
|
|
21
21
|
_bufferNewSeenStoryReferenceIds: Amity.Story['referenceId'][] = [];
|
|
22
22
|
|
|
23
23
|
isAbleToEnqueue({
|
|
24
|
-
|
|
24
|
+
uniqueId,
|
|
25
25
|
expireTime,
|
|
26
26
|
isHighPriority = false,
|
|
27
27
|
}: {
|
|
28
|
-
|
|
28
|
+
uniqueId: string;
|
|
29
29
|
expireTime: number;
|
|
30
30
|
isHighPriority?: boolean;
|
|
31
31
|
}) {
|
|
32
32
|
const now = new Date();
|
|
33
33
|
|
|
34
34
|
const getRecentViewedDate = () => {
|
|
35
|
-
if (isHighPriority) return this._recentHighPriorityViewed[
|
|
36
|
-
return this._recentViewed[
|
|
35
|
+
if (isHighPriority) return this._recentHighPriorityViewed[uniqueId];
|
|
36
|
+
return this._recentViewed[uniqueId];
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
const recentViewedDate = getRecentViewedDate() || new Date(DAY * -1);
|
|
@@ -48,13 +48,20 @@ export class AnalyticsEventCapturer {
|
|
|
48
48
|
return true;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
markAs(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
51
|
+
markAs({
|
|
52
|
+
uniqueId,
|
|
53
|
+
contentId,
|
|
54
|
+
contentType,
|
|
55
|
+
activityType,
|
|
56
|
+
metadata,
|
|
57
|
+
}: {
|
|
58
|
+
uniqueId: string;
|
|
59
|
+
contentId: string;
|
|
60
|
+
contentType: Amity.AnalyticEventContentType;
|
|
61
|
+
activityType: Amity.AnalyticEventActivityType;
|
|
62
|
+
metadata?: Record<string, string>;
|
|
63
|
+
}) {
|
|
64
|
+
if (!this.isAbleToEnqueue({ uniqueId, expireTime: this._expireTime })) return;
|
|
58
65
|
|
|
59
66
|
const now = new Date();
|
|
60
67
|
|
|
@@ -72,7 +79,7 @@ export class AnalyticsEventCapturer {
|
|
|
72
79
|
}
|
|
73
80
|
|
|
74
81
|
const analyticItem: Amity.AnalyticEventModel = {
|
|
75
|
-
contentId
|
|
82
|
+
contentId,
|
|
76
83
|
contentType,
|
|
77
84
|
activityType,
|
|
78
85
|
timestamp: now.toISOString(),
|
|
@@ -85,11 +92,16 @@ export class AnalyticsEventCapturer {
|
|
|
85
92
|
currentData.event.push(analyticItem);
|
|
86
93
|
|
|
87
94
|
upsertInCache(ANALYTIC_CACHE_KEY, currentData);
|
|
88
|
-
this._recentViewed[
|
|
95
|
+
this._recentViewed[uniqueId] = now;
|
|
89
96
|
}
|
|
90
97
|
|
|
91
98
|
markPostAsViewed(postId: Amity.InternalPost['postId']) {
|
|
92
|
-
this.markAs(
|
|
99
|
+
this.markAs({
|
|
100
|
+
uniqueId: postId,
|
|
101
|
+
contentId: postId,
|
|
102
|
+
contentType: Amity.AnalyticEventContentType.Post,
|
|
103
|
+
activityType: Amity.AnalyticEventActivityType.View,
|
|
104
|
+
});
|
|
93
105
|
}
|
|
94
106
|
|
|
95
107
|
markStory(story: Amity.InternalStory, activityType: Amity.AnalyticEventActivityType) {
|
|
@@ -99,7 +111,7 @@ export class AnalyticsEventCapturer {
|
|
|
99
111
|
|
|
100
112
|
if (
|
|
101
113
|
!this.isAbleToEnqueue({
|
|
102
|
-
|
|
114
|
+
uniqueId: story.storyId,
|
|
103
115
|
expireTime: expireTime.getTime(),
|
|
104
116
|
isHighPriority: true,
|
|
105
117
|
})
|
|
@@ -179,29 +191,35 @@ export class AnalyticsEventCapturer {
|
|
|
179
191
|
this.markStory(story, Amity.AnalyticEventActivityType.Click);
|
|
180
192
|
}
|
|
181
193
|
|
|
182
|
-
markAdAsViewed(ad: Amity.
|
|
194
|
+
markAdAsViewed(ad: Amity.InternalAd, placement: Amity.AdPlacement) {
|
|
183
195
|
const metadata = {
|
|
184
196
|
placement,
|
|
185
197
|
};
|
|
186
198
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
199
|
+
const activityType = Amity.AnalyticEventActivityType.View;
|
|
200
|
+
|
|
201
|
+
this.markAs({
|
|
202
|
+
uniqueId: `${ad.adId}.${activityType}.${placement}`,
|
|
203
|
+
contentId: ad.adId,
|
|
204
|
+
contentType: Amity.AnalyticEventContentType.Ad,
|
|
205
|
+
activityType,
|
|
191
206
|
metadata,
|
|
192
|
-
);
|
|
207
|
+
});
|
|
193
208
|
}
|
|
194
209
|
|
|
195
|
-
markAdAsClicked(ad: Amity.
|
|
210
|
+
markAdAsClicked(ad: Amity.InternalAd, placement: Amity.AdPlacement) {
|
|
196
211
|
const metadata = {
|
|
197
212
|
placement,
|
|
198
213
|
};
|
|
199
214
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
215
|
+
const activityType = Amity.AnalyticEventActivityType.Click;
|
|
216
|
+
|
|
217
|
+
this.markAs({
|
|
218
|
+
uniqueId: `${ad.adId}.${activityType}.${placement}`,
|
|
219
|
+
contentId: ad.adId,
|
|
220
|
+
contentType: Amity.AnalyticEventContentType.Ad,
|
|
221
|
+
activityType,
|
|
204
222
|
metadata,
|
|
205
|
-
);
|
|
223
|
+
});
|
|
206
224
|
}
|
|
207
225
|
}
|
|
@@ -18,7 +18,7 @@ const idResolvers: Resolvers = {
|
|
|
18
18
|
channel: ({ channelInternalId }) => channelInternalId,
|
|
19
19
|
subChannel: ({ subChannelId }) => subChannelId,
|
|
20
20
|
channelUsers: ({ channelId, userId }) => `${channelId}#${userId}`,
|
|
21
|
-
message: ({ messageId }) => messageId,
|
|
21
|
+
message: ({ messageId, referenceId }) => referenceId ?? messageId,
|
|
22
22
|
|
|
23
23
|
messagePreviewChannel: ({ channelId }) => `${channelId}`,
|
|
24
24
|
messagePreviewSubChannel: ({ subChannelId }) => `${subChannelId}`,
|
|
@@ -3,10 +3,10 @@ import { fireEvent } from '~/core/events';
|
|
|
3
3
|
import { getActiveClient, getActiveUser } from '~/client/api';
|
|
4
4
|
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
5
|
import { UNSYNCED_OBJECT_CACHED_AT_VALUE } from '~/utils/constants';
|
|
6
|
-
import {
|
|
6
|
+
import { dropFromCache, pullFromCache, pushToCache, upsertInCache } from '~/cache/api';
|
|
7
7
|
|
|
8
|
-
import { convertParams, prepareMessagePayload } from '../utils';
|
|
9
8
|
import { LinkedObject } from '~/utils/linkedObject';
|
|
9
|
+
import { convertParams, prepareMessagePayload } from '../utils';
|
|
10
10
|
|
|
11
11
|
const getLocalId = () => `LOCAL_${uuid()}`;
|
|
12
12
|
|
|
@@ -16,109 +16,32 @@ let uniqueId: string | undefined;
|
|
|
16
16
|
/* begin_public_function
|
|
17
17
|
id: message.create.text_message, message.create.image_message, message.create.file_message, message.create.video_message, message.create.audio_message, message.create.custom_message
|
|
18
18
|
*/
|
|
19
|
-
/**
|
|
20
|
-
* ```js
|
|
21
|
-
* import { createMessage, createQuery, runQuery } from '@amityco/ts-sdk-react-native'
|
|
22
|
-
*
|
|
23
|
-
* const query = createQuery(createMessage, {
|
|
24
|
-
* subChannelId: 'foobar',
|
|
25
|
-
* data: { text: 'hello world' },
|
|
26
|
-
* });
|
|
27
|
-
*
|
|
28
|
-
* runQuery(query, ({ data: message, loading }) => {
|
|
29
|
-
* console.log(message);
|
|
30
|
-
* });
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* Creates an {@link Amity.Message}
|
|
34
|
-
*
|
|
35
|
-
* @param bundle The data necessary to create a new {@link Amity.Message}
|
|
36
|
-
* @returns The newly created {@link Amity.Message}
|
|
37
|
-
*
|
|
38
|
-
* @category Message API
|
|
39
|
-
* @async
|
|
40
|
-
*/
|
|
41
|
-
export const createMessage = async <T extends Amity.MessageContentType>(
|
|
42
|
-
bundle: Pick<
|
|
43
|
-
Amity.Message<T>,
|
|
44
|
-
'subChannelId' | 'parentId' | 'dataType' | 'tags' | 'metadata' | 'mentionees'
|
|
45
|
-
> & {
|
|
46
|
-
data?: Amity.Message<T>['data'];
|
|
47
|
-
fileId?: Amity.File['fileId'];
|
|
48
|
-
// Custom referenceId is a workaround for the case:
|
|
49
|
-
// User wants to create an image message. He should
|
|
50
|
-
// - create and show dummy message in ui
|
|
51
|
-
// - upload image to get fileId, while uploading show a spinner in dummy message in ui
|
|
52
|
-
// - call createMessage and pass fileId
|
|
53
|
-
// - replace dummy message with the actual message received from backend
|
|
54
|
-
// Custom referenceId is needed to make relation between dummy message and actual message.
|
|
55
|
-
// TODO: passing file src into createMessage so that sdk uploads files itself,
|
|
56
|
-
// returns the dummy message bound with the file to eliminate the need to create
|
|
57
|
-
// the dummy message on the user side,
|
|
58
|
-
referenceId?: string;
|
|
59
|
-
},
|
|
60
|
-
): Promise<Amity.Cached<Amity.Message>> => {
|
|
61
|
-
const client = getActiveClient();
|
|
62
|
-
client.log('message/createMessage', bundle);
|
|
63
|
-
|
|
64
|
-
const referenceId = bundle.referenceId || uniqueId || getLocalId();
|
|
65
|
-
uniqueId = undefined;
|
|
66
|
-
|
|
67
|
-
const { data: payload } = await client.http.post<Amity.MessagePayload>('/api/v5/messages', {
|
|
68
|
-
...convertParams(bundle),
|
|
69
|
-
referenceId,
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
const data = await prepareMessagePayload(payload);
|
|
73
|
-
const { messages } = data;
|
|
74
|
-
|
|
75
|
-
const cachedAt = client.cache && Date.now();
|
|
76
|
-
if (client.cache) {
|
|
77
|
-
dropFromCache(['message', 'get', referenceId]);
|
|
78
|
-
ingestInCache(data, { cachedAt });
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
fireEvent('local.message.created', { messages });
|
|
82
19
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
20
|
+
type createMessageParam<T extends Amity.MessageContentType> = Pick<
|
|
21
|
+
Amity.Message<T>,
|
|
22
|
+
'subChannelId' | 'parentId' | 'dataType' | 'tags' | 'metadata' | 'mentionees'
|
|
23
|
+
> & {
|
|
24
|
+
data?: Amity.Message<T>['data'];
|
|
25
|
+
fileId?: Amity.File['fileId'];
|
|
26
|
+
referenceId?: string;
|
|
87
27
|
};
|
|
88
28
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
*
|
|
93
|
-
* const created = createMessage.optimistically({
|
|
94
|
-
* channelId: 'foobar',
|
|
95
|
-
* data: { text: 'hello world' }
|
|
96
|
-
* })
|
|
97
|
-
* ```
|
|
98
|
-
*
|
|
99
|
-
* Creates an {@link Amity.Message} in cache
|
|
100
|
-
*
|
|
101
|
-
* @param bundle The data necessary to create a new {@link Amity.Message}
|
|
102
|
-
* @returns The newly created {@link Amity.Message}
|
|
103
|
-
*
|
|
104
|
-
* @category Message API
|
|
105
|
-
*/
|
|
106
|
-
createMessage.optimistically = ({
|
|
107
|
-
referenceId,
|
|
108
|
-
...bundle
|
|
109
|
-
}: Parameters<typeof createMessage>[0]): Amity.Cached<Amity.Message> | undefined => {
|
|
29
|
+
const createMessageOptimistic = <T extends Amity.MessageContentType>(
|
|
30
|
+
bundle: createMessageParam<T>,
|
|
31
|
+
): Amity.InternalMessage | undefined => {
|
|
110
32
|
const client = getActiveClient();
|
|
111
33
|
|
|
112
34
|
if (!client.cache) return;
|
|
113
35
|
|
|
114
36
|
/*
|
|
115
|
-
*
|
|
116
|
-
* client, created a new variable
|
|
37
|
+
* When creating messages optimistically a messageId needs to be added by the
|
|
38
|
+
* client, created a new variable to allow backward compatibility of API
|
|
117
39
|
*
|
|
118
40
|
* Updated to handle client requirement to add messageId while uploading
|
|
119
|
-
* message with image.
|
|
41
|
+
* a message with image.
|
|
42
|
+
* Temporary!
|
|
120
43
|
*/
|
|
121
|
-
uniqueId = referenceId || getLocalId();
|
|
44
|
+
uniqueId = bundle.referenceId || getLocalId();
|
|
122
45
|
const bundleWithMessageId = { messageId: uniqueId, uniqueId, ...bundle };
|
|
123
46
|
|
|
124
47
|
client.log('message/createMessage.optimistically', bundleWithMessageId);
|
|
@@ -153,6 +76,8 @@ createMessage.optimistically = ({
|
|
|
153
76
|
childrenNumber: 0,
|
|
154
77
|
createdAt: createdTime,
|
|
155
78
|
updatedAt: createdTime,
|
|
79
|
+
syncState: Amity.SyncState.Syncing,
|
|
80
|
+
isDeleted: false,
|
|
156
81
|
...bundleWithMessageId,
|
|
157
82
|
} as Amity.InternalMessage;
|
|
158
83
|
|
|
@@ -161,9 +86,69 @@ createMessage.optimistically = ({
|
|
|
161
86
|
pushToCache(['message', 'get', message.messageId], message, { cachedAt });
|
|
162
87
|
fireEvent('local.message.created', { messages: [message] });
|
|
163
88
|
|
|
164
|
-
return
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
89
|
+
return message;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* ```js
|
|
93
|
+
* import { createMessage, createQuery, runQuery } from '@amityco/ts-sdk-react-native'
|
|
94
|
+
*
|
|
95
|
+
* const query = createQuery(createMessage, {
|
|
96
|
+
* subChannelId: 'foobar',
|
|
97
|
+
* data: { text: 'hello world' },
|
|
98
|
+
* });
|
|
99
|
+
*
|
|
100
|
+
* runQuery(query, ({ data: message, loading }) => {
|
|
101
|
+
* console.log(message);
|
|
102
|
+
* });
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* Creates an {@link Amity.Message}
|
|
106
|
+
*
|
|
107
|
+
* @param bundle The data necessary to create a new {@link Amity.Message}
|
|
108
|
+
* @returns The newly created {@link Amity.Message}
|
|
109
|
+
*
|
|
110
|
+
* @category Message API
|
|
111
|
+
* @async
|
|
112
|
+
*/
|
|
113
|
+
export const createMessage = async <T extends Amity.MessageContentType>(
|
|
114
|
+
bundle: createMessageParam<T>,
|
|
115
|
+
): Promise<Amity.Cached<Amity.Message>> => {
|
|
116
|
+
const client = getActiveClient();
|
|
117
|
+
client.log('message/createMessage', bundle);
|
|
118
|
+
|
|
119
|
+
const optimisticData = createMessageOptimistic<T>(bundle);
|
|
120
|
+
|
|
121
|
+
const referenceId = bundle.referenceId || uniqueId || getLocalId();
|
|
122
|
+
uniqueId = undefined;
|
|
123
|
+
|
|
124
|
+
try {
|
|
125
|
+
const { data: payload } = await client.http.post<Amity.MessagePayload>('/api/v5/messages', {
|
|
126
|
+
...convertParams(bundle),
|
|
127
|
+
referenceId,
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
const data = await prepareMessagePayload(payload);
|
|
131
|
+
const { messages } = data;
|
|
132
|
+
|
|
133
|
+
const cachedAt = client.cache && Date.now();
|
|
134
|
+
if (client.cache) {
|
|
135
|
+
ingestInCache(data, { cachedAt });
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
fireEvent('local.message.created', {
|
|
139
|
+
messages: [{ ...messages[0], syncState: Amity.SyncState.Synced }],
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
data: LinkedObject.message(messages[0]),
|
|
144
|
+
cachedAt,
|
|
145
|
+
};
|
|
146
|
+
} catch (e) {
|
|
147
|
+
fireEvent('local.message.created', {
|
|
148
|
+
messages: [{ ...optimisticData, syncState: Amity.SyncState.Error } as Amity.InternalMessage],
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
throw e;
|
|
152
|
+
}
|
|
168
153
|
};
|
|
169
154
|
/* end_public_function */
|