@amityco/ts-sdk 7.1.1-e23f973a.0 → 7.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env +26 -26
- package/dist/@types/core/events.d.ts +2 -5
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/model.d.ts +2 -4
- package/dist/@types/core/model.d.ts.map +1 -1
- package/dist/@types/core/payload.d.ts +0 -18
- package/dist/@types/core/payload.d.ts.map +1 -1
- package/dist/@types/core/readReceipt.d.ts +12 -1
- package/dist/@types/core/readReceipt.d.ts.map +1 -1
- package/dist/@types/domains/channel.d.ts +10 -0
- package/dist/@types/domains/channel.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +2 -0
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/index.d.ts +0 -1
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/channelRepository/api/markChannelsAsReadBySegment.d.ts +16 -0
- package/dist/channelRepository/api/markChannelsAsReadBySegment.d.ts.map +1 -0
- package/dist/channelRepository/events/onChannelDeleted.d.ts.map +1 -1
- package/dist/channelRepository/events/onChannelLeft.d.ts.map +1 -1
- package/dist/{marker → channelRepository}/events/onChannelUnreadUpdatedLocal.d.ts +2 -2
- package/dist/channelRepository/events/onChannelUnreadUpdatedLocal.d.ts.map +1 -0
- package/dist/channelRepository/internalApi/getTotalChannelsUnread.d.ts +11 -0
- package/dist/channelRepository/internalApi/getTotalChannelsUnread.d.ts.map +1 -0
- package/dist/channelRepository/observers/getChannel.d.ts.map +1 -1
- package/dist/channelRepository/observers/getChannels/ChannelLiveCollectionController.d.ts.map +1 -1
- package/dist/channelRepository/observers/getTotalChannelsUnread.d.ts +20 -0
- package/dist/channelRepository/observers/getTotalChannelsUnread.d.ts.map +1 -0
- package/dist/channelRepository/observers/index.d.ts +1 -0
- package/dist/channelRepository/observers/index.d.ts.map +1 -1
- package/dist/channelRepository/utils/constructChannelDynamicValue.d.ts.map +1 -1
- package/dist/channelRepository/utils/getLegacyChannelUnread.d.ts +2 -0
- package/dist/channelRepository/utils/getLegacyChannelUnread.d.ts.map +1 -0
- package/dist/channelRepository/utils/prepareChannelPayload.d.ts.map +1 -1
- package/dist/client/api/createClient.d.ts +1 -0
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/enableUnreadCount.d.ts.map +1 -1
- package/dist/client/api/login.d.ts.map +1 -1
- package/dist/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngine.d.ts +33 -0
- package/dist/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngine.d.ts.map +1 -0
- package/dist/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler.d.ts +3 -0
- package/dist/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler.d.ts.map +1 -0
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts +2 -4
- package/dist/client/utils/ReadReceiptSync/readReceiptSyncEngine.d.ts.map +1 -1
- package/dist/client/utils/endpoints.d.ts +1 -0
- package/dist/client/utils/endpoints.d.ts.map +1 -1
- package/dist/client/utils/setClientToken.d.ts.map +1 -1
- package/dist/commentRepository/events/utils.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 +657 -474
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +639 -455
- package/dist/index.umd.js +4 -4
- package/dist/marker/events/onChannelUnreadInfoUpdatedLocal.d.ts +12 -0
- package/dist/marker/events/onChannelUnreadInfoUpdatedLocal.d.ts.map +1 -0
- package/dist/messageRepository/events/onMessageCreated.d.ts.map +1 -1
- package/dist/messageRepository/observers/getMessage.d.ts.map +1 -1
- package/dist/messageRepository/utils/markReadMessage.d.ts.map +1 -1
- package/dist/utils/linkedObject/index.d.ts +0 -1
- package/dist/utils/linkedObject/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/@types/core/events.ts +2 -6
- package/src/@types/core/model.ts +4 -6
- package/src/@types/core/payload.ts +0 -25
- package/src/@types/core/readReceipt.ts +14 -1
- package/src/@types/domains/channel.ts +13 -0
- package/src/@types/domains/client.ts +3 -0
- package/src/@types/index.ts +0 -1
- package/src/channelRepository/api/markChannelsAsReadBySegment.ts +29 -0
- package/src/channelRepository/events/onChannelDeleted.ts +17 -4
- package/src/channelRepository/events/onChannelLeft.ts +11 -3
- package/src/{marker → channelRepository}/events/onChannelUnreadUpdatedLocal.ts +3 -3
- package/src/channelRepository/internalApi/getTotalChannelsUnread.ts +38 -0
- package/src/channelRepository/observers/getChannel.ts +3 -1
- package/src/channelRepository/observers/getChannels/ChannelLiveCollectionController.ts +6 -1
- package/src/channelRepository/observers/getTotalChannelsUnread.ts +129 -0
- package/src/channelRepository/observers/index.ts +1 -0
- package/src/channelRepository/utils/constructChannelDynamicValue.ts +12 -2
- package/src/channelRepository/utils/getLegacyChannelUnread.ts +5 -0
- package/src/channelRepository/utils/prepareChannelPayload.ts +68 -17
- package/src/client/api/createClient.ts +7 -1
- package/src/client/api/enableUnreadCount.ts +1 -0
- package/src/client/api/login.ts +5 -1
- package/src/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngine.ts +267 -0
- package/src/client/utils/ReadReceiptSync/legacyReadReceiptSyncEngineOnLoginHandler.ts +21 -0
- package/src/client/utils/ReadReceiptSync/readReceiptSyncEngine.ts +74 -99
- package/src/client/utils/endpoints.ts +1 -0
- package/src/client/utils/setClientToken.ts +8 -0
- package/src/commentRepository/events/utils.ts +73 -0
- package/src/core/model/idResolvers.ts +2 -3
- package/src/core/model/index.ts +0 -2
- package/src/fileRepository/api/uploadFile.ts +1 -1
- package/src/fileRepository/api/uploadImage.ts +1 -1
- package/src/fileRepository/api/uploadVideo.ts +1 -1
- package/src/index.ts +0 -2
- package/src/marker/events/onChannelUnreadInfoUpdatedLocal.ts +29 -0
- package/src/messageRepository/events/onMessageCreated.ts +45 -1
- package/src/messageRepository/observers/getMessage.ts +0 -1
- package/src/messageRepository/utils/markReadMessage.ts +10 -3
- package/src/utils/linkedObject/index.ts +0 -2
- package/dist/@types/domains/notification.d.ts +0 -82
- package/dist/@types/domains/notification.d.ts.map +0 -1
- package/dist/marker/events/onChannelUnreadUpdatedLocal.d.ts.map +0 -1
- package/dist/notificationTray/api/index.d.ts +0 -3
- package/dist/notificationTray/api/index.d.ts.map +0 -1
- package/dist/notificationTray/api/markItemsSeen.d.ts +0 -16
- package/dist/notificationTray/api/markItemsSeen.d.ts.map +0 -1
- package/dist/notificationTray/api/markTraySeen.d.ts +0 -19
- package/dist/notificationTray/api/markTraySeen.d.ts.map +0 -1
- package/dist/notificationTray/events/index.d.ts +0 -2
- package/dist/notificationTray/events/index.d.ts.map +0 -1
- package/dist/notificationTray/events/onNotificationTraySeenUpdated.d.ts +0 -17
- package/dist/notificationTray/events/onNotificationTraySeenUpdated.d.ts.map +0 -1
- package/dist/notificationTray/index.d.ts +0 -4
- package/dist/notificationTray/index.d.ts.map +0 -1
- package/dist/notificationTray/internalApi/getNotificationTraySeen.d.ts +0 -30
- package/dist/notificationTray/internalApi/getNotificationTraySeen.d.ts.map +0 -1
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.d.ts +0 -13
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.d.ts.map +0 -1
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.d.ts +0 -9
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.d.ts.map +0 -1
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.d.ts +0 -9
- package/dist/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.d.ts.map +0 -1
- package/dist/notificationTray/observers/getNotificationTrayItems.d.ts +0 -12
- package/dist/notificationTray/observers/getNotificationTrayItems.d.ts.map +0 -1
- package/dist/notificationTray/observers/getNotificationTraySeen.d.ts +0 -21
- package/dist/notificationTray/observers/getNotificationTraySeen.d.ts.map +0 -1
- package/dist/notificationTray/observers/index.d.ts +0 -3
- package/dist/notificationTray/observers/index.d.ts.map +0 -1
- package/dist/notificationTray/utils/prepareNotificationTrayItemsPayload.d.ts +0 -2
- package/dist/notificationTray/utils/prepareNotificationTrayItemsPayload.d.ts.map +0 -1
- package/dist/utils/linkedObject/notificationTrayLinkedObject.d.ts +0 -2
- package/dist/utils/linkedObject/notificationTrayLinkedObject.d.ts.map +0 -1
- package/src/@types/domains/notification.ts +0 -91
- package/src/notificationTray/api/index.ts +0 -2
- package/src/notificationTray/api/markItemsSeen.ts +0 -59
- package/src/notificationTray/api/markTraySeen.ts +0 -65
- package/src/notificationTray/events/index.ts +0 -1
- package/src/notificationTray/events/onNotificationTraySeenUpdated.ts +0 -36
- package/src/notificationTray/index.ts +0 -3
- package/src/notificationTray/internalApi/getNotificationTraySeen.ts +0 -81
- package/src/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsLiveCollectionController.ts +0 -96
- package/src/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsPaginationController.ts +0 -31
- package/src/notificationTray/observers/getNotificationTrayItems/NotificationTrayItemsQuerystreamController.ts +0 -68
- package/src/notificationTray/observers/getNotificationTrayItems.ts +0 -44
- package/src/notificationTray/observers/getNotificationTraySeen.ts +0 -43
- package/src/notificationTray/observers/index.ts +0 -2
- package/src/notificationTray/utils/prepareNotificationTrayItemsPayload.ts +0 -12
- package/src/utils/linkedObject/notificationTrayLinkedObject.ts +0 -19
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import hash from 'object-hash';
|
|
2
|
-
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
3
|
-
import { NotificationTrayItemsPaginationController } from './NotificationTrayItemsPaginationController';
|
|
4
|
-
import { NotificationTrayItemsQuerystreamController } from './NotificationTrayItemsQuerystreamController';
|
|
5
|
-
import { LiveCollectionController } from '~/core/liveCollection/LiveCollectionController';
|
|
6
|
-
import { prepareNotificationTrayItemsPayload } from '~/notificationTray/utils/prepareNotificationTrayItemsPayload';
|
|
7
|
-
import { isNonNullable } from '~/utils';
|
|
8
|
-
import { LinkedObject } from '~/utils/linkedObject';
|
|
9
|
-
|
|
10
|
-
export class NotificationTrayItemsLiveCollectionController extends LiveCollectionController<
|
|
11
|
-
'notificationTrayItem',
|
|
12
|
-
Amity.NotificationTrayItemLiveCollection,
|
|
13
|
-
Amity.NotificationTrayItem,
|
|
14
|
-
NotificationTrayItemsPaginationController
|
|
15
|
-
> {
|
|
16
|
-
private queryStreamController: NotificationTrayItemsQuerystreamController;
|
|
17
|
-
|
|
18
|
-
private query: Amity.NotificationTrayItemLiveCollection;
|
|
19
|
-
|
|
20
|
-
constructor(
|
|
21
|
-
query: Amity.NotificationTrayItemLiveCollection,
|
|
22
|
-
callback: Amity.LiveCollectionCallback<Amity.NotificationTrayItem>,
|
|
23
|
-
) {
|
|
24
|
-
const queryStreamId = hash(query);
|
|
25
|
-
const cacheKey = ['notificationTrayItem', 'collection', queryStreamId];
|
|
26
|
-
const paginationController = new NotificationTrayItemsPaginationController(query);
|
|
27
|
-
|
|
28
|
-
super(paginationController, queryStreamId, cacheKey, callback);
|
|
29
|
-
|
|
30
|
-
this.query = query;
|
|
31
|
-
this.queryStreamController = new NotificationTrayItemsQuerystreamController(
|
|
32
|
-
this.query,
|
|
33
|
-
this.cacheKey,
|
|
34
|
-
this.notifyChange.bind(this),
|
|
35
|
-
prepareNotificationTrayItemsPayload,
|
|
36
|
-
);
|
|
37
|
-
|
|
38
|
-
this.callback = callback.bind(this);
|
|
39
|
-
this.loadPage({ initial: true });
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
protected setup() {
|
|
43
|
-
const collection = pullFromCache<Amity.NotificationTrayItemLiveCollectionCache>(
|
|
44
|
-
this.cacheKey,
|
|
45
|
-
)?.data;
|
|
46
|
-
if (!collection) {
|
|
47
|
-
pushToCache(this.cacheKey, {
|
|
48
|
-
data: [],
|
|
49
|
-
params: {},
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
protected async persistModel(queryPayload: Amity.NotificationTrayPayload & Amity.Pagination) {
|
|
55
|
-
await this.queryStreamController.saveToMainDB(queryPayload);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
protected persistQueryStream({
|
|
59
|
-
response,
|
|
60
|
-
direction,
|
|
61
|
-
refresh,
|
|
62
|
-
}: Amity.LiveCollectionPersistQueryStreamParams<'notificationTrayItem'>) {
|
|
63
|
-
this.queryStreamController.appendToQueryStream(response, direction, refresh);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// eslint-disable-next-line class-methods-use-this
|
|
67
|
-
startSubscription() {
|
|
68
|
-
return [] as Amity.Unsubscriber[];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
notifyChange({ origin, loading, error }: Amity.LiveCollectionNotifyParams) {
|
|
72
|
-
const collection = pullFromCache<Amity.NotificationTrayItemLiveCollectionCache>(
|
|
73
|
-
this.cacheKey,
|
|
74
|
-
)?.data;
|
|
75
|
-
if (!collection) return;
|
|
76
|
-
|
|
77
|
-
const data = (
|
|
78
|
-
collection.data
|
|
79
|
-
.map(id =>
|
|
80
|
-
pullFromCache<Amity.InternalNotificationTrayItem>(['notificationTrayItem', 'get', id]),
|
|
81
|
-
)
|
|
82
|
-
.filter(isNonNullable)
|
|
83
|
-
.map(({ data }) => data) ?? []
|
|
84
|
-
).map(LinkedObject.notificationTray);
|
|
85
|
-
|
|
86
|
-
if (!this.shouldNotify(data) && origin === 'event') return;
|
|
87
|
-
|
|
88
|
-
this.callback({
|
|
89
|
-
onNextPage: () => this.loadPage({ direction: Amity.LiveCollectionPageDirection.NEXT }),
|
|
90
|
-
data,
|
|
91
|
-
hasNextPage: !!this.paginationController.getNextToken(),
|
|
92
|
-
loading,
|
|
93
|
-
error,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { PaginationController } from '~/core/liveCollection/PaginationController';
|
|
2
|
-
import { COLLECTION_DEFAULT_PAGINATION_LIMIT } from '~/utils/constants';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* TODO: handle cache receive cache option, and cache policy
|
|
6
|
-
* TODO: check if querybyIds is supported
|
|
7
|
-
*/
|
|
8
|
-
export class NotificationTrayItemsPaginationController extends PaginationController<
|
|
9
|
-
'notificationTrayItem',
|
|
10
|
-
Amity.NotificationTrayItemLiveCollection
|
|
11
|
-
> {
|
|
12
|
-
async getRequest(
|
|
13
|
-
queryParams: Amity.NotificationTrayItemLiveCollection,
|
|
14
|
-
token: string | undefined,
|
|
15
|
-
) {
|
|
16
|
-
const { limit = COLLECTION_DEFAULT_PAGINATION_LIMIT, ...params } = queryParams;
|
|
17
|
-
|
|
18
|
-
const options = token ? { token } : { limit };
|
|
19
|
-
|
|
20
|
-
const { data: queryResponse } = await this.http.get<
|
|
21
|
-
Amity.NotificationTrayPayload & Amity.Pagination
|
|
22
|
-
>(`/api/v1/notification-tray`, {
|
|
23
|
-
params: {
|
|
24
|
-
...params,
|
|
25
|
-
options,
|
|
26
|
-
},
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
return queryResponse;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { QueryStreamController } from '~/core/liveCollection/QueryStreamController';
|
|
2
|
-
import { pullFromCache, pushToCache } from '~/cache/api';
|
|
3
|
-
import { ingestInCache } from '~/cache/api/ingestInCache';
|
|
4
|
-
import { getResolver } from '~/core/model';
|
|
5
|
-
import { getActiveClient } from '~/client';
|
|
6
|
-
|
|
7
|
-
export class NotificationTrayItemsQuerystreamController extends QueryStreamController<
|
|
8
|
-
Amity.NotificationTrayPayload,
|
|
9
|
-
Amity.NotificationTrayItemLiveCollection
|
|
10
|
-
> {
|
|
11
|
-
private notifyChange: (params: Amity.LiveCollectionNotifyParams) => void;
|
|
12
|
-
|
|
13
|
-
private preparePayload: (
|
|
14
|
-
response: Amity.NotificationTrayPayload,
|
|
15
|
-
) => Amity.ProcessedNotificationTrayPayload;
|
|
16
|
-
|
|
17
|
-
constructor(
|
|
18
|
-
query: Amity.NotificationTrayItemLiveCollection,
|
|
19
|
-
cacheKey: string[],
|
|
20
|
-
notifyChange: (params: Amity.LiveCollectionNotifyParams) => void,
|
|
21
|
-
preparePayload: (
|
|
22
|
-
response: Amity.NotificationTrayPayload,
|
|
23
|
-
) => Amity.ProcessedNotificationTrayPayload,
|
|
24
|
-
) {
|
|
25
|
-
super(query, cacheKey);
|
|
26
|
-
this.notifyChange = notifyChange;
|
|
27
|
-
this.preparePayload = preparePayload;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
async saveToMainDB(response: Amity.NotificationTrayPayload) {
|
|
31
|
-
const processedPayload = await this.preparePayload(response);
|
|
32
|
-
|
|
33
|
-
const client = getActiveClient();
|
|
34
|
-
const cachedAt = client.cache && Date.now();
|
|
35
|
-
|
|
36
|
-
if (client.cache) {
|
|
37
|
-
ingestInCache(processedPayload, { cachedAt });
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
appendToQueryStream(
|
|
42
|
-
response: Amity.NotificationTrayPayload & Partial<Amity.Pagination>,
|
|
43
|
-
direction: Amity.LiveCollectionPageDirection,
|
|
44
|
-
refresh = false,
|
|
45
|
-
) {
|
|
46
|
-
if (refresh) {
|
|
47
|
-
pushToCache(this.cacheKey, {
|
|
48
|
-
data: response.notificationTrayItems.map(getResolver('notificationTrayItem')),
|
|
49
|
-
});
|
|
50
|
-
} else {
|
|
51
|
-
const collection = pullFromCache<Amity.NotificationTrayItemLiveCollectionCache>(
|
|
52
|
-
this.cacheKey,
|
|
53
|
-
)?.data;
|
|
54
|
-
|
|
55
|
-
const notifications = collection?.data ?? [];
|
|
56
|
-
|
|
57
|
-
pushToCache(this.cacheKey, {
|
|
58
|
-
...collection,
|
|
59
|
-
data: [
|
|
60
|
-
...new Set([
|
|
61
|
-
...notifications,
|
|
62
|
-
...response.notificationTrayItems.map(getResolver('notificationTrayItem')),
|
|
63
|
-
]),
|
|
64
|
-
],
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { getActiveClient } from '~/client/api';
|
|
2
|
-
import { dropFromCache } from '~/cache/api';
|
|
3
|
-
import { ENABLE_CACHE_MESSAGE } from '~/utils/constants';
|
|
4
|
-
import { NotificationTrayItemsLiveCollectionController } from './getNotificationTrayItems/NotificationTrayItemsLiveCollectionController';
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Get notification tray items for a notification tray page
|
|
8
|
-
*
|
|
9
|
-
* @param params the limit query parameters
|
|
10
|
-
* @param callback the callback to be called when the notification tray items are updated
|
|
11
|
-
* @returns items in the notification tray
|
|
12
|
-
*
|
|
13
|
-
* @category Notification tray items Live Collection
|
|
14
|
-
*
|
|
15
|
-
*/
|
|
16
|
-
export const getNotificationTrayItems = (
|
|
17
|
-
params: Amity.LiveCollectionParams<Amity.NotificationTrayItemLiveCollection>,
|
|
18
|
-
callback: Amity.LiveCollectionCallback<Amity.NotificationTrayItem>,
|
|
19
|
-
config?: Amity.LiveCollectionConfig,
|
|
20
|
-
) => {
|
|
21
|
-
const { log, cache } = getActiveClient();
|
|
22
|
-
|
|
23
|
-
if (!cache) {
|
|
24
|
-
console.log(ENABLE_CACHE_MESSAGE);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const timestamp = Date.now();
|
|
28
|
-
log(`getNotificationTrayItems(tmpid: ${timestamp}) > listen`);
|
|
29
|
-
|
|
30
|
-
const notiTrayItemsLiveCollection = new NotificationTrayItemsLiveCollectionController(
|
|
31
|
-
params,
|
|
32
|
-
callback,
|
|
33
|
-
);
|
|
34
|
-
const disposers = notiTrayItemsLiveCollection.startSubscription();
|
|
35
|
-
|
|
36
|
-
const cacheKey = notiTrayItemsLiveCollection.getCacheKey();
|
|
37
|
-
|
|
38
|
-
disposers.push(() => dropFromCache(cacheKey));
|
|
39
|
-
|
|
40
|
-
return () => {
|
|
41
|
-
log(`getNotificationTrayItems(tmpid: ${timestamp}) > dispose`);
|
|
42
|
-
disposers.forEach(fn => fn());
|
|
43
|
-
};
|
|
44
|
-
};
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { liveObject } from '~/utils/liveObject';
|
|
2
|
-
import { getNotificationTraySeen as _getNotificationTraySeen } from '../internalApi/getNotificationTraySeen';
|
|
3
|
-
import { onNotificationTraySeenUpdated } from '../events/onNotificationTraySeenUpdated';
|
|
4
|
-
import { getActiveUser } from '~/client';
|
|
5
|
-
|
|
6
|
-
/* begin_public_function
|
|
7
|
-
id: notificationTraySeen.get
|
|
8
|
-
*/
|
|
9
|
-
/**
|
|
10
|
-
* ```js
|
|
11
|
-
* import { getNotificationTraySeen } from '@amityco/ts-sdk';
|
|
12
|
-
*
|
|
13
|
-
* let notificationTraySeen;
|
|
14
|
-
*
|
|
15
|
-
* const unsubscribe = getNotificationTraySeen(userId, response => {
|
|
16
|
-
* notificationTraySeen = response.data;
|
|
17
|
-
* });
|
|
18
|
-
* ```
|
|
19
|
-
*
|
|
20
|
-
* Observe all mutation on a given {@link Amity.NotificationTraySeen}
|
|
21
|
-
*
|
|
22
|
-
* @param userId the ID of the user to observe
|
|
23
|
-
* @param callback the function to call when new data are available
|
|
24
|
-
* @returns An {@link Amity.Unsubscriber} function to run when willing to stop observing the message
|
|
25
|
-
*
|
|
26
|
-
* @category NotificationTraySeen Live Object
|
|
27
|
-
*/
|
|
28
|
-
export const getNotificationTraySeen = (
|
|
29
|
-
callback: Amity.LiveObjectCallback<Amity.NotificationTraySeenPayload>,
|
|
30
|
-
): Amity.Unsubscriber => {
|
|
31
|
-
const responder: Amity.LiveObjectCallback<Amity.InternalNotificationTraySeen> = (
|
|
32
|
-
snapshot: Amity.LiveObject<Amity.InternalNotificationTraySeen>,
|
|
33
|
-
) => {
|
|
34
|
-
const { data } = snapshot;
|
|
35
|
-
callback({ ...snapshot, data });
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
const { userId } = getActiveUser();
|
|
39
|
-
return liveObject(userId, responder, 'userId', _getNotificationTraySeen, [
|
|
40
|
-
onNotificationTraySeenUpdated,
|
|
41
|
-
]);
|
|
42
|
-
};
|
|
43
|
-
/* end_public_function */
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { convertRawUserToInternalUser } from '~/userRepository/utils/convertRawUserToInternalUser';
|
|
2
|
-
|
|
3
|
-
export const prepareNotificationTrayItemsPayload = (
|
|
4
|
-
rawPayload: Amity.NotificationTrayPayload,
|
|
5
|
-
): Amity.ProcessedNotificationTrayPayload => {
|
|
6
|
-
const users = rawPayload.users.map(convertRawUserToInternalUser);
|
|
7
|
-
|
|
8
|
-
return {
|
|
9
|
-
...rawPayload,
|
|
10
|
-
users,
|
|
11
|
-
};
|
|
12
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { pullFromCache } from '~/cache/api';
|
|
2
|
-
import { isNonNullable } from '..';
|
|
3
|
-
import { WEEK } from '../constants';
|
|
4
|
-
import { userLinkedObject } from './userLinkedObject';
|
|
5
|
-
|
|
6
|
-
export const notificationTrayLinkedObject = (
|
|
7
|
-
noti: Amity.InternalNotificationTrayItem,
|
|
8
|
-
): Amity.NotificationTrayItem => {
|
|
9
|
-
return {
|
|
10
|
-
...noti,
|
|
11
|
-
isSeen: noti.lastSeenAt > noti.lastOccurredAt,
|
|
12
|
-
isRecent: new Date(noti.lastOccurredAt).getTime() >= Date.now() - WEEK,
|
|
13
|
-
users: noti.actors
|
|
14
|
-
.map(({ _id }) => pullFromCache<Amity.InternalUser>(['user', 'get', _id])!)
|
|
15
|
-
.filter(isNonNullable)
|
|
16
|
-
.map(({ data }) => data)
|
|
17
|
-
.map(user => userLinkedObject(user)),
|
|
18
|
-
};
|
|
19
|
-
};
|