@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,117 @@
|
|
|
1
|
+
import { pullFromCache } from '~/cache/api';
|
|
2
|
+
import { getActiveClient, getActiveUser } from '~/client/api';
|
|
3
|
+
import { fireEvent } from '~/core/events';
|
|
4
|
+
import { getResolver } from '~/core/model';
|
|
5
|
+
import { onMessageCreated } from '~/message/events';
|
|
6
|
+
|
|
7
|
+
import { startReadingAPI } from '../api/startReadingAPI';
|
|
8
|
+
import { stopReadingAPI } from '../api/stopReadingAPI';
|
|
9
|
+
|
|
10
|
+
let disposers: (() => void)[] = [];
|
|
11
|
+
const isReadingMap: Record<string, boolean> = {};
|
|
12
|
+
|
|
13
|
+
const updateReadToSegment = (message: Amity.Message) => {
|
|
14
|
+
if (!isReadingMap[message.subChannelId]) return;
|
|
15
|
+
|
|
16
|
+
const client = getActiveClient();
|
|
17
|
+
|
|
18
|
+
if (!client.cache) return;
|
|
19
|
+
|
|
20
|
+
const key = {
|
|
21
|
+
entityId: message.channelId,
|
|
22
|
+
feedId: message.subChannelId,
|
|
23
|
+
userId: getActiveUser()._id,
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const currentValue = pullFromCache<Amity.SubChannelMarker>([
|
|
27
|
+
'subChannelMarker',
|
|
28
|
+
'get',
|
|
29
|
+
getResolver('subChannelMarker')(key),
|
|
30
|
+
])?.data;
|
|
31
|
+
|
|
32
|
+
if (!currentValue) return;
|
|
33
|
+
|
|
34
|
+
const userFeedMarkers = [{ ...currentValue, readToSegment: message.channelSegment }];
|
|
35
|
+
fireEvent('local.subChannelMarker.updated', { userFeedMarkers });
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* the event callback when app is back to online
|
|
40
|
+
*/
|
|
41
|
+
const onOnline = () => {
|
|
42
|
+
const callback = () => {
|
|
43
|
+
// Start reading the reading subChannel again when resume from offline state
|
|
44
|
+
Object.entries(isReadingMap).forEach(([subChannelId, isReading]) => {
|
|
45
|
+
if (isReading) startReadingAPI(subChannelId);
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
window.addEventListener('online', callback);
|
|
50
|
+
|
|
51
|
+
return () => window.removeEventListener('online', callback);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
const registerEventListeners = () => {
|
|
55
|
+
disposers.push(onOnline(), onMessageCreated(updateReadToSegment));
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
const unRegisterEventListeners = () => {
|
|
59
|
+
disposers.forEach(fn => fn());
|
|
60
|
+
disposers = [];
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/* begin_public_function
|
|
64
|
+
id: channel.start_reading
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* ```js
|
|
69
|
+
* import { startReading } from '@amityco/ts-sdk'
|
|
70
|
+
* const success = await startReading('foo')
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* Set local reading state of channel to `true` and then call mark all
|
|
74
|
+
* messages as read API.
|
|
75
|
+
*
|
|
76
|
+
* @param subChannelId - The sub channel ID to start reading.
|
|
77
|
+
* @return A success boolean if reading of the sub channel had begun.
|
|
78
|
+
*
|
|
79
|
+
* @category Channel API
|
|
80
|
+
* @async
|
|
81
|
+
*/
|
|
82
|
+
export const startReading = (subChannelId: Amity.SubChannel['subChannelId']) => {
|
|
83
|
+
isReadingMap[subChannelId] = true;
|
|
84
|
+
|
|
85
|
+
if (disposers.length === 0) {
|
|
86
|
+
registerEventListeners();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return startReadingAPI(subChannelId);
|
|
90
|
+
};
|
|
91
|
+
/* end_public_function */
|
|
92
|
+
|
|
93
|
+
/* begin_public_function
|
|
94
|
+
id: channel.stop_reading
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* ```js
|
|
99
|
+
* import { stopReading } from '@amityco/ts-sdk'
|
|
100
|
+
* const success = await stopReading('foo')
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* Set local reading state of channel to `false` and then call mark all
|
|
104
|
+
* messages as unread API.
|
|
105
|
+
*
|
|
106
|
+
* @param subChannelId - The sub channel ID to stop reading.
|
|
107
|
+
* @return A success boolean if reading of the sub channel had begun.
|
|
108
|
+
*
|
|
109
|
+
* @category Channel API
|
|
110
|
+
* @async
|
|
111
|
+
*/
|
|
112
|
+
export const stopReading = (subChannelId: Amity.SubChannel['subChannelId']) => {
|
|
113
|
+
isReadingMap[subChannelId] = false;
|
|
114
|
+
unRegisterEventListeners();
|
|
115
|
+
return stopReadingAPI(subChannelId);
|
|
116
|
+
};
|
|
117
|
+
/* end_public_function */
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { pullFromCache } from '~/cache/api';
|
|
2
|
+
import { getActiveUser } from '~/client/api';
|
|
3
|
+
import { getResolver } from '~/core/model';
|
|
4
|
+
import { getSubChannelMarkers } from '~/marker/api';
|
|
5
|
+
|
|
6
|
+
export const MARKER_INCLUDED_SUB_CHANNEL_TYPE = ['broadcast', 'conversation', 'community'];
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Filter sub channel by type. Only conversation, community and broadcast type are included.
|
|
10
|
+
*/
|
|
11
|
+
export const isUnreadCountSupport = ({ channelType }: Pick<Amity.RawSubChannel, 'channelType'>) =>
|
|
12
|
+
MARKER_INCLUDED_SUB_CHANNEL_TYPE.includes(channelType);
|
|
13
|
+
|
|
14
|
+
export function getUnreadCount(
|
|
15
|
+
channelId: string,
|
|
16
|
+
subChannelId: string,
|
|
17
|
+
marker?: Amity.SubChannelMarker,
|
|
18
|
+
) {
|
|
19
|
+
// Look for `unreadCount` in the marker param first
|
|
20
|
+
if (marker) {
|
|
21
|
+
return marker.unreadCount;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const key = {
|
|
25
|
+
entityId: channelId,
|
|
26
|
+
feedId: subChannelId,
|
|
27
|
+
userId: getActiveUser()._id,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
// If the marker param is not set, look in the cache
|
|
31
|
+
const cachedMarker = pullFromCache<Amity.SubChannelMarker>([
|
|
32
|
+
'subChannelMarker',
|
|
33
|
+
'get',
|
|
34
|
+
getResolver('subChannelMarker')(key),
|
|
35
|
+
])?.data;
|
|
36
|
+
|
|
37
|
+
if (cachedMarker) {
|
|
38
|
+
return cachedMarker.unreadCount;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// and if not found in cache use default value `0`
|
|
42
|
+
return 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function convertFromRaw(
|
|
46
|
+
{
|
|
47
|
+
channelId,
|
|
48
|
+
channelPublicId,
|
|
49
|
+
channelType,
|
|
50
|
+
childCount,
|
|
51
|
+
creatorId,
|
|
52
|
+
creatorPublicId,
|
|
53
|
+
lastMessageId,
|
|
54
|
+
lastMessageTimestamp,
|
|
55
|
+
messageFeedId,
|
|
56
|
+
name,
|
|
57
|
+
...rest
|
|
58
|
+
}: Amity.RawSubChannel,
|
|
59
|
+
marker?: Amity.SubChannelMarker,
|
|
60
|
+
): Amity.SubChannel {
|
|
61
|
+
return {
|
|
62
|
+
...rest,
|
|
63
|
+
channelId: channelPublicId,
|
|
64
|
+
creatorId: creatorPublicId,
|
|
65
|
+
displayName: name,
|
|
66
|
+
lastActivity: lastMessageTimestamp,
|
|
67
|
+
latestMessageId: lastMessageId,
|
|
68
|
+
messageCount: childCount,
|
|
69
|
+
subChannelId: messageFeedId,
|
|
70
|
+
isUnreadCountSupport: isUnreadCountSupport({ channelType }),
|
|
71
|
+
unreadCount: getUnreadCount(channelId, messageFeedId, marker),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export function updateSubChannelMarker(
|
|
76
|
+
subChannel: Amity.SubChannel,
|
|
77
|
+
marker?: Amity.SubChannelMarker,
|
|
78
|
+
): Amity.SubChannel {
|
|
79
|
+
return {
|
|
80
|
+
...subChannel,
|
|
81
|
+
unreadCount: getUnreadCount(subChannel.channelId, subChannel.subChannelId, marker),
|
|
82
|
+
updatedAt: new Date().toISOString(),
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export const prepareSubChannelPayload = async (
|
|
87
|
+
rawPayload: Amity.SubChannelPayload,
|
|
88
|
+
): Promise<Amity.ProcessedSubChannelPayload> => {
|
|
89
|
+
// make a fetch marker to prepare it for merging with the raw channel payload.
|
|
90
|
+
let markers: Amity.SubChannelMarker[] = [];
|
|
91
|
+
|
|
92
|
+
const markerIds = rawPayload.messageFeeds
|
|
93
|
+
.filter(isUnreadCountSupport)
|
|
94
|
+
.map(({ messageFeedId }) => messageFeedId);
|
|
95
|
+
|
|
96
|
+
if (markerIds.length > 0)
|
|
97
|
+
// from the spec, allow marker fetch to fail
|
|
98
|
+
try {
|
|
99
|
+
({ data: markers } = await getSubChannelMarkers(markerIds));
|
|
100
|
+
} catch (e) {
|
|
101
|
+
// empty block
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// attach marker to sub channel
|
|
105
|
+
const messageFeeds = rawPayload.messageFeeds.map(messageFeed => {
|
|
106
|
+
const marker = markers?.find(({ feedId }) => feedId === messageFeed.messageFeedId);
|
|
107
|
+
|
|
108
|
+
return convertFromRaw(messageFeed, marker);
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
return {
|
|
112
|
+
...rawPayload,
|
|
113
|
+
messageFeeds,
|
|
114
|
+
};
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
type RawQuerySubChannels = Omit<Amity.QuerySubChannels, 'excludeDefaultSubChannel'> & {
|
|
118
|
+
excludeDefaultMessageFeed?: Amity.QuerySubChannels['excludeDefaultSubChannel'];
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
export function convertQueryParams({
|
|
122
|
+
excludeDefaultSubChannel,
|
|
123
|
+
...rest
|
|
124
|
+
}: Amity.QuerySubChannels): RawQuerySubChannels {
|
|
125
|
+
const out: RawQuerySubChannels = { ...rest };
|
|
126
|
+
|
|
127
|
+
if (excludeDefaultSubChannel !== undefined) {
|
|
128
|
+
out.excludeDefaultMessageFeed = excludeDefaultSubChannel;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
return out;
|
|
132
|
+
}
|
package/src/utils/liveObject.ts
CHANGED
|
@@ -8,12 +8,18 @@ import { hasUpdates } from '~/core/model';
|
|
|
8
8
|
import { createQuery, runQuery } from '~/core/query';
|
|
9
9
|
import { ASCApiError } from '~/core/errors';
|
|
10
10
|
|
|
11
|
-
export const liveObject = <
|
|
11
|
+
export const liveObject = <
|
|
12
|
+
T extends Amity.Models[Amity.Domain],
|
|
13
|
+
K extends keyof T,
|
|
14
|
+
CallbackData extends any = any,
|
|
15
|
+
>(
|
|
12
16
|
id: T[K],
|
|
13
|
-
callback: Amity.LiveObjectCallback<
|
|
17
|
+
callback: Amity.LiveObjectCallback<CallbackData>,
|
|
14
18
|
key: K,
|
|
15
19
|
fetcher: (id: T[K]) => Promise<Amity.Cached<T>>,
|
|
16
20
|
eventHandlers: Array<(callback: Amity.Listener<T>) => Amity.Unsubscriber>,
|
|
21
|
+
callbackDataSelector: (data: T) => CallbackData = data => <CallbackData>data,
|
|
22
|
+
callbackFilter?: (currentModel: T, previousModel: T) => boolean,
|
|
17
23
|
): Amity.Unsubscriber => {
|
|
18
24
|
const { cache } = getActiveClient();
|
|
19
25
|
|
|
@@ -26,8 +32,13 @@ export const liveObject = <T extends Amity.Models[Amity.Domain], K extends keyof
|
|
|
26
32
|
const disposers: Amity.Unsubscriber[] = [];
|
|
27
33
|
|
|
28
34
|
const dispatcher = (data: Amity.LiveObject<T>) => {
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
const { data: newModel, ...rest } = data;
|
|
36
|
+
|
|
37
|
+
if (!callbackFilter || callbackFilter(newModel, model)) {
|
|
38
|
+
callback({ data: callbackDataSelector(newModel), ...rest });
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
model = newModel;
|
|
31
42
|
};
|
|
32
43
|
|
|
33
44
|
const realtimeRouter = (eventModel: T) => {
|
|
@@ -6,6 +6,8 @@ import {
|
|
|
6
6
|
|
|
7
7
|
import { user11 } from './dummy';
|
|
8
8
|
|
|
9
|
+
export const activeUser = user11;
|
|
10
|
+
|
|
9
11
|
const sessionHandler: Amity.SessionHandler = {
|
|
10
12
|
sessionWillRenewAccessToken(_) {
|
|
11
13
|
// do nothing
|
|
@@ -28,7 +30,7 @@ export const connectClient = async () => {
|
|
|
28
30
|
data: {
|
|
29
31
|
accessToken: 'accessToken',
|
|
30
32
|
refreshToken: 'refreshToken',
|
|
31
|
-
users: [
|
|
33
|
+
users: [activeUser],
|
|
32
34
|
expiresAt: nextMonth.toISOString(),
|
|
33
35
|
issuedAt: now.toISOString(),
|
|
34
36
|
},
|
|
@@ -1,6 +1,26 @@
|
|
|
1
|
+
import { withUsers } from '~/group/utils';
|
|
1
2
|
import { convertFromRaw } from '~/channel/utils';
|
|
3
|
+
import { activeUser } from '~/utils/tests';
|
|
4
|
+
import * as activeUserModule from '~/client/api/activeUser';
|
|
5
|
+
|
|
2
6
|
import { date, user11, user12, user13, user14, file11 } from '.';
|
|
3
7
|
|
|
8
|
+
export const convertChannelFromRaw = (
|
|
9
|
+
channel: Amity.RawChannel,
|
|
10
|
+
marker?: Amity.ChannelMarker,
|
|
11
|
+
): Amity.Channel => {
|
|
12
|
+
jest.spyOn(activeUserModule, 'getActiveUser').mockReturnValue(activeUser);
|
|
13
|
+
return convertFromRaw(channel, marker);
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export const convertRawChannelPayload = (
|
|
17
|
+
rawPayload: Amity.ChannelPayload,
|
|
18
|
+
): Amity.ProcessedChannelPayload => ({
|
|
19
|
+
...rawPayload,
|
|
20
|
+
channels: rawPayload.channels.map(channel => convertChannelFromRaw(channel)),
|
|
21
|
+
channelUsers: withUsers(rawPayload.channelUsers),
|
|
22
|
+
});
|
|
23
|
+
|
|
4
24
|
export function generateRawChannel(params?: Partial<Amity.RawChannel>): Amity.RawChannel {
|
|
5
25
|
const channelId = params?.channelId ?? 'channelId11';
|
|
6
26
|
|
|
@@ -19,7 +39,7 @@ export function generateRawChannel(params?: Partial<Amity.RawChannel>): Amity.Ra
|
|
|
19
39
|
};
|
|
20
40
|
}
|
|
21
41
|
|
|
22
|
-
function generateRawChannelUser(
|
|
42
|
+
export function generateRawChannelUser(
|
|
23
43
|
params?: Partial<Amity.RawMembership<'channel'>>,
|
|
24
44
|
): Amity.RawMembership<'channel'> {
|
|
25
45
|
return {
|
|
@@ -38,15 +58,14 @@ function generateRawChannelUser(
|
|
|
38
58
|
...params,
|
|
39
59
|
};
|
|
40
60
|
}
|
|
41
|
-
|
|
61
|
+
|
|
62
|
+
export const convertChannelUserFromRaw = (
|
|
42
63
|
member: Amity.RawMembership<'channel'>,
|
|
43
|
-
user: Amity.User,
|
|
44
|
-
): Amity.Membership<'channel'> {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
};
|
|
49
|
-
}
|
|
64
|
+
user: Amity.User | undefined,
|
|
65
|
+
): Amity.Membership<'channel'> => ({
|
|
66
|
+
...member,
|
|
67
|
+
user,
|
|
68
|
+
});
|
|
50
69
|
|
|
51
70
|
export const mockPage = {
|
|
52
71
|
paging: {
|
|
@@ -73,19 +92,17 @@ export const channelRaw3: Amity.RawChannel = generateRawChannel({
|
|
|
73
92
|
channelId: 'channelId21',
|
|
74
93
|
});
|
|
75
94
|
|
|
76
|
-
export const channel1: Amity.Channel =
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
});
|
|
95
|
+
export const channel1: Amity.Channel = {
|
|
96
|
+
...channelRaw1,
|
|
97
|
+
isUnreadCountSupport: true,
|
|
98
|
+
unreadCount: 0,
|
|
99
|
+
};
|
|
82
100
|
|
|
83
|
-
export const channel2: Amity.Channel =
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
});
|
|
101
|
+
export const channel2: Amity.Channel = {
|
|
102
|
+
...channelRaw2,
|
|
103
|
+
isUnreadCountSupport: true,
|
|
104
|
+
unreadCount: 0,
|
|
105
|
+
};
|
|
89
106
|
|
|
90
107
|
export const rawChannelUser = generateRawChannelUser();
|
|
91
108
|
export const channelUser = convertChannelUserFromRaw(rawChannelUser, user11);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createComment
|
|
1
|
+
import { createComment } from '~/comment/api';
|
|
2
2
|
import { file11 } from './file';
|
|
3
|
-
import { post11
|
|
3
|
+
import { post11 } from './post';
|
|
4
4
|
import { user11, user12 } from './user';
|
|
5
5
|
|
|
6
6
|
export function generateComment(params?: Partial<Amity.Comment>): Amity.Comment {
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { activeUser } from '../client';
|
|
2
|
+
import { date } from '.';
|
|
3
|
+
|
|
4
|
+
export const generateChannelMarker = ({
|
|
5
|
+
entityId,
|
|
6
|
+
...params
|
|
7
|
+
}: MakeRequired<Amity.ChannelMarker, 'entityId'>): Amity.ChannelMarker => ({
|
|
8
|
+
entityId,
|
|
9
|
+
userId: activeUser.userId,
|
|
10
|
+
unreadCount: 0,
|
|
11
|
+
isDeleted: false,
|
|
12
|
+
createdAt: date,
|
|
13
|
+
updatedAt: date,
|
|
14
|
+
...params,
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const generateSubChannelMarker = ({
|
|
18
|
+
feedId,
|
|
19
|
+
entityId,
|
|
20
|
+
...params
|
|
21
|
+
}: MakeRequired<Amity.SubChannelMarker, 'feedId' | 'entityId'>): Amity.SubChannelMarker => ({
|
|
22
|
+
feedId,
|
|
23
|
+
entityId,
|
|
24
|
+
userId: activeUser.userId,
|
|
25
|
+
readToSegment: 0,
|
|
26
|
+
deliveredToSegment: 0,
|
|
27
|
+
unreadCount: 0,
|
|
28
|
+
createdAt: date,
|
|
29
|
+
updatedAt: date,
|
|
30
|
+
...params,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
export const generateMessageMarker = ({
|
|
34
|
+
feedId,
|
|
35
|
+
contentId,
|
|
36
|
+
...params
|
|
37
|
+
}: MakeRequired<Amity.MessageMarker, 'feedId' | 'contentId'>): Amity.MessageMarker => ({
|
|
38
|
+
feedId,
|
|
39
|
+
contentId,
|
|
40
|
+
creatorId: activeUser.userId,
|
|
41
|
+
readCount: 0,
|
|
42
|
+
deliveredCount: 0,
|
|
43
|
+
createdAt: date,
|
|
44
|
+
updatedAt: date,
|
|
45
|
+
...params,
|
|
46
|
+
});
|
|
47
|
+
export const generateFeedMarker = ({
|
|
48
|
+
feedId,
|
|
49
|
+
entityId,
|
|
50
|
+
...params
|
|
51
|
+
}: MakeRequired<Amity.FeedMarker, 'feedId' | 'entityId'>): Amity.FeedMarker => ({
|
|
52
|
+
feedId,
|
|
53
|
+
entityId,
|
|
54
|
+
lastSegment: 0,
|
|
55
|
+
isDeleted: false,
|
|
56
|
+
createdAt: date,
|
|
57
|
+
updatedAt: date,
|
|
58
|
+
...params,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
export const generateUserMarker = (params?: Partial<Amity.UserMarker>): Amity.UserMarker => ({
|
|
62
|
+
lastSyncAt: date,
|
|
63
|
+
userId: activeUser.userId,
|
|
64
|
+
unreadCount: 0,
|
|
65
|
+
createdAt: date,
|
|
66
|
+
updatedAt: date,
|
|
67
|
+
...params,
|
|
68
|
+
});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { convertFromRaw } from '~/message/utils';
|
|
2
1
|
import { channel1, user11, file11 } from '.';
|
|
3
2
|
|
|
4
3
|
export function generateRawMessage(params?: Partial<Amity.RawMessage>): Amity.RawMessage {
|
|
@@ -28,7 +27,48 @@ export function generateRawMessage(params?: Partial<Amity.RawMessage>): Amity.Ra
|
|
|
28
27
|
};
|
|
29
28
|
}
|
|
30
29
|
|
|
31
|
-
export const
|
|
30
|
+
export const convertRawMessage = ({
|
|
31
|
+
channelPublicId,
|
|
32
|
+
childCount,
|
|
33
|
+
creatorPublicId,
|
|
34
|
+
mentionedUsers,
|
|
35
|
+
messageFeedId,
|
|
36
|
+
reactionCount,
|
|
37
|
+
reactions,
|
|
38
|
+
referenceId,
|
|
39
|
+
segment,
|
|
40
|
+
messageId,
|
|
41
|
+
myReactions,
|
|
42
|
+
...rest
|
|
43
|
+
}: Amity.RawMessage): Amity.Message => ({
|
|
44
|
+
...rest,
|
|
45
|
+
messageId,
|
|
46
|
+
channelId: channelPublicId,
|
|
47
|
+
channelSegment: segment,
|
|
48
|
+
childrenNumber: childCount,
|
|
49
|
+
creatorId: creatorPublicId,
|
|
50
|
+
mentionees: mentionedUsers?.map(mention => {
|
|
51
|
+
if (mention.type === 'channel') return mention;
|
|
52
|
+
|
|
53
|
+
return { type: 'user', userIds: mention.userPublicIds };
|
|
54
|
+
}),
|
|
55
|
+
reactions: reactions ?? {},
|
|
56
|
+
reactionsCount: reactionCount,
|
|
57
|
+
subChannelId: messageFeedId,
|
|
58
|
+
uniqueId: messageId,
|
|
59
|
+
myReactions: [],
|
|
60
|
+
readCount: 0,
|
|
61
|
+
deliveredCount: 0,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
export const convertRawMessagePayload = (
|
|
65
|
+
rawPayload: Amity.MessagePayload,
|
|
66
|
+
): Amity.ProcessedMessagePayload => ({
|
|
67
|
+
...rawPayload,
|
|
68
|
+
messages: rawPayload.messages.map(convertRawMessage),
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
export const message11: Amity.Message = convertRawMessage(
|
|
32
72
|
generateRawMessage({
|
|
33
73
|
channelPublicId: channel1.channelId,
|
|
34
74
|
creatorPublicId: user11.userId,
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import * as activeUserModule from '~/client/api/activeUser';
|
|
1
2
|
import { convertFromRaw } from '~/subChannel/utils';
|
|
2
|
-
import {
|
|
3
|
+
import { activeUser } from '~/utils/tests';
|
|
4
|
+
|
|
5
|
+
import { channelRaw1, date, user11 } from '.';
|
|
3
6
|
|
|
4
7
|
export function generateRawSubChannel(params?: Partial<Amity.RawSubChannel>): Amity.RawSubChannel {
|
|
5
8
|
return {
|
|
6
9
|
channelId: 'private-channel-id',
|
|
7
|
-
channelPublicId:
|
|
8
|
-
channelType:
|
|
10
|
+
channelPublicId: channelRaw1.channelId,
|
|
11
|
+
channelType: channelRaw1.type,
|
|
9
12
|
childCount: 0,
|
|
10
13
|
createdAt: date,
|
|
11
14
|
creatorId: 'private-user-id',
|
|
@@ -13,7 +16,7 @@ export function generateRawSubChannel(params?: Partial<Amity.RawSubChannel>): Am
|
|
|
13
16
|
isDeleted: false,
|
|
14
17
|
lastMessageId: 'xxx',
|
|
15
18
|
lastMessageTimestamp: date,
|
|
16
|
-
messageFeedId: `${
|
|
19
|
+
messageFeedId: `${channelRaw1.channelId}--sub-channel-id`,
|
|
17
20
|
name: 'sub channel name',
|
|
18
21
|
path: 'sub-channel-path',
|
|
19
22
|
updatedAt: date,
|
|
@@ -21,9 +24,17 @@ export function generateRawSubChannel(params?: Partial<Amity.RawSubChannel>): Am
|
|
|
21
24
|
};
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
export const convertSubChannelFromRaw = (
|
|
28
|
+
subChannel: Amity.RawSubChannel,
|
|
29
|
+
marker?: Amity.SubChannelMarker,
|
|
30
|
+
): Amity.SubChannel => {
|
|
31
|
+
jest.spyOn(activeUserModule, 'getActiveUser').mockReturnValue(activeUser);
|
|
32
|
+
return convertFromRaw(subChannel, marker);
|
|
33
|
+
};
|
|
34
|
+
|
|
24
35
|
export function generateSubChannel(params?: Record<string, any>): Amity.SubChannel {
|
|
25
36
|
return {
|
|
26
|
-
...
|
|
37
|
+
...convertSubChannelFromRaw(generateRawSubChannel()),
|
|
27
38
|
...params,
|
|
28
39
|
};
|
|
29
40
|
}
|
package/src/utils/tests/utils.ts
CHANGED
|
@@ -6,8 +6,11 @@ export const encodeJson = (value: Record<string, any>) => encode(JSON.stringify(
|
|
|
6
6
|
* Used instead of asserting an async request is completed, when the async
|
|
7
7
|
* request is not the API being tested. This util makes tests readable by moving
|
|
8
8
|
* all assertions to the end of the test
|
|
9
|
+
*
|
|
10
|
+
* Use 500ms by default on MacBook Pro Core-i5 2020. Lower than this is not enough
|
|
11
|
+
* to wait for async task before assertions.
|
|
9
12
|
*/
|
|
10
|
-
export const pause = (ms =
|
|
13
|
+
export const pause = (ms = 500) =>
|
|
11
14
|
new Promise(resolve => {
|
|
12
15
|
setTimeout(resolve, ms);
|
|
13
16
|
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ```js
|
|
3
|
-
* import { startReading } from '@amityco/ts-sdk'
|
|
4
|
-
* const success = await startReading('foo')
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Mark all messages as read and start reading message inside channel
|
|
8
|
-
*
|
|
9
|
-
* @param subChannelId - The channel ID to start reading.
|
|
10
|
-
* @param userId - The user ID of channel member.
|
|
11
|
-
* @return A success boolean if the channel reading of the sub channel had begun.
|
|
12
|
-
*
|
|
13
|
-
* @category Message API
|
|
14
|
-
* @async
|
|
15
|
-
*/
|
|
16
|
-
export declare const startReading: (subChannelId: string, userId?: string | undefined) => Promise<boolean | undefined>;
|
|
17
|
-
//# sourceMappingURL=startReading.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startReading.d.ts","sourceRoot":"","sources":["../../../src/channel/api/startReading.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,YAAY,iBAAwB,MAAM,8DAiCtD,CAAC"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ```js
|
|
3
|
-
* import { stopReading } from '@amityco/ts-sdk'
|
|
4
|
-
* const success = await stopReading('foo')
|
|
5
|
-
* ```
|
|
6
|
-
*
|
|
7
|
-
* Stop reading message inside channel
|
|
8
|
-
*
|
|
9
|
-
* @param subChannelId - The channel ID to stop reading.
|
|
10
|
-
* @return A success boolean if the sub channel reading was halted.
|
|
11
|
-
*
|
|
12
|
-
* @category Message API
|
|
13
|
-
* @async
|
|
14
|
-
*/
|
|
15
|
-
export declare const stopReading: (subChannelId: string) => Promise<boolean | undefined>;
|
|
16
|
-
//# sourceMappingURL=stopReading.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stopReading.d.ts","sourceRoot":"","sources":["../../../src/channel/api/stopReading.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,iBAAwB,MAAM,iCA8BrD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"startReading.test.d.ts","sourceRoot":"","sources":["../../../../src/channel/api/tests/startReading.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stopReading.test.d.ts","sourceRoot":"","sources":["../../../../src/channel/api/tests/stopReading.test.ts"],"names":[],"mappings":""}
|