@amityco/ts-sdk 0.0.1-beta.12 → 0.0.1-beta.15
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/README.md +3 -3
- package/dist/@types/core/cache.d.ts +2 -2
- package/dist/@types/core/cache.d.ts.map +1 -1
- package/dist/@types/core/events.d.ts +2 -2
- package/dist/@types/core/events.d.ts.map +1 -1
- package/dist/@types/core/paging.d.ts +19 -38
- package/dist/@types/core/paging.d.ts.map +1 -1
- package/dist/@types/core/query.d.ts +12 -4
- package/dist/@types/core/query.d.ts.map +1 -1
- package/dist/@types/domains/client.d.ts +1 -1
- package/dist/@types/domains/client.d.ts.map +1 -1
- package/dist/@types/domains/comment.d.ts +1 -1
- package/dist/@types/domains/comment.d.ts.map +1 -1
- package/dist/@types/domains/file.d.ts +2 -2
- package/dist/@types/domains/file.d.ts.map +1 -1
- package/dist/@types/domains/mention.d.ts +23 -0
- package/dist/@types/domains/mention.d.ts.map +1 -0
- package/dist/@types/domains/message.d.ts +1 -1
- package/dist/@types/domains/message.d.ts.map +1 -1
- package/dist/@types/domains/post.d.ts +2 -2
- package/dist/@types/domains/post.d.ts.map +1 -1
- package/dist/@types/index.d.ts +1 -0
- package/dist/@types/index.d.ts.map +1 -1
- package/dist/category/api/queryCategories.d.ts +3 -3
- package/dist/channel/api/queryChannelMembers.d.ts.map +1 -1
- package/dist/channel/api/queryChannels.d.ts +1 -1
- package/dist/client/api/createClient.d.ts +3 -3
- package/dist/client/api/createClient.d.ts.map +1 -1
- package/dist/client/api/disconnectClient.d.ts.map +1 -1
- package/dist/client/utils/endpoints.d.ts +12 -0
- package/dist/client/utils/endpoints.d.ts.map +1 -0
- package/dist/comment/api/createComment.d.ts +1 -1
- package/dist/comment/api/createComment.d.ts.map +1 -1
- package/dist/comment/api/updateComment.d.ts +1 -1
- package/dist/comment/api/updateComment.d.ts.map +1 -1
- package/dist/community/api/queryCommunities.d.ts +1 -1
- package/dist/core/debug.d.ts.map +1 -1
- package/dist/core/device.d.ts.map +1 -1
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/microtasks.d.ts +13 -0
- package/dist/core/microtasks.d.ts.map +1 -0
- package/dist/core/query/paging.d.ts +2 -13
- package/dist/core/query/paging.d.ts.map +1 -1
- package/dist/core/query/query.d.ts +1 -1
- package/dist/core/query/query.d.ts.map +1 -1
- package/dist/feed/api/queryGlobalFeed.d.ts +22 -4
- package/dist/feed/api/queryGlobalFeed.d.ts.map +1 -1
- package/dist/index.cjs.js +101 -74
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +101 -74
- package/dist/index.umd.js +5 -5
- package/dist/message/api/createMessage.d.ts +2 -2
- package/dist/message/api/createMessage.d.ts.map +1 -1
- package/dist/message/api/updateMessage.d.ts +2 -2
- package/dist/message/api/updateMessage.d.ts.map +1 -1
- package/dist/post/api/createPost.d.ts +7 -3
- package/dist/post/api/createPost.d.ts.map +1 -1
- package/dist/post/api/queryPosts.d.ts +3 -3
- package/dist/post/api/queryPosts.d.ts.map +1 -1
- package/dist/post/api/updatePost.d.ts +1 -1
- package/dist/post/api/updatePost.d.ts.map +1 -1
- package/dist/role/api/queryRoles.d.ts +1 -1
- package/dist/stream/api/queryStreams.d.ts +1 -1
- package/dist/utils/env.d.ts +5 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/rollup.config.js +3 -0
- package/src/@types/core/cache.ts +2 -2
- package/src/@types/core/events.ts +1 -1
- package/src/@types/core/paging.ts +29 -44
- package/src/@types/core/query.ts +7 -3
- package/src/@types/domains/client.ts +1 -1
- package/src/@types/domains/comment.ts +1 -0
- package/src/@types/domains/file.ts +2 -1
- package/src/@types/domains/mention.ts +26 -0
- package/src/@types/domains/message.ts +1 -0
- package/src/@types/domains/post.ts +2 -1
- package/src/@types/index.ts +2 -0
- package/src/channel/api/queryChannelMembers.ts +2 -1
- package/src/client/api/connectClient.ts +1 -1
- package/src/client/api/createClient.ts +7 -7
- package/src/client/api/disconnectClient.ts +0 -1
- package/src/client/utils/endpoints.ts +14 -0
- package/src/comment/api/createComment.ts +1 -2
- package/src/comment/api/updateComment.ts +1 -1
- package/src/community/api/queryCommunityMembers.ts +1 -1
- package/src/core/debug.ts +3 -1
- package/src/core/device.ts +3 -2
- package/src/core/events.ts +3 -1
- package/src/core/microtasks.ts +27 -0
- package/src/core/query/paging.ts +6 -41
- package/src/core/query/query.ts +5 -5
- package/src/core/subscription.ts +4 -4
- package/src/feed/api/queryGlobalFeed.ts +58 -5
- package/src/index.ts +1 -0
- package/src/message/api/createMessage.ts +2 -2
- package/src/message/api/updateMessage.ts +2 -2
- package/src/post/api/createPost.ts +6 -4
- package/src/post/api/queryPosts.ts +5 -5
- package/src/post/api/updatePost.ts +2 -2
- package/src/utils/env.ts +7 -0
- package/src/version.ts +3 -1
- package/dist/core/network.d.ts +0 -11
- package/dist/core/network.d.ts.map +0 -1
- package/src/core/network.ts +0 -14
package/dist/index.esm.js
CHANGED
|
@@ -6,11 +6,14 @@ import io from 'socket.io-client';
|
|
|
6
6
|
import mitt from 'mitt';
|
|
7
7
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
8
8
|
|
|
9
|
-
var _a;
|
|
10
|
-
|
|
11
|
-
const
|
|
9
|
+
var _a$1;
|
|
10
|
+
const theGlobal = globalThis || global || window;
|
|
11
|
+
const { process: safeProcess = {} } = theGlobal;
|
|
12
|
+
const isProduction = ((_a$1 = safeProcess.env) === null || _a$1 === void 0 ? void 0 : _a$1.NODE_ENV) === 'production';
|
|
13
|
+
|
|
14
|
+
var _a, _b;
|
|
15
|
+
const VERSION$1 = (_b = (_a = safeProcess.env) === null || _a === void 0 ? void 0 : _a.VERSION) !== null && _b !== void 0 ? _b : '__dev__';
|
|
12
16
|
|
|
13
|
-
// @ts-ignore
|
|
14
17
|
/**
|
|
15
18
|
* Type guard to find if the a given decoded backend token uses "skip/limit" pagination style
|
|
16
19
|
*
|
|
@@ -28,7 +31,7 @@ const isSkipLimit = (json) => (['skip', 'limit'].some(prop => prop in json));
|
|
|
28
31
|
*
|
|
29
32
|
* @hidden
|
|
30
33
|
*/
|
|
31
|
-
const isAfterBefore = (json) => (['after', 'before', 'first', 'last'].some(prop => prop in json));
|
|
34
|
+
const isAfterBefore = (json) => (['after', 'before', 'first', 'last', 'limit'].some(prop => prop in json));
|
|
32
35
|
/**
|
|
33
36
|
* Type guard to find if the a given decoded backend token uses v4 or newer "after/before" pagination style
|
|
34
37
|
*
|
|
@@ -37,7 +40,7 @@ const isAfterBefore = (json) => (['after', 'before', 'first', 'last'].some(prop
|
|
|
37
40
|
*
|
|
38
41
|
* @hidden
|
|
39
42
|
*/
|
|
40
|
-
const isAfterBeforeRaw = (json) => (
|
|
43
|
+
const isAfterBeforeRaw = (json) => ('limit' in json);
|
|
41
44
|
/**
|
|
42
45
|
* Type guard to find if the a given object is wrapped around Amity.Paged<>
|
|
43
46
|
*
|
|
@@ -72,7 +75,7 @@ const toToken = (paging, style) => {
|
|
|
72
75
|
limit: paging.limit,
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
|
-
else if (style === 'afterbefore') {
|
|
78
|
+
else if (style === 'afterbefore' && isAfterBefore(paging)) {
|
|
76
79
|
/*
|
|
77
80
|
Caution: this testing style is only valid because
|
|
78
81
|
our backend expects nothing else than a number as
|
|
@@ -158,35 +161,6 @@ const toPageRaw = (token) => {
|
|
|
158
161
|
return json;
|
|
159
162
|
}
|
|
160
163
|
return null;
|
|
161
|
-
};
|
|
162
|
-
/**
|
|
163
|
-
* Slices a collection according to its paging
|
|
164
|
-
*
|
|
165
|
-
* @param type the type of collection (for unique id identification with after/before)
|
|
166
|
-
* @param collection the collection to slice
|
|
167
|
-
* @param paging the paging object
|
|
168
|
-
* @returns the sliced collection according to the paging definition
|
|
169
|
-
*
|
|
170
|
-
* @hidden
|
|
171
|
-
*/
|
|
172
|
-
const sliceByPaging = (type, collection, page) => {
|
|
173
|
-
console.log('slice by paging', page);
|
|
174
|
-
if (!page)
|
|
175
|
-
return collection.slice();
|
|
176
|
-
let start = 0;
|
|
177
|
-
let end = undefined;
|
|
178
|
-
// next page behavior
|
|
179
|
-
if (page.after) {
|
|
180
|
-
start = page.after;
|
|
181
|
-
end = start + page.limit;
|
|
182
|
-
// prev page behavior
|
|
183
|
-
}
|
|
184
|
-
else if (page.before) {
|
|
185
|
-
end = page.before + 1;
|
|
186
|
-
start = end > page.limit ? end - page.limit : 0;
|
|
187
|
-
}
|
|
188
|
-
const paged = collection.slice(start, end);
|
|
189
|
-
return paged.length === page.limit ? paged : undefined;
|
|
190
164
|
};
|
|
191
165
|
|
|
192
166
|
/**
|
|
@@ -500,7 +474,7 @@ const setActiveClient = (client) => {
|
|
|
500
474
|
*/
|
|
501
475
|
const createLogger = (session) => {
|
|
502
476
|
const active = (`${session === null || session === void 0 ? void 0 : session.trim()}`.length > 0
|
|
503
|
-
&&
|
|
477
|
+
&& !isProduction);
|
|
504
478
|
const logger = debug(session);
|
|
505
479
|
const print = (topic, ...args) => {
|
|
506
480
|
active && logger(topic, args);
|
|
@@ -509,19 +483,18 @@ const createLogger = (session) => {
|
|
|
509
483
|
return print;
|
|
510
484
|
};
|
|
511
485
|
|
|
512
|
-
const
|
|
486
|
+
const API_REGIONS = {
|
|
513
487
|
EU: 'eu',
|
|
514
488
|
SG: 'sg',
|
|
515
489
|
US: 'us',
|
|
516
490
|
};
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
};
|
|
491
|
+
const URLS = {
|
|
492
|
+
http: 'https://api.{region}.amity.co',
|
|
493
|
+
mqtt: 'wss://sse.{region}.amity.co:443/mqtt',
|
|
494
|
+
};
|
|
495
|
+
function computeUrl(type, region) {
|
|
496
|
+
return URLS[type].replace('{region}', region);
|
|
497
|
+
}
|
|
525
498
|
|
|
526
499
|
/**
|
|
527
500
|
* Unwraps v3 server payload (for error handling and type extraction)
|
|
@@ -14727,6 +14700,22 @@ const createMqttTransport = (endpoint) => {
|
|
|
14727
14700
|
};
|
|
14728
14701
|
};
|
|
14729
14702
|
|
|
14703
|
+
let tasks = [];
|
|
14704
|
+
let timer;
|
|
14705
|
+
/**
|
|
14706
|
+
* Add a function to run just before the next tick
|
|
14707
|
+
*
|
|
14708
|
+
* @param task function to schedule for later execution
|
|
14709
|
+
*/
|
|
14710
|
+
const scheduleTask = (task) => {
|
|
14711
|
+
clearTimeout(timer);
|
|
14712
|
+
tasks.push(task);
|
|
14713
|
+
timer = setTimeout(() => {
|
|
14714
|
+
tasks.forEach(fn => fn());
|
|
14715
|
+
tasks = [];
|
|
14716
|
+
}, 0);
|
|
14717
|
+
};
|
|
14718
|
+
|
|
14730
14719
|
// need to sync up the list
|
|
14731
14720
|
const WS_EVENTS = [
|
|
14732
14721
|
'disconnected',
|
|
@@ -14817,7 +14806,7 @@ const createEventSubscriber = (client, namespace, event, fn) => {
|
|
|
14817
14806
|
*/
|
|
14818
14807
|
const fireEvent = (event, payload) => {
|
|
14819
14808
|
const { emitter } = getActiveClient();
|
|
14820
|
-
|
|
14809
|
+
scheduleTask(() => { emitter.emit(event, payload); });
|
|
14821
14810
|
};
|
|
14822
14811
|
|
|
14823
14812
|
/**
|
|
@@ -14829,21 +14818,21 @@ const fireEvent = (event, payload) => {
|
|
|
14829
14818
|
* Creates a new {@link Amity.Client} instance
|
|
14830
14819
|
*
|
|
14831
14820
|
* @param apiKey for the {@link Amity.Client} instance
|
|
14832
|
-
* @param
|
|
14821
|
+
* @param apiRegion endpoint to connect to
|
|
14833
14822
|
* @param debugSession session's identifier for the client's logger instance
|
|
14834
14823
|
* @returns A {@link Amity.Client} instance
|
|
14835
14824
|
*
|
|
14836
14825
|
* @category Client API
|
|
14837
14826
|
**/
|
|
14838
|
-
const createClient = (apiKey,
|
|
14827
|
+
const createClient = (apiKey, apiRegion = API_REGIONS.SG, debugSession = 'amity') => {
|
|
14839
14828
|
const log = createLogger(debugSession);
|
|
14840
14829
|
log('client/api/createClient', {
|
|
14841
14830
|
apiKey: apiKey.replace(/.{5}$/g, 'xxxxx'),
|
|
14842
|
-
|
|
14831
|
+
apiRegion,
|
|
14843
14832
|
});
|
|
14844
|
-
const http = createHttpTransport(
|
|
14845
|
-
const ws = createWebsocketTransport(
|
|
14846
|
-
const mqtt = createMqttTransport(
|
|
14833
|
+
const http = createHttpTransport(computeUrl('http', apiRegion));
|
|
14834
|
+
const ws = createWebsocketTransport(computeUrl('http', apiRegion));
|
|
14835
|
+
const mqtt = createMqttTransport(computeUrl('mqtt', apiRegion));
|
|
14847
14836
|
const emitter = createEventEmitter();
|
|
14848
14837
|
const client = {
|
|
14849
14838
|
version: `${VERSION$1}`,
|
|
@@ -14891,13 +14880,11 @@ const disconnectClient = async () => {
|
|
|
14891
14880
|
client.ws.removeAllListeners();
|
|
14892
14881
|
client.mqtt.removeAllListeners();
|
|
14893
14882
|
client.userId = undefined;
|
|
14894
|
-
client.user = undefined;
|
|
14895
14883
|
client.accessToken = undefined;
|
|
14896
14884
|
return !client.ws.connected;
|
|
14897
14885
|
};
|
|
14898
14886
|
|
|
14899
14887
|
// TODO: find a way to uniquely identify the device
|
|
14900
|
-
// import { getStorage } from './storage'
|
|
14901
14888
|
/** @hidden */
|
|
14902
14889
|
const VERSION = '11.0.0';
|
|
14903
14890
|
/** @hidden */
|
|
@@ -14912,8 +14899,8 @@ const getDeviceId = () => {
|
|
|
14912
14899
|
/** @hidden */
|
|
14913
14900
|
const getDeviceModel = () => {
|
|
14914
14901
|
var _a, _b;
|
|
14915
|
-
if ((_a =
|
|
14916
|
-
return
|
|
14902
|
+
if ((_a = safeProcess.versions) === null || _a === void 0 ? void 0 : _a.node)
|
|
14903
|
+
return safeProcess.versions.node;
|
|
14917
14904
|
if (navigator)
|
|
14918
14905
|
return `${navigator.product.toLowerCase()}#${(_b = navigator.userAgent) !== null && _b !== void 0 ? _b : 'unknown_agent'}`;
|
|
14919
14906
|
return 'unknown_model';
|
|
@@ -15076,7 +15063,7 @@ const connectClient = async (params) => {
|
|
|
15076
15063
|
unsubscribe();
|
|
15077
15064
|
});
|
|
15078
15065
|
client.userId = params.userId;
|
|
15079
|
-
client.
|
|
15066
|
+
client._internalUserId = users[0]._id;
|
|
15080
15067
|
client.accessToken = accessToken;
|
|
15081
15068
|
return client.ws.connected;
|
|
15082
15069
|
};
|
|
@@ -15138,11 +15125,11 @@ const getCommentTopic = ({ path }) => {
|
|
|
15138
15125
|
let mqttAccessToken;
|
|
15139
15126
|
let mqttUserId;
|
|
15140
15127
|
function subscribeTopic(topic, callback) {
|
|
15141
|
-
const { mqtt, emitter, accessToken,
|
|
15142
|
-
if (mqttAccessToken !== accessToken || mqttUserId !==
|
|
15128
|
+
const { mqtt, emitter, accessToken, _internalUserId } = getActiveClient();
|
|
15129
|
+
if (mqttAccessToken !== accessToken || mqttUserId !== _internalUserId) {
|
|
15143
15130
|
mqttAccessToken = accessToken;
|
|
15144
|
-
mqttUserId =
|
|
15145
|
-
mqtt.connect({ accessToken:
|
|
15131
|
+
mqttUserId = _internalUserId;
|
|
15132
|
+
mqtt.connect({ accessToken: mqttAccessToken, userId: mqttUserId });
|
|
15146
15133
|
proxyMqttEvents(mqtt, emitter);
|
|
15147
15134
|
}
|
|
15148
15135
|
return mqtt.subscribe(topic, callback);
|
|
@@ -16636,11 +16623,11 @@ const queryPosts = async (query) => {
|
|
|
16636
16623
|
const { page = { limit: 10 } } = query, params = __rest(query
|
|
16637
16624
|
// API-FIX: parameters should be querystring. (1)
|
|
16638
16625
|
// API-FIX: backend should answer Amity.Response (2)
|
|
16639
|
-
// const { data } = await client.http.get<Amity.Response<Amity.
|
|
16626
|
+
// const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
|
|
16640
16627
|
, ["page"]);
|
|
16641
16628
|
// API-FIX: parameters should be querystring. (1)
|
|
16642
16629
|
// API-FIX: backend should answer Amity.Response (2)
|
|
16643
|
-
// const { data } = await client.http.get<Amity.Response<Amity.
|
|
16630
|
+
// const { data } = await client.http.get<Amity.Response<Amity.PagedResponse<Amity.PostPayload>>>(
|
|
16644
16631
|
const { data } = await client.http.get(`/api/v4/posts`, { params: Object.assign(Object.assign({}, params), { options: {
|
|
16645
16632
|
token: toToken(page, 'afterbeforeraw'),
|
|
16646
16633
|
} }), });
|
|
@@ -16842,9 +16829,9 @@ const createPost = async (bundle) => {
|
|
|
16842
16829
|
const client = getActiveClient();
|
|
16843
16830
|
client.log('post/createPost', bundle);
|
|
16844
16831
|
// API-FIX: backend rejects that we pass the dataType manually T_T
|
|
16845
|
-
if (!bundle.dataType || ['text', 'image', 'file'].includes(bundle.dataType))
|
|
16832
|
+
if (!bundle.dataType || ['text', 'image', 'file', 'video'].includes(bundle.dataType))
|
|
16846
16833
|
delete bundle.dataType;
|
|
16847
|
-
const { data } = await client.http.post('/api/
|
|
16834
|
+
const { data } = await client.http.post('/api/v4/posts', bundle);
|
|
16848
16835
|
const cachedAt = client.cache && Date.now();
|
|
16849
16836
|
if (client.cache)
|
|
16850
16837
|
ingestInCache(data, { cachedAt });
|
|
@@ -16876,7 +16863,7 @@ const createPost = async (bundle) => {
|
|
|
16876
16863
|
const updatePost = async (postId, patch) => {
|
|
16877
16864
|
const client = getActiveClient();
|
|
16878
16865
|
client.log('user/updatePost', patch);
|
|
16879
|
-
const { data } = await client.http.put(`/api/
|
|
16866
|
+
const { data } = await client.http.put(`/api/v4/posts/${encodeURIComponent(postId)}`, patch);
|
|
16880
16867
|
const cachedAt = client.cache && Date.now();
|
|
16881
16868
|
if (client.cache)
|
|
16882
16869
|
ingestInCache(data, { cachedAt });
|
|
@@ -17227,7 +17214,7 @@ const queryCommunityMembers = async (query) => {
|
|
|
17227
17214
|
}
|
|
17228
17215
|
const nextPage = toPage(paging.next);
|
|
17229
17216
|
const prevPage = toPage(paging.previous);
|
|
17230
|
-
return { data: communityUsers, nextPage, prevPage };
|
|
17217
|
+
return { data: communityUsers, cachedAt, nextPage, prevPage };
|
|
17231
17218
|
};
|
|
17232
17219
|
/**
|
|
17233
17220
|
* ```js
|
|
@@ -18745,12 +18732,13 @@ const queryChannelMembers = async (query) => {
|
|
|
18745
18732
|
});
|
|
18746
18733
|
const { paging } = data, payload = __rest(data, ["paging"]);
|
|
18747
18734
|
const { channelUsers } = payload;
|
|
18735
|
+
const cachedAt = client.cache && Date.now();
|
|
18748
18736
|
if (client.cache) {
|
|
18749
18737
|
ingestInCache(payload);
|
|
18750
18738
|
}
|
|
18751
18739
|
const nextPage = toPage(paging.next);
|
|
18752
18740
|
const prevPage = toPage(paging.previous);
|
|
18753
|
-
return { data: channelUsers, nextPage, prevPage };
|
|
18741
|
+
return { data: channelUsers, cachedAt, nextPage, prevPage };
|
|
18754
18742
|
};
|
|
18755
18743
|
/**
|
|
18756
18744
|
* ```js
|
|
@@ -19495,17 +19483,56 @@ const observeCommunity = (communityId, callback) => {
|
|
|
19495
19483
|
const queryGlobalFeed = async (query) => {
|
|
19496
19484
|
const client = getActiveClient();
|
|
19497
19485
|
client.log('feed/queryGlobalFeed', query);
|
|
19498
|
-
const _a = query !== null && query !== void 0 ? query : {}, { page } = _a, params = __rest(_a, ["page"]);
|
|
19499
|
-
const { data } = await client.http.get(`/api/v4/me/global-feeds`, { params: Object.assign(Object.assign({}, params), { options: {
|
|
19486
|
+
const _a = query !== null && query !== void 0 ? query : {}, { useCustomRanking, page } = _a, params = __rest(_a, ["useCustomRanking", "page"]);
|
|
19487
|
+
const { data } = await client.http.get(useCustomRanking ? `/api/v5/me/global-feeds` : `/api/v4/me/global-feeds`, { params: Object.assign(Object.assign({}, params), { options: {
|
|
19500
19488
|
token: toToken(page, 'skiplimit')
|
|
19501
19489
|
} }) });
|
|
19502
19490
|
const { paging } = data, payload = __rest(data, ["paging"]);
|
|
19503
19491
|
const { posts } = payload;
|
|
19504
|
-
|
|
19492
|
+
const cachedAt = client.cache && Date.now();
|
|
19493
|
+
if (client.cache) {
|
|
19505
19494
|
ingestInCache(payload);
|
|
19495
|
+
const cacheKey = ['globalFeed', 'query', Object.assign(Object.assign({}, params), { useCustomRanking, options: Object.assign({}, page) })];
|
|
19496
|
+
pushToCache(cacheKey, { posts: posts.map(getResolver('post')), paging });
|
|
19497
|
+
}
|
|
19506
19498
|
const nextPage = toPage(paging.next);
|
|
19507
19499
|
const prevPage = toPage(paging.previous);
|
|
19508
|
-
return { data: posts, prevPage, nextPage };
|
|
19500
|
+
return { data: posts, cachedAt, prevPage, nextPage };
|
|
19501
|
+
};
|
|
19502
|
+
/**
|
|
19503
|
+
* ```js
|
|
19504
|
+
* import { queryGlobalFeed } from '@amityco/ts-sdk'
|
|
19505
|
+
* const posts = await queryGlobalFeed.locally()
|
|
19506
|
+
* ```
|
|
19507
|
+
*
|
|
19508
|
+
* Queries a paginable list of {@link Amity.Post} objects from cache
|
|
19509
|
+
*
|
|
19510
|
+
* @param query The query parameters
|
|
19511
|
+
* @returns A page of {@link Amity.Post} objects
|
|
19512
|
+
*
|
|
19513
|
+
* @category Feed API
|
|
19514
|
+
* @async
|
|
19515
|
+
**/
|
|
19516
|
+
queryGlobalFeed.locally = (query) => {
|
|
19517
|
+
var _a, _b;
|
|
19518
|
+
const client = getActiveClient();
|
|
19519
|
+
client.log('post/queryGlobalFeed.locally', query);
|
|
19520
|
+
if (!client.cache)
|
|
19521
|
+
return;
|
|
19522
|
+
const _c = query !== null && query !== void 0 ? query : {}, { useCustomRanking, page } = _c, params = __rest(_c, ["useCustomRanking", "page"]);
|
|
19523
|
+
const queryKey = ['globalFeed', 'query', Object.assign(Object.assign({}, params), { useCustomRanking, options: Object.assign({}, page) })];
|
|
19524
|
+
const { data, cachedAt } = (_a = pullFromCache(queryKey)) !== null && _a !== void 0 ? _a : {};
|
|
19525
|
+
if (!(data === null || data === void 0 ? void 0 : data.posts.length))
|
|
19526
|
+
return;
|
|
19527
|
+
const posts = data.posts
|
|
19528
|
+
.map(postId => pullFromCache(['post', 'get', postId]))
|
|
19529
|
+
.filter(Boolean)
|
|
19530
|
+
.map(({ data }) => data);
|
|
19531
|
+
const prevPage = toPage(data === null || data === void 0 ? void 0 : data.paging.previous);
|
|
19532
|
+
const nextPage = toPage(data === null || data === void 0 ? void 0 : data.paging.next);
|
|
19533
|
+
return posts.length === ((_b = data === null || data === void 0 ? void 0 : data.posts) === null || _b === void 0 ? void 0 : _b.length)
|
|
19534
|
+
? { data: posts, cachedAt, prevPage, nextPage }
|
|
19535
|
+
: undefined;
|
|
19509
19536
|
};
|
|
19510
19537
|
|
|
19511
19538
|
/**
|
|
@@ -19966,4 +19993,4 @@ const onStreamRecorded = (callback) => {
|
|
|
19966
19993
|
return createEventSubscriber(client, 'stream/onStreamRecorded', 'video-streaming.didRecord', filter);
|
|
19967
19994
|
};
|
|
19968
19995
|
|
|
19969
|
-
export { SubscriptionLevels, VERSION$1 as VERSION, addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRole, addReaction, backupCache, connectClient, createChannel, createClient, createComment, createCommunity, createFile, createMessage, createPost, createQuery, createReport, createStream, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePost, deleteReport, deleteStream, disableCache, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByPropEquality, getActiveClient, getChannel, getChannels, getComment, getCommentTopic, getComments, getCommunities, getCommunity, getCommunityTopic, getFile, getMessage, getMessages, getPost, getPostTopic, getPosts, getRole, getStream, getUser, getUserTopic, getUsers, isAfterBefore, isAfterBeforeRaw, isCachable, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkipLimit, joinChannel, joinCommunity, leaveChannel, leaveCommunity, mergeInCache, observeChannel, observeComment, observeComments, observeCommunity, observeFile, observeMessage, observeMessages, observePost, observePosts, observeUser, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentFlagged, onCommentReactionAdded, onCommentReactionRemoved, onCommentUnflagged, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onCommunityUserAdded, onCommunityUserBanned, onCommunityUserRemoved, onCommunityUserUnbanned, onConnectionError, onMemberAdded, onMemberRemoved, onMessageCreated, onMessageDeleted, onMessageUpdated, onPostApproved, onPostCreated, onPostDeclined, onPostDeleted, onPostFlagged, onPostReactionAdded, onPostReactionRemoved, onPostUnflagged, onPostUpdated, onReactionRemoved, onStreamRecorded, onStreamStarted, onStreamStopped, onUserFlagCleared, onUserFlagged, onUserUnflagged, onUserUpdated, pullFromCache, pushToCache, queryCache, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryRoles, queryStreams, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRole, removeReaction, restoreCache, runQuery,
|
|
19996
|
+
export { API_REGIONS, SubscriptionLevels, VERSION$1 as VERSION, addChannelMembers, addChannelMembersRole, addCommunityMembers, addCommunityMembersRole, addReaction, backupCache, connectClient, createChannel, createClient, createComment, createCommunity, createFile, createMessage, createPost, createQuery, createReport, createStream, deleteChannel, deleteComment, deleteCommunity, deleteFile, deleteMessage, deletePost, deleteReport, deleteStream, disableCache, disconnectClient, disposeStream, dropFromCache, enableCache, fileUrlWithSize, filterByPropEquality, getActiveClient, getChannel, getChannels, getComment, getCommentTopic, getComments, getCommunities, getCommunity, getCommunityTopic, getFile, getMessage, getMessages, getPost, getPostTopic, getPosts, getRole, getStream, getUser, getUserTopic, getUsers, isAfterBefore, isAfterBeforeRaw, isCachable, isConnected, isFetcher, isFresh, isLocal, isMutator, isOffline, isPaged, isReportedByMe, isSkipLimit, joinChannel, joinCommunity, leaveChannel, leaveCommunity, mergeInCache, observeChannel, observeComment, observeComments, observeCommunity, observeFile, observeMessage, observeMessages, observePost, observePosts, observeUser, onChannelDeleted, onChannelJoined, onChannelLeft, onChannelUpdated, onClientBanned, onClientDisconnected, onCommentCreated, onCommentDeleted, onCommentFlagged, onCommentReactionAdded, onCommentReactionRemoved, onCommentUnflagged, onCommentUpdated, onCommunityCreated, onCommunityDeleted, onCommunityJoined, onCommunityLeft, onCommunityUpdated, onCommunityUserAdded, onCommunityUserBanned, onCommunityUserRemoved, onCommunityUserUnbanned, onConnectionError, onMemberAdded, onMemberRemoved, onMessageCreated, onMessageDeleted, onMessageUpdated, onPostApproved, onPostCreated, onPostDeclined, onPostDeleted, onPostFlagged, onPostReactionAdded, onPostReactionRemoved, onPostUnflagged, onPostUpdated, onReactionRemoved, onStreamRecorded, onStreamStarted, onStreamStopped, onUserFlagCleared, onUserFlagged, onUserUnflagged, onUserUpdated, pullFromCache, pushToCache, queryCache, queryChannelMembers, queryChannels, queryComments, queryCommunities, queryCommunityMembers, queryGlobalFeed, queryMessages, queryOptions, queryPosts, queryRoles, queryStreams, queryUsers, removeChannelMembers, removeChannelMembersRole, removeCommunityMembers, removeCommunityMembersRole, removeReaction, restoreCache, runQuery, sortByChannelSegment, sortByDisplayName, sortByFirstCreated, sortByLastActivity, sortByLastCreated, sortBySegmentNumber, subscribeTopic, toPage, toPageRaw, toToken, updateChannel, updateComment, updateCommunity, updateMessage, updatePost, updateStream, updateUser, upsertInCache, wipeCache };
|