@amityco/ts-sdk 0.0.1-beta.42.2 → 0.0.1-beta.43
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/events.d.ts +11 -1
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/marker.d.ts +37 -0
- package/dist/@types/core/marker.d.ts.map +1 -0
- package/dist/@types/core/model.d.ts +10 -0
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +44 -0
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +5 -8
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +1 -0
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/marker.d.ts +15 -0
- package/dist/@types/domains/marker.d.ts.map +1 -0
- package/dist/@types/domains/message.d.ts +3 -0
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/partials.d.ts +3 -0
- package/dist/@types/domains/partials.d.ts.map +1 -1
- package/dist/@types/domains/subChannel.d.ts +2 -0
- package/dist/@types/domains/subChannel.d.ts.map +1 -1
- package/dist/channel/api/getChannels.d.ts.map +1 -1
- package/dist/channel/api/index.d.ts +0 -2
- package/dist/channel/api/index.d.ts.map +1 -1
- package/dist/channel/events/onChannelUpdated.d.ts.map +1 -1
- package/dist/channel/utils/index.d.ts +1 -2
- package/dist/channel/utils/index.d.ts.map +1 -1
- package/dist/channel/utils/prepareChannelPayload.d.ts +6 -0
- package/dist/channel/utils/prepareChannelPayload.d.ts.map +1 -0
- package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts +5 -1
- package/dist/channel/utils/tests/prepareChannelPayload.test.d.ts.map +1 -1
- package/dist/client/api/activeUser.d.ts +2 -2
- package/dist/client/api/activeUser.d.ts.map +1 -1
- package/dist/client/api/connectClient.d.ts.map +1 -1
- package/dist/client/api/index.d.ts +2 -0
- package/dist/client/api/index.d.ts.map +1 -1
- package/dist/client/api/markerSync.d.ts +21 -0
- package/dist/client/api/markerSync.d.ts.map +1 -0
- package/dist/client/observers/getTotalUnreadCount.d.ts +18 -0
- package/dist/client/observers/getTotalUnreadCount.d.ts.map +1 -0
- package/dist/client/observers/index.d.ts +2 -0
- package/dist/client/observers/index.d.ts.map +1 -0
- package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts +2 -0
- package/dist/client/observers/tests/getTotalUnreadCount.test.d.ts.map +1 -0
- package/dist/client/utils/index.d.ts +2 -0
- package/dist/client/utils/index.d.ts.map +1 -0
- package/dist/client/utils/markerSyncEngine.d.ts +46 -0
- package/dist/client/utils/markerSyncEngine.d.ts.map +1 -0
- package/dist/comment/api/getComments.d.ts.map +1 -1
- package/dist/core/events.d.ts +3 -3
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/model/idResolvers.d.ts.map +1 -1
- package/dist/core/model/index.d.ts.map +1 -1
- package/dist/index.cjs.js +1931 -1159
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +1901 -1160
- package/dist/index.umd.js +4 -4
- package/dist/marker/api/getChannelMarkers.d.ts +18 -0
- package/dist/marker/api/getChannelMarkers.d.ts.map +1 -0
- package/dist/marker/api/getMessageMarkers.d.ts +18 -0
- package/dist/marker/api/getMessageMarkers.d.ts.map +1 -0
- package/dist/marker/api/getSubChannelMarkers.d.ts +18 -0
- package/dist/marker/api/getSubChannelMarkers.d.ts.map +1 -0
- package/dist/marker/api/getUserMarker.d.ts +8 -0
- package/dist/marker/api/getUserMarker.d.ts.map +1 -0
- package/dist/marker/api/index.d.ts +5 -0
- package/dist/marker/api/index.d.ts.map +1 -0
- package/dist/marker/api/tests/getChannelMarkers.test.d.ts +2 -0
- package/dist/marker/api/tests/getChannelMarkers.test.d.ts.map +1 -0
- package/dist/marker/api/tests/getMessageMarkers.test.d.ts +2 -0
- package/dist/marker/api/tests/getMessageMarkers.test.d.ts.map +1 -0
- package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts +2 -0
- package/dist/marker/api/tests/getSubChannelMarkers.test.d.ts.map +1 -0
- package/dist/marker/events/index.d.ts +7 -0
- package/dist/marker/events/index.d.ts.map +1 -0
- package/dist/marker/events/onChannelMarkerFetched.d.ts +17 -0
- package/dist/marker/events/onChannelMarkerFetched.d.ts.map +1 -0
- package/dist/marker/events/onFeedlMarkerFetched.d.ts +17 -0
- package/dist/marker/events/onFeedlMarkerFetched.d.ts.map +1 -0
- package/dist/marker/events/onMessageMarkerFetched.d.ts +17 -0
- package/dist/marker/events/onMessageMarkerFetched.d.ts.map +1 -0
- package/dist/marker/events/onSubChannelMarkerFetched.d.ts +17 -0
- package/dist/marker/events/onSubChannelMarkerFetched.d.ts.map +1 -0
- package/dist/marker/events/onSubChannelMarkerUpdated.d.ts +17 -0
- package/dist/marker/events/onSubChannelMarkerUpdated.d.ts.map +1 -0
- package/dist/marker/events/onUserMarkerFetched.d.ts +17 -0
- package/dist/marker/events/onUserMarkerFetched.d.ts.map +1 -0
- package/dist/message/api/getMessage.d.ts.map +1 -1
- package/dist/message/api/getMessages.d.ts.map +1 -1
- package/dist/message/api/index.d.ts +1 -0
- package/dist/message/api/index.d.ts.map +1 -1
- package/dist/message/api/markAsDelivered.d.ts +17 -0
- package/dist/message/api/markAsDelivered.d.ts.map +1 -0
- package/dist/message/api/queryMessages.d.ts.map +1 -1
- package/dist/message/api/tests/markAsDelivered.test.d.ts +2 -0
- package/dist/message/api/tests/markAsDelivered.test.d.ts.map +1 -0
- package/dist/message/api/updateMessage.d.ts.map +1 -1
- package/dist/message/events/index.d.ts +1 -0
- package/dist/message/events/index.d.ts.map +1 -1
- package/dist/message/events/onMessageCreated.d.ts +2 -1
- package/dist/message/events/onMessageCreated.d.ts.map +1 -1
- package/dist/message/events/onMessageUpdated.d.ts.map +1 -1
- package/dist/message/utils/index.d.ts +1 -18
- package/dist/message/utils/index.d.ts.map +1 -1
- package/dist/message/utils/prepareMessagePayload.d.ts +16 -0
- package/dist/message/utils/prepareMessagePayload.d.ts.map +1 -0
- package/dist/post/api/getPosts.d.ts.map +1 -1
- package/dist/post/api/tests/getPosts.test.d.ts +2 -0
- package/dist/post/api/tests/getPosts.test.d.ts.map +1 -0
- package/dist/report/api/createReport.d.ts.map +1 -1
- package/dist/report/api/deleteReport.d.ts.map +1 -1
- package/dist/subChannel/api/getSubChannels.d.ts.map +1 -1
- package/dist/subChannel/api/index.d.ts +2 -0
- package/dist/subChannel/api/index.d.ts.map +1 -1
- package/dist/subChannel/api/startReadingAPI.d.ts +17 -0
- package/dist/subChannel/api/startReadingAPI.d.ts.map +1 -0
- package/dist/subChannel/api/stopReadingAPI.d.ts +17 -0
- package/dist/subChannel/api/stopReadingAPI.d.ts.map +1 -0
- package/dist/subChannel/events/onSubChannelUpdated.d.ts +1 -1
- package/dist/subChannel/events/onSubChannelUpdated.d.ts.map +1 -1
- package/dist/subChannel/observers/liveSubChannel.d.ts.map +1 -1
- package/dist/subChannel/utils/index.d.ts +2 -7
- package/dist/subChannel/utils/index.d.ts.map +1 -1
- package/dist/subChannel/utils/markReadEngine.d.ts +33 -0
- package/dist/subChannel/utils/markReadEngine.d.ts.map +1 -0
- package/dist/subChannel/utils/prepareSubChannelPayload.d.ts +15 -0
- package/dist/subChannel/utils/prepareSubChannelPayload.d.ts.map +1 -0
- package/dist/utils/liveObject.d.ts +1 -1
- package/dist/utils/liveObject.d.ts.map +1 -1
- package/dist/utils/tests/client.d.ts +1 -0
- package/dist/utils/tests/client.d.ts.map +1 -1
- package/dist/utils/tests/dummy/channel.d.ts +4 -0
- package/dist/utils/tests/dummy/channel.d.ts.map +1 -1
- package/dist/utils/tests/dummy/comment.d.ts.map +1 -1
- package/dist/utils/tests/dummy/index.d.ts +1 -0
- package/dist/utils/tests/dummy/index.d.ts.map +1 -1
- package/dist/utils/tests/dummy/marker.d.ts +6 -0
- package/dist/utils/tests/dummy/marker.d.ts.map +1 -0
- package/dist/utils/tests/dummy/message.d.ts +2 -0
- package/dist/utils/tests/dummy/message.d.ts.map +1 -1
- package/dist/utils/tests/dummy/subChannel.d.ts +1 -0
- package/dist/utils/tests/dummy/subChannel.d.ts.map +1 -1
- package/dist/utils/tests/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +13 -1
- package/src/@types/core/marker.ts +42 -0
- package/src/@types/core/model.ts +12 -0
- package/src/@types/core/payload.ts +52 -0
- package/src/@types/domains/channel.ts +5 -16
- package/src/@types/domains/client.ts +2 -0
- package/src/@types/domains/marker.ts +15 -0
- package/src/@types/domains/message.ts +3 -0
- package/src/@types/domains/partials.ts +4 -0
- package/src/@types/domains/subChannel.ts +2 -0
- package/src/channel/api/addChannelMembers.ts +1 -1
- package/src/channel/api/addChannelMembersRole.ts +1 -1
- package/src/channel/api/banChannelMembers.ts +1 -1
- package/src/channel/api/createChannel.ts +1 -1
- package/src/channel/api/getChannel.ts +1 -1
- package/src/channel/api/getChannels.ts +21 -5
- package/src/channel/api/index.ts +0 -3
- package/src/channel/api/joinChannel.ts +1 -1
- package/src/channel/api/leaveChannel.ts +1 -1
- package/src/channel/api/queryChannelMembers.ts +1 -1
- package/src/channel/api/queryChannels.ts +3 -3
- package/src/channel/api/removeChannelMembers.ts +1 -1
- package/src/channel/api/removeChannelMembersRole.ts +1 -1
- package/src/channel/api/tests/addChannelMembers.test.ts +16 -0
- package/src/channel/api/tests/createChannel.test.ts +29 -8
- package/src/channel/api/tests/getChannel.test.ts +11 -4
- package/src/channel/api/tests/getChannels.test.ts +22 -14
- package/src/channel/api/tests/queryChannelMembers.test.ts +13 -4
- package/src/channel/api/tests/queryChannels.test.ts +19 -9
- package/src/channel/api/unbanChannelMembers.ts +1 -1
- package/src/channel/api/updateChannel.ts +1 -1
- package/src/channel/events/onChannelCreated.ts +2 -2
- package/src/channel/events/onChannelDeleted.ts +4 -4
- package/src/channel/events/onChannelJoined.ts +2 -2
- package/src/channel/events/onChannelLeft.ts +2 -2
- package/src/channel/events/onChannelMemberAdded.ts +2 -2
- package/src/channel/events/onChannelMemberBanned.ts +3 -3
- package/src/channel/events/onChannelMemberRemoved.ts +2 -2
- package/src/channel/events/onChannelMemberUnbanned.ts +2 -2
- package/src/channel/events/onChannelMuted.ts +2 -2
- package/src/channel/events/onChannelUpdated.ts +25 -4
- package/src/channel/events/tests/onChannelCreated.test.ts +4 -1
- package/src/channel/events/tests/onChannelJoined.test.ts +5 -1
- package/src/channel/events/tests/onChannelMemberAdded.test.ts +5 -1
- package/src/channel/events/tests/onChannelMemberBanned.test.ts +4 -1
- package/src/channel/events/tests/onChannelMemberRemoved.test.ts +5 -1
- package/src/channel/events/tests/onChannelMemberUnbanned.test.ts +10 -10
- package/src/channel/events/tests/onChannelUpdated.test.ts +5 -1
- package/src/channel/observers/tests/liveChannelMembers.test.ts +5 -11
- package/src/channel/observers/tests/liveChannels.test.ts +21 -24
- package/src/channel/utils/index.ts +1 -57
- package/src/channel/utils/prepareChannelPayload.ts +91 -0
- package/src/channel/utils/tests/prepareChannelPayload.test.ts +102 -104
- package/src/client/api/activeUser.ts +2 -2
- package/src/client/api/connectClient.ts +2 -1
- package/src/client/api/index.ts +3 -0
- package/src/client/api/markerSync.ts +42 -0
- package/src/client/observers/getTotalUnreadCount.ts +52 -0
- package/src/client/observers/index.ts +1 -0
- package/src/client/observers/tests/getTotalUnreadCount.test.ts +126 -0
- package/src/client/utils/index.ts +1 -0
- package/src/client/utils/markerSyncEngine.ts +179 -0
- package/src/comment/api/getComments.ts +20 -4
- package/src/comment/api/tests/getComments.test.ts +12 -1
- package/src/comment/api/tests/queryComments.test.ts +2 -2
- package/src/core/model/idResolvers.ts +7 -0
- package/src/core/model/identifyModel.ts +1 -1
- package/src/core/model/index.ts +6 -0
- package/src/core/tests/query/query/runQuery.test.ts +3 -1
- package/src/group/utils/withUser.ts +2 -2
- package/src/index.ts +6 -0
- package/src/marker/api/getChannelMarkers.ts +53 -0
- package/src/marker/api/getMessageMarkers.ts +54 -0
- package/src/marker/api/getSubChannelMarkers.ts +54 -0
- package/src/marker/api/getUserMarker.ts +47 -0
- package/src/marker/api/index.ts +4 -0
- package/src/marker/api/tests/getChannelMarkers.test.ts +109 -0
- package/src/marker/api/tests/getMessageMarkers.test.ts +114 -0
- package/src/marker/api/tests/getSubChannelMarkers.test.ts +116 -0
- package/src/marker/events/index.ts +10 -0
- package/src/marker/events/onChannelMarkerFetched.ts +34 -0
- package/src/marker/events/onFeedlMarkerFetched.ts +34 -0
- package/src/marker/events/onMessageMarkerFetched.ts +34 -0
- package/src/marker/events/onSubChannelMarkerFetched.ts +34 -0
- package/src/marker/events/onSubChannelMarkerUpdated.ts +34 -0
- package/src/marker/events/onUserMarkerFetched.ts +34 -0
- package/src/message/api/createMessage.ts +1 -1
- package/src/message/api/getMessage.ts +6 -5
- package/src/message/api/getMessages.ts +7 -6
- package/src/message/api/index.ts +1 -0
- package/src/message/api/markAsDelivered.ts +36 -0
- package/src/message/api/queryMessages.ts +8 -6
- package/src/message/api/tests/createMessage.test.ts +13 -4
- package/src/message/api/tests/getMessage.test.ts +12 -3
- package/src/message/api/tests/getMessages.test.ts +14 -5
- package/src/message/api/tests/markAsDelivered.test.ts +83 -0
- package/src/message/api/tests/queryMessages.test.ts +14 -3
- package/src/message/api/updateMessage.ts +8 -7
- package/src/message/events/index.ts +2 -0
- package/src/message/events/onMessageCreated.ts +14 -41
- package/src/message/events/onMessageDeleted.ts +2 -2
- package/src/message/events/onMessageFlagCleared.ts +2 -2
- package/src/message/events/onMessageFlagged.ts +2 -2
- package/src/message/events/onMessageReactionAdded.ts +2 -2
- package/src/message/events/onMessageReactionRemoved.ts +2 -2
- package/src/message/events/onMessageUnflagged.ts +2 -2
- package/src/message/events/onMessageUpdated.ts +27 -5
- package/src/message/tests/events.test.ts +4 -2
- package/src/message/tests/observers/liveMessage.test.ts +22 -10
- package/src/message/tests/observers/liveMessages.test.ts +25 -18
- package/src/message/utils/index.ts +1 -140
- package/src/message/utils/prepareMessagePayload.ts +182 -0
- package/src/post/api/getPosts.ts +20 -4
- package/src/post/api/tests/getPosts.test.ts +18 -0
- package/src/reaction/events/onReactionAdded.ts +2 -2
- package/src/reaction/events/onReactionRemoved.ts +2 -2
- package/src/reaction/events/onReactorAdded.ts +2 -2
- package/src/reaction/events/onReactorRemoved.ts +2 -2
- package/src/report/api/createReport.ts +2 -1
- package/src/report/api/deleteReport.ts +2 -1
- package/src/subChannel/api/createSubChannel.ts +1 -1
- package/src/subChannel/api/getSubChannel.ts +1 -1
- package/src/subChannel/api/getSubChannels.ts +2 -1
- package/src/subChannel/api/index.ts +3 -0
- package/src/subChannel/api/querySubChannels.ts +1 -1
- package/src/subChannel/api/startReadingAPI.ts +33 -0
- package/src/subChannel/api/stopReadingAPI.ts +33 -0
- package/src/subChannel/api/tests/createSubChannel.test.ts +6 -3
- package/src/subChannel/api/tests/deleteSubChannel.test.ts +7 -5
- package/src/subChannel/api/tests/getSubChannel.test.ts +6 -4
- package/src/subChannel/api/tests/getSubChannels.test.ts +6 -3
- package/src/subChannel/api/tests/updateSubChannel.test.ts +6 -3
- package/src/subChannel/api/updateSubChannel.ts +1 -1
- package/src/subChannel/events/onSubChannelCreated.ts +2 -2
- package/src/subChannel/events/onSubChannelDeleted.ts +2 -2
- package/src/subChannel/events/onSubChannelUpdated.ts +43 -4
- package/src/subChannel/observers/liveSubChannel.ts +2 -0
- package/src/subChannel/observers/tests/liveSubChannel.test.ts +15 -10
- package/src/subChannel/observers/tests/liveSubChannels.test.ts +21 -14
- package/src/subChannel/utils/index.ts +2 -50
- package/src/subChannel/utils/markReadEngine.ts +117 -0
- package/src/subChannel/utils/prepareSubChannelPayload.ts +132 -0
- package/src/utils/liveObject.ts +15 -4
- package/src/utils/tests/client.ts +3 -1
- package/src/utils/tests/dummy/channel.ts +38 -21
- package/src/utils/tests/dummy/comment.ts +2 -2
- package/src/utils/tests/dummy/index.ts +1 -0
- package/src/utils/tests/dummy/marker.ts +68 -0
- package/src/utils/tests/dummy/message.ts +42 -2
- package/src/utils/tests/dummy/post.ts +1 -1
- package/src/utils/tests/dummy/subChannel.ts +16 -5
- package/src/utils/tests/utils.ts +4 -1
- package/dist/channel/api/startReading.d.ts +0 -17
- package/dist/channel/api/startReading.d.ts.map +0 -1
- package/dist/channel/api/stopReading.d.ts +0 -16
- package/dist/channel/api/stopReading.d.ts.map +0 -1
- package/dist/channel/api/tests/startReading.test.d.ts +0 -2
- package/dist/channel/api/tests/startReading.test.d.ts.map +0 -1
- package/dist/channel/api/tests/stopReading.test.d.ts +0 -2
- package/dist/channel/api/tests/stopReading.test.d.ts.map +0 -1
- package/src/channel/api/startReading.ts +0 -57
- package/src/channel/api/stopReading.ts +0 -53
- package/src/channel/api/tests/startReading.test.ts +0 -25
- package/src/channel/api/tests/stopReading.test.ts +0 -25
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
import { fireEvent } from '~/core/events';
|
|
3
|
+
import { toPage, toToken } from '~/core/query';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ```js
|
|
8
|
+
* import { getMessageMarkers } from '@amityco/ts-sdk'
|
|
9
|
+
* const messageMarkers = await getMessageMarkers(['sch1', 'sch2'])
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fetches a paginable list of {@link Amity.MessageMarker} objects
|
|
13
|
+
*
|
|
14
|
+
* @param messageIds the feed IDs of the {@link Amity.RawMessage} marker to fetch
|
|
15
|
+
* @param page
|
|
16
|
+
* @returns A page of {@link Amity.MessageMarker} objects
|
|
17
|
+
*
|
|
18
|
+
* @category Channel API
|
|
19
|
+
* @async
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
export const getMessageMarkers = async (
|
|
23
|
+
messageIds: Amity.RawMessage['messageFeedId'][],
|
|
24
|
+
page: Amity.Page = { limit: 100 },
|
|
25
|
+
): Promise<Amity.Cached<Amity.Paged<Amity.MessageMarker>>> => {
|
|
26
|
+
const client = getActiveClient();
|
|
27
|
+
client.log('channel/getMessageMarkers', messageIds, page);
|
|
28
|
+
|
|
29
|
+
const { data: queryPayload } = await client.http.get<
|
|
30
|
+
Amity.MessageMarkerPayload & Amity.Pagination
|
|
31
|
+
>(`/api/v1/markers/messages`, {
|
|
32
|
+
params: {
|
|
33
|
+
messageIds,
|
|
34
|
+
options: {
|
|
35
|
+
token: toToken(page, 'skiplimit'),
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const { paging, ...payload } = queryPayload;
|
|
41
|
+
const { contentMarkers, feedMarkers, userMarkers } = payload;
|
|
42
|
+
|
|
43
|
+
const cachedAt = client.cache && Date.now();
|
|
44
|
+
if (client.cache) ingestInCache(payload as Amity.MessageMarkerPayload, { cachedAt });
|
|
45
|
+
|
|
46
|
+
feedMarkers.length && fireEvent('local.feedMarker.fetched', { feedMarkers });
|
|
47
|
+
contentMarkers.length && fireEvent('local.messageMarker.fetched', { contentMarkers });
|
|
48
|
+
userMarkers.length && fireEvent('local.userMarker.fetched', { userMarkers });
|
|
49
|
+
|
|
50
|
+
const nextPage = toPage(paging.next);
|
|
51
|
+
const prevPage = toPage(paging.previous);
|
|
52
|
+
|
|
53
|
+
return { data: contentMarkers, cachedAt, prevPage, nextPage };
|
|
54
|
+
};
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
2
|
+
import { fireEvent } from '~/core/events';
|
|
3
|
+
import { toPage, toToken } from '~/core/query';
|
|
4
|
+
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* ```js
|
|
8
|
+
* import { getSubChannelMarkers } from '@amityco/ts-sdk'
|
|
9
|
+
* const subChannelMarkers = await getSubChannelMarkers(['sch1', 'sch2'])
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fetches a paginable list of {@link Amity.SubChannelMarker} objects
|
|
13
|
+
*
|
|
14
|
+
* @param messageFeedIds the feed IDs of the {@link Amity.RawSubChannel} marker to fetch
|
|
15
|
+
* @param page
|
|
16
|
+
* @returns A page of {@link Amity.SubChannelMarker} objects
|
|
17
|
+
*
|
|
18
|
+
* @category Channel API
|
|
19
|
+
* @async
|
|
20
|
+
* @private
|
|
21
|
+
*/
|
|
22
|
+
export const getSubChannelMarkers = async (
|
|
23
|
+
messageFeedIds: Amity.RawSubChannel['messageFeedId'][],
|
|
24
|
+
page: Amity.Page = { limit: 100 },
|
|
25
|
+
): Promise<Amity.Cached<Amity.Paged<Amity.SubChannelMarker>>> => {
|
|
26
|
+
const client = getActiveClient();
|
|
27
|
+
client.log('channel/getSubChannelMarkers', messageFeedIds, page);
|
|
28
|
+
|
|
29
|
+
const { data: queryPayload } = await client.http.get<
|
|
30
|
+
Amity.SubChannelMarkerPayload & Amity.Pagination
|
|
31
|
+
>(`/api/v1/markers/message-feeds`, {
|
|
32
|
+
params: {
|
|
33
|
+
messageFeedIds,
|
|
34
|
+
options: {
|
|
35
|
+
token: toToken(page, 'skiplimit'),
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
const { paging, ...payload } = queryPayload;
|
|
41
|
+
const { userEntityMarkers, userFeedMarkers, userMarkers } = payload;
|
|
42
|
+
|
|
43
|
+
const cachedAt = client.cache && Date.now();
|
|
44
|
+
if (client.cache) ingestInCache(payload as Amity.SubChannelMarkerPayload, { cachedAt });
|
|
45
|
+
|
|
46
|
+
userEntityMarkers.length && fireEvent('local.channelMarker.fetched', { userEntityMarkers });
|
|
47
|
+
userFeedMarkers.length && fireEvent('local.subChannelMarker.fetched', { userFeedMarkers });
|
|
48
|
+
userMarkers.length && fireEvent('local.userMarker.fetched', { userMarkers });
|
|
49
|
+
|
|
50
|
+
const nextPage = toPage(paging.next);
|
|
51
|
+
const prevPage = toPage(paging.previous);
|
|
52
|
+
|
|
53
|
+
return { data: userFeedMarkers, cachedAt, prevPage, nextPage };
|
|
54
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { pullFromCache } from '~/cache/api';
|
|
2
|
+
import { getActiveClient } from '~/client/api/activeClient';
|
|
3
|
+
import { getActiveUser } from '~/client/api/activeUser';
|
|
4
|
+
import { ASCError } from '~/core/errors';
|
|
5
|
+
import { getResolver } from '~/core/model';
|
|
6
|
+
|
|
7
|
+
const locally = () => {
|
|
8
|
+
const client = getActiveClient();
|
|
9
|
+
const user = getActiveUser();
|
|
10
|
+
client.log('marker/getUserMarker.locally');
|
|
11
|
+
|
|
12
|
+
const { _id: userId } = user;
|
|
13
|
+
|
|
14
|
+
if (!userId)
|
|
15
|
+
throw new ASCError(
|
|
16
|
+
'The userId has not been defined in active client',
|
|
17
|
+
Amity.ClientError.UNKNOWN_ERROR,
|
|
18
|
+
Amity.ErrorLevel.ERROR,
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const createdTime = new Date().toISOString();
|
|
22
|
+
const cachedAt = client.cache && Date.now();
|
|
23
|
+
|
|
24
|
+
const data: Amity.UserMarker = pullFromCache<Amity.UserMarker>([
|
|
25
|
+
'userMarker',
|
|
26
|
+
'get',
|
|
27
|
+
getResolver('userMarker')({ userId }),
|
|
28
|
+
])?.data ?? {
|
|
29
|
+
userId,
|
|
30
|
+
unreadCount: 0,
|
|
31
|
+
lastSyncAt: createdTime,
|
|
32
|
+
createdAt: createdTime,
|
|
33
|
+
updatedAt: createdTime,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
return {
|
|
37
|
+
data,
|
|
38
|
+
cachedAt,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
export const getUserMarker = (): Promise<Amity.Cached<Amity.UserMarker>> => {
|
|
43
|
+
// API-FIX: backend should implement user marker get API
|
|
44
|
+
return Promise.resolve(locally());
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
getUserMarker.locally = locally;
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { ASCApiError } from '~/core/errors';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { onUserMarkerFetched } from '~/marker/events';
|
|
5
|
+
import { onChannelMarkerFetched } from '~/marker/events/onChannelMarkerFetched';
|
|
6
|
+
import { client, generateChannelMarker, generateUserMarker } from '~/utils/tests';
|
|
7
|
+
|
|
8
|
+
import { getChannelMarkers } from '../getChannelMarkers';
|
|
9
|
+
|
|
10
|
+
const pagingToken = {
|
|
11
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
12
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
const pagingCriteria = { limit: 10 };
|
|
16
|
+
|
|
17
|
+
const userId = 'user1';
|
|
18
|
+
|
|
19
|
+
const expectedChannelMarkers = [
|
|
20
|
+
generateChannelMarker({ entityId: 'ch1', userId }),
|
|
21
|
+
generateChannelMarker({ entityId: 'ch2', userId }),
|
|
22
|
+
];
|
|
23
|
+
|
|
24
|
+
const expectedUserMarkers = [generateUserMarker({ userId: 'currentUser1' })];
|
|
25
|
+
|
|
26
|
+
const channelIds = expectedChannelMarkers.map(({ entityId }) => entityId);
|
|
27
|
+
|
|
28
|
+
const resolvedGetValue = {
|
|
29
|
+
data: {
|
|
30
|
+
userEntityMarkers: expectedChannelMarkers,
|
|
31
|
+
userMarkers: expectedUserMarkers,
|
|
32
|
+
paging: pagingToken,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
describe('getChannelMarkers', () => {
|
|
37
|
+
it('should return channel markers', async () => {
|
|
38
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
39
|
+
|
|
40
|
+
const { data } = await getChannelMarkers(channelIds);
|
|
41
|
+
|
|
42
|
+
expect(data).toEqual(expectedChannelMarkers);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
test('should return fetched channel markers with correct paging', async () => {
|
|
46
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedGetValue);
|
|
47
|
+
|
|
48
|
+
await expect(getChannelMarkers(channelIds, pagingCriteria)).resolves.toEqual(
|
|
49
|
+
expect.objectContaining({
|
|
50
|
+
data: expectedChannelMarkers,
|
|
51
|
+
prevPage: { before: 55, limit: 10 },
|
|
52
|
+
nextPage: { before: 55, limit: 10 },
|
|
53
|
+
}),
|
|
54
|
+
);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
test('should update cache after fetching channelMarkers ', async () => {
|
|
58
|
+
enableCache();
|
|
59
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
60
|
+
|
|
61
|
+
await getChannelMarkers(channelIds);
|
|
62
|
+
const cacheKeyResolver = getResolver('channelMarker');
|
|
63
|
+
|
|
64
|
+
const received = channelIds.map(
|
|
65
|
+
entityId =>
|
|
66
|
+
pullFromCache(['channelMarker', 'get', cacheKeyResolver({ entityId, userId })])?.data,
|
|
67
|
+
);
|
|
68
|
+
|
|
69
|
+
expect(received).toEqual(expectedChannelMarkers);
|
|
70
|
+
|
|
71
|
+
disableCache();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test('should throw an error if request fails', async () => {
|
|
75
|
+
client.http.get = jest
|
|
76
|
+
.fn()
|
|
77
|
+
.mockRejectedValueOnce(
|
|
78
|
+
new ASCApiError('Not Found', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
await expect(getChannelMarkers(channelIds)).rejects.toThrow('Amity SDK (400400): Not Found');
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
test('should fire event `onChannelMarkerFetched`', async () => {
|
|
85
|
+
let dispose;
|
|
86
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
87
|
+
|
|
88
|
+
const callbackPromise = new Promise(resolve => {
|
|
89
|
+
dispose = onChannelMarkerFetched(resolve);
|
|
90
|
+
}).finally(dispose);
|
|
91
|
+
|
|
92
|
+
await getChannelMarkers(channelIds);
|
|
93
|
+
|
|
94
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedChannelMarkers[0]);
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
test('should fire event `onUserMarkerFetched`', async () => {
|
|
98
|
+
let dispose;
|
|
99
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
100
|
+
|
|
101
|
+
const callbackPromise = new Promise(resolve => {
|
|
102
|
+
dispose = onUserMarkerFetched(resolve);
|
|
103
|
+
}).finally(dispose);
|
|
104
|
+
|
|
105
|
+
await getChannelMarkers(channelIds);
|
|
106
|
+
|
|
107
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedUserMarkers[0]);
|
|
108
|
+
});
|
|
109
|
+
});
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { ASCApiError } from '~/core/errors';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { onMessageMarkerFetched, onUserMarkerFetched } from '~/marker/events';
|
|
5
|
+
import {
|
|
6
|
+
client,
|
|
7
|
+
generateFeedMarker,
|
|
8
|
+
generateMessageMarker,
|
|
9
|
+
generateUserMarker,
|
|
10
|
+
} from '~/utils/tests';
|
|
11
|
+
|
|
12
|
+
import { getMessageMarkers } from '../getMessageMarkers';
|
|
13
|
+
|
|
14
|
+
const pagingToken = {
|
|
15
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
16
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const pagingCriteria = { limit: 10 };
|
|
20
|
+
|
|
21
|
+
const expectedMessageMarkers = [
|
|
22
|
+
generateMessageMarker({ feedId: 'sub-ch1', contentId: 'message1' }),
|
|
23
|
+
generateMessageMarker({ feedId: 'sub-ch1', contentId: 'message2' }),
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
const expectedFeedMarkers = [generateFeedMarker({ feedId: 'sub-ch1', entityId: 'feed1' })];
|
|
27
|
+
|
|
28
|
+
const expectedUserMarkers = [generateUserMarker({ userId: 'currentUser1' })];
|
|
29
|
+
|
|
30
|
+
const messageIds = expectedMessageMarkers.map(({ contentId }) => contentId);
|
|
31
|
+
const messageMarkerResolver = getResolver('messageMarker');
|
|
32
|
+
const messageMarkerCacheIds = expectedMessageMarkers.map(messageMarkerResolver);
|
|
33
|
+
|
|
34
|
+
const resolvedGetValue = {
|
|
35
|
+
data: {
|
|
36
|
+
contentMarkers: expectedMessageMarkers,
|
|
37
|
+
feedMarkers: expectedFeedMarkers,
|
|
38
|
+
userMarkers: expectedUserMarkers,
|
|
39
|
+
paging: pagingToken,
|
|
40
|
+
} as Amity.MessageMarkerPayload,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
describe('getMessageMarkers', () => {
|
|
44
|
+
it('should return message markers', async () => {
|
|
45
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
46
|
+
|
|
47
|
+
const { data } = await getMessageMarkers(messageIds);
|
|
48
|
+
|
|
49
|
+
expect(data).toEqual(expectedMessageMarkers);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('should return fetched message markers with correct paging', async () => {
|
|
53
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedGetValue);
|
|
54
|
+
|
|
55
|
+
await expect(getMessageMarkers(messageIds, pagingCriteria)).resolves.toEqual(
|
|
56
|
+
expect.objectContaining({
|
|
57
|
+
data: expectedMessageMarkers,
|
|
58
|
+
prevPage: { before: 55, limit: 10 },
|
|
59
|
+
nextPage: { before: 55, limit: 10 },
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('should update cache after fetching message markers ', async () => {
|
|
65
|
+
enableCache();
|
|
66
|
+
|
|
67
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
68
|
+
|
|
69
|
+
await getMessageMarkers(messageIds);
|
|
70
|
+
const received = messageMarkerCacheIds.map(
|
|
71
|
+
id => pullFromCache(['messageMarker', 'get', id])?.data,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
expect(received).toEqual(expectedMessageMarkers);
|
|
75
|
+
|
|
76
|
+
disableCache();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('should throw an error if request fails', async () => {
|
|
80
|
+
client.http.get = jest
|
|
81
|
+
.fn()
|
|
82
|
+
.mockRejectedValueOnce(
|
|
83
|
+
new ASCApiError('Not Found', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
await expect(getMessageMarkers(messageIds)).rejects.toThrow('Amity SDK (400400): Not Found');
|
|
87
|
+
});
|
|
88
|
+
|
|
89
|
+
test('should fire event `onMessageMarkerFetched`', async () => {
|
|
90
|
+
let dispose;
|
|
91
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
92
|
+
|
|
93
|
+
const callbackPromise = new Promise(resolve => {
|
|
94
|
+
dispose = onMessageMarkerFetched(resolve);
|
|
95
|
+
}).finally(dispose);
|
|
96
|
+
|
|
97
|
+
await getMessageMarkers(messageIds);
|
|
98
|
+
|
|
99
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedMessageMarkers[0]);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
test('should fire event `onUserMarkerFetched`', async () => {
|
|
103
|
+
let dispose;
|
|
104
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
105
|
+
|
|
106
|
+
const callbackPromise = new Promise(resolve => {
|
|
107
|
+
dispose = onUserMarkerFetched(resolve);
|
|
108
|
+
}).finally(dispose);
|
|
109
|
+
|
|
110
|
+
await getMessageMarkers(messageIds);
|
|
111
|
+
|
|
112
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedUserMarkers[0]);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { disableCache, enableCache, pullFromCache } from '~/cache/api';
|
|
2
|
+
import { ASCApiError } from '~/core/errors';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { onSubChannelMarkerFetched, onUserMarkerFetched } from '~/marker/events';
|
|
5
|
+
import {
|
|
6
|
+
client,
|
|
7
|
+
generateChannelMarker,
|
|
8
|
+
generateSubChannelMarker,
|
|
9
|
+
generateUserMarker,
|
|
10
|
+
} from '~/utils/tests';
|
|
11
|
+
|
|
12
|
+
import { getSubChannelMarkers } from '../getSubChannelMarkers';
|
|
13
|
+
|
|
14
|
+
const pagingToken = {
|
|
15
|
+
previous: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
16
|
+
next: 'eyJiZWZvcmUiOjU1LCJsYXN0IjoxMH0=',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const pagingCriteria = { limit: 10 };
|
|
20
|
+
|
|
21
|
+
const expectedSubChannelMarkers = [
|
|
22
|
+
generateSubChannelMarker({ feedId: 'sub-ch1', entityId: 'ch1' }),
|
|
23
|
+
generateSubChannelMarker({ feedId: 'sub-ch2', entityId: 'ch1' }),
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
const expectedChannelMarkers = [generateChannelMarker({ entityId: 'ch1', userId: 'user1' })];
|
|
27
|
+
|
|
28
|
+
const expectedUserMarkers = [generateUserMarker({ userId: 'currentUser1' })];
|
|
29
|
+
|
|
30
|
+
const subChannelIds = expectedSubChannelMarkers.map(({ feedId }) => feedId);
|
|
31
|
+
const subChannelMarkerResolver = getResolver('subChannelMarker');
|
|
32
|
+
const subChannelMarkerCacheIds = expectedSubChannelMarkers.map(subChannelMarkerResolver);
|
|
33
|
+
|
|
34
|
+
const resolvedGetValue = {
|
|
35
|
+
data: {
|
|
36
|
+
userFeedMarkers: expectedSubChannelMarkers,
|
|
37
|
+
userEntityMarkers: expectedChannelMarkers,
|
|
38
|
+
userMarkers: expectedUserMarkers,
|
|
39
|
+
paging: pagingToken,
|
|
40
|
+
} as Amity.SubChannelMarkerPayload,
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
describe('getSubChannelMarkers', () => {
|
|
44
|
+
it('should return sub channel markers', async () => {
|
|
45
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
46
|
+
|
|
47
|
+
const { data } = await getSubChannelMarkers(subChannelIds);
|
|
48
|
+
|
|
49
|
+
expect(data).toEqual(expectedSubChannelMarkers);
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
test('should return fetched sub channel markers with correct paging', async () => {
|
|
53
|
+
client.http.get = jest.fn().mockResolvedValueOnce(resolvedGetValue);
|
|
54
|
+
|
|
55
|
+
await expect(getSubChannelMarkers(subChannelIds, pagingCriteria)).resolves.toEqual(
|
|
56
|
+
expect.objectContaining({
|
|
57
|
+
data: expectedSubChannelMarkers,
|
|
58
|
+
prevPage: { before: 55, limit: 10 },
|
|
59
|
+
nextPage: { before: 55, limit: 10 },
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
test('should update cache after fetching sub channel markers ', async () => {
|
|
65
|
+
enableCache();
|
|
66
|
+
|
|
67
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
68
|
+
|
|
69
|
+
await getSubChannelMarkers(subChannelIds);
|
|
70
|
+
const received = subChannelMarkerCacheIds.map(
|
|
71
|
+
id => pullFromCache(['subChannelMarker', 'get', id])?.data,
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
expect(received).toEqual(expectedSubChannelMarkers);
|
|
75
|
+
|
|
76
|
+
disableCache();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
test('should throw an error if request fails', async () => {
|
|
80
|
+
client.http.get = jest
|
|
81
|
+
.fn()
|
|
82
|
+
.mockRejectedValueOnce(
|
|
83
|
+
new ASCApiError('Not Found', Amity.ServerError.ITEM_NOT_FOUND, Amity.ErrorLevel.ERROR),
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
await expect(getSubChannelMarkers(subChannelIds)).rejects.toThrow(
|
|
87
|
+
'Amity SDK (400400): Not Found',
|
|
88
|
+
);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
test('should fire event `onSubChannelMarkerFetched`', async () => {
|
|
92
|
+
let dispose;
|
|
93
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
94
|
+
|
|
95
|
+
const callbackPromise = new Promise(resolve => {
|
|
96
|
+
dispose = onSubChannelMarkerFetched(resolve);
|
|
97
|
+
}).finally(dispose);
|
|
98
|
+
|
|
99
|
+
await getSubChannelMarkers(subChannelIds);
|
|
100
|
+
|
|
101
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedSubChannelMarkers[0]);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
test('should fire event `onUserMarkerFetched`', async () => {
|
|
105
|
+
let dispose;
|
|
106
|
+
client.http.get = jest.fn().mockResolvedValue(resolvedGetValue);
|
|
107
|
+
|
|
108
|
+
const callbackPromise = new Promise(resolve => {
|
|
109
|
+
dispose = onUserMarkerFetched(resolve);
|
|
110
|
+
}).finally(dispose);
|
|
111
|
+
|
|
112
|
+
await getSubChannelMarkers(subChannelIds);
|
|
113
|
+
|
|
114
|
+
await expect(callbackPromise).resolves.toMatchObject(expectedUserMarkers[0]);
|
|
115
|
+
});
|
|
116
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from './onChannelMarkerFetched';
|
|
2
|
+
|
|
3
|
+
export * from './onSubChannelMarkerFetched';
|
|
4
|
+
export * from './onSubChannelMarkerUpdated';
|
|
5
|
+
|
|
6
|
+
export * from './onFeedlMarkerFetched';
|
|
7
|
+
|
|
8
|
+
export * from './onUserMarkerFetched';
|
|
9
|
+
|
|
10
|
+
export * from './onMessageMarkerFetched';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onChannelMarkerFetched } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onChannelMarkerFetched(channelMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.ChannelMarker} has been fetched
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category ChannelMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onChannelMarkerFetched = (
|
|
20
|
+
callback: Amity.Listener<Amity.ChannelMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['local.channelMarker.fetched']) => {
|
|
25
|
+
callback(payload.userEntityMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'channelMarker/onChannelMarkerFetched',
|
|
31
|
+
'local.channelMarker.fetched',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onFeedMarkerFetched } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onFeedMarkerFetched(feedMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.FeedMarker} has been fetched
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category FeedMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onFeedMarkerFetched = (
|
|
20
|
+
callback: Amity.Listener<Amity.FeedMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['local.feedMarker.fetched']) => {
|
|
25
|
+
callback(payload.feedMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'feedMarker/onFeedMarkerFetched',
|
|
31
|
+
'local.feedMarker.fetched',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onMessageMarkerFetched } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onMessageMarkerFetched(messageMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.MessageMarker} has been fetched
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category MessageMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onMessageMarkerFetched = (
|
|
20
|
+
callback: Amity.Listener<Amity.MessageMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['local.messageMarker.fetched']) => {
|
|
25
|
+
callback(payload.contentMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'messageMarker/onMessageMarkerFetched',
|
|
31
|
+
'local.messageMarker.fetched',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onSubChannelMarkerFetched } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onSubChannelMarkerFetched(subChannelMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.SubChannelMarker} has been fetched
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category SubChannelMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onSubChannelMarkerFetched = (
|
|
20
|
+
callback: Amity.Listener<Amity.SubChannelMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['local.subChannelMarker.fetched']) => {
|
|
25
|
+
callback(payload.userFeedMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'subChannelMarker/onSubChannelMarkerFetched',
|
|
31
|
+
'local.subChannelMarker.fetched',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { getActiveClient } from '~/client/api';
|
|
2
|
+
import { createEventSubscriber } from '~/core/events';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* ```js
|
|
6
|
+
* import { onSubChannelMarkerUpdated } from '@amityco/ts-sdk'
|
|
7
|
+
* const dispose = onSubChannelMarkerUpdated(subChannelMarker => {
|
|
8
|
+
* // ...
|
|
9
|
+
* })
|
|
10
|
+
* ```
|
|
11
|
+
*
|
|
12
|
+
* Fired when an {@link Amity.SubChannelMarker} has been updated
|
|
13
|
+
*
|
|
14
|
+
* @param callback The function to call when the event was fired
|
|
15
|
+
* @returns an {@link Amity.Unsubscriber} function to stop listening
|
|
16
|
+
*
|
|
17
|
+
* @category SubChannelMarker Events
|
|
18
|
+
*/
|
|
19
|
+
export const onSubChannelMarkerUpdated = (
|
|
20
|
+
callback: Amity.Listener<Amity.SubChannelMarker>,
|
|
21
|
+
): Amity.Unsubscriber => {
|
|
22
|
+
const client = getActiveClient();
|
|
23
|
+
|
|
24
|
+
const filter = (payload: Amity.Events['local.subChannelMarker.updated']) => {
|
|
25
|
+
callback(payload.userFeedMarkers[0]);
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
return createEventSubscriber(
|
|
29
|
+
client,
|
|
30
|
+
'subChannelMarker/onSubChannelMarkerUpdated',
|
|
31
|
+
'local.subChannelMarker.updated',
|
|
32
|
+
filter,
|
|
33
|
+
);
|
|
34
|
+
};
|