@arbidocs/react 0.5.88 → 0.5.90
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 +11 -6
- package/dist/artifacts/index.cjs +13 -13
- package/dist/artifacts/index.js +3 -3
- package/dist/calls/livekit/index.cjs +48 -48
- package/dist/calls/livekit/index.js +3 -3
- package/dist/{chunk-DS7NTSKH.cjs → chunk-6BXRZYL2.cjs} +38 -38
- package/dist/{chunk-DS7NTSKH.cjs.map → chunk-6BXRZYL2.cjs.map} +1 -1
- package/dist/{chunk-BFNY3RZG.js → chunk-7PMNITKA.js} +2 -2
- package/dist/chunk-7PMNITKA.js.map +1 -0
- package/dist/{chunk-AOPGD23L.cjs → chunk-7RUVJZZG.cjs} +57 -57
- package/dist/{chunk-AOPGD23L.cjs.map → chunk-7RUVJZZG.cjs.map} +1 -1
- package/dist/{chunk-C4WODQGO.cjs → chunk-BRFRQWAY.cjs} +2 -2
- package/dist/chunk-BRFRQWAY.cjs.map +1 -0
- package/dist/{chunk-YQBDEOVE.js → chunk-HGLS3IC6.js} +3 -3
- package/dist/{chunk-YQBDEOVE.js.map → chunk-HGLS3IC6.js.map} +1 -1
- package/dist/{chunk-DU2P354H.js → chunk-IIOOXKOB.js} +4 -4
- package/dist/{chunk-DU2P354H.js.map → chunk-IIOOXKOB.js.map} +1 -1
- package/dist/{chunk-S3OGDLDC.js → chunk-KZBYWXPS.js} +3 -3
- package/dist/{chunk-S3OGDLDC.js.map → chunk-KZBYWXPS.js.map} +1 -1
- package/dist/{chunk-KTXZ222T.js → chunk-N3SFVZ7H.js} +3 -3
- package/dist/{chunk-KTXZ222T.js.map → chunk-N3SFVZ7H.js.map} +1 -1
- package/dist/{chunk-GKWMT64A.cjs → chunk-NJDVQIJR.cjs} +4 -4
- package/dist/{chunk-GKWMT64A.cjs.map → chunk-NJDVQIJR.cjs.map} +1 -1
- package/dist/{chunk-ZHXYFJIA.cjs → chunk-NR6PUE5O.cjs} +44 -44
- package/dist/{chunk-ZHXYFJIA.cjs.map → chunk-NR6PUE5O.cjs.map} +1 -1
- package/dist/{chunk-73ENECAT.js → chunk-RIPYDSRJ.js} +259 -10
- package/dist/chunk-RIPYDSRJ.js.map +1 -0
- package/dist/{chunk-QLRDHLWR.cjs → chunk-X4HGUBWU.cjs} +344 -69
- package/dist/chunk-X4HGUBWU.cjs.map +1 -0
- package/dist/document-tools/core.cjs +98 -98
- package/dist/document-tools/core.js +3 -3
- package/dist/document-tools/index.cjs +100 -100
- package/dist/document-tools/index.js +4 -4
- package/dist/index.cjs +5882 -5768
- package/dist/index.cjs.map +1 -1
- package/dist/{index.d-1_bJB-Yl.d.ts → index.d-BMhTH98a.d.cts} +65 -65
- package/dist/{index.d-1_bJB-Yl.d.cts → index.d-BMhTH98a.d.ts} +65 -65
- package/dist/index.d.cts +123 -43
- package/dist/index.d.ts +123 -43
- package/dist/index.js +4986 -4879
- package/dist/index.js.map +1 -1
- package/dist/ui/index.d.cts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/package.json +3 -3
- package/dist/chunk-73ENECAT.js.map +0 -1
- package/dist/chunk-BFNY3RZG.js.map +0 -1
- package/dist/chunk-C4WODQGO.cjs.map +0 -1
- package/dist/chunk-QLRDHLWR.cjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk7RUVJZZG_cjs = require('./chunk-7RUVJZZG.cjs');
|
|
4
|
+
var chunkBRFRQWAY_cjs = require('./chunk-BRFRQWAY.cjs');
|
|
5
5
|
var chunkRLSBRZ6Z_cjs = require('./chunk-RLSBRZ6Z.cjs');
|
|
6
6
|
var chunkEEIYXVM4_cjs = require('./chunk-EEIYXVM4.cjs');
|
|
7
7
|
var reactQuery = require('@tanstack/react-query');
|
|
@@ -10,9 +10,9 @@ var browser = require('@arbidocs/sdk/browser');
|
|
|
10
10
|
var client = require('@arbidocs/client');
|
|
11
11
|
|
|
12
12
|
function useUserSettings(options) {
|
|
13
|
-
const arbi =
|
|
13
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
14
14
|
return reactQuery.useQuery({
|
|
15
|
-
queryKey:
|
|
15
|
+
queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings(),
|
|
16
16
|
queryFn: () => arbi.settings.get(),
|
|
17
17
|
// Edited about once a month, and every write here patches the cache: no refetch on each mount.
|
|
18
18
|
staleTime: 30 * 60 * 1e3,
|
|
@@ -20,23 +20,23 @@ function useUserSettings(options) {
|
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
22
|
function useUpdateUserSettings() {
|
|
23
|
-
const arbi =
|
|
23
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
24
24
|
const qc = reactQuery.useQueryClient();
|
|
25
25
|
return reactQuery.useMutation({
|
|
26
26
|
mutationFn: (patch) => arbi.settings.update(patch),
|
|
27
27
|
onMutate: async (patch) => {
|
|
28
|
-
await qc.cancelQueries({ queryKey:
|
|
29
|
-
const previous = qc.getQueryData(
|
|
28
|
+
await qc.cancelQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings() });
|
|
29
|
+
const previous = qc.getQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings());
|
|
30
30
|
qc.setQueryData(
|
|
31
|
-
|
|
31
|
+
chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings(),
|
|
32
32
|
(old) => old ? { ...old, ...patch } : old
|
|
33
33
|
);
|
|
34
34
|
return { previous };
|
|
35
35
|
},
|
|
36
36
|
onError: (_err, _patch, context) => {
|
|
37
|
-
qc.setQueryData(
|
|
37
|
+
qc.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings(), context?.previous);
|
|
38
38
|
},
|
|
39
|
-
onSettled: () => qc.invalidateQueries({ queryKey:
|
|
39
|
+
onSettled: () => qc.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.userSettings() })
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
var ALWAYS_ON = { on: true, set: () => {
|
|
@@ -59,7 +59,7 @@ function useLocalSwitch(source, feature) {
|
|
|
59
59
|
return { on: saved ?? fallback, set };
|
|
60
60
|
}
|
|
61
61
|
function useFeatureSwitch(feature) {
|
|
62
|
-
const source =
|
|
62
|
+
const source = chunkBRFRQWAY_cjs.useArbiHost().features?.[feature];
|
|
63
63
|
const useSource = !source ? useUnlisted : "userSetting" in source ? useUserSettingSwitch : useLocalSwitch;
|
|
64
64
|
return useSource(source, feature);
|
|
65
65
|
}
|
|
@@ -96,7 +96,7 @@ function createLocalFeatureStore({
|
|
|
96
96
|
storage = defaultStorage(),
|
|
97
97
|
migrate
|
|
98
98
|
}) {
|
|
99
|
-
const
|
|
99
|
+
const listeners4 = /* @__PURE__ */ new Set();
|
|
100
100
|
const read = () => {
|
|
101
101
|
try {
|
|
102
102
|
return storage?.getItem(key) ?? null;
|
|
@@ -110,7 +110,7 @@ function createLocalFeatureStore({
|
|
|
110
110
|
} catch {
|
|
111
111
|
}
|
|
112
112
|
};
|
|
113
|
-
const notify2 = () =>
|
|
113
|
+
const notify2 = () => listeners4.forEach((listener) => listener());
|
|
114
114
|
const saved = parseValues(read());
|
|
115
115
|
let values = saved ?? {};
|
|
116
116
|
let hydrated = saved !== null || !migrate;
|
|
@@ -132,8 +132,8 @@ function createLocalFeatureStore({
|
|
|
132
132
|
notify2();
|
|
133
133
|
},
|
|
134
134
|
subscribe(listener) {
|
|
135
|
-
|
|
136
|
-
return () =>
|
|
135
|
+
listeners4.add(listener);
|
|
136
|
+
return () => listeners4.delete(listener);
|
|
137
137
|
},
|
|
138
138
|
isHydrated: () => hydrated,
|
|
139
139
|
hydrated: () => ready
|
|
@@ -149,7 +149,7 @@ var LISTS = {
|
|
|
149
149
|
};
|
|
150
150
|
function patchConversationList(queryClient, workspaceId, reducer) {
|
|
151
151
|
if (!workspaceId) return;
|
|
152
|
-
const key =
|
|
152
|
+
const key = chunkBRFRQWAY_cjs.arbiQueryKeys.conversations(workspaceId);
|
|
153
153
|
const current = queryClient.getQueryData(key) ?? [];
|
|
154
154
|
const next = reducer(current);
|
|
155
155
|
if (next !== current) queryClient.setQueryData(key, next);
|
|
@@ -213,13 +213,13 @@ function byActivity(a, b) {
|
|
|
213
213
|
return bt - at;
|
|
214
214
|
}
|
|
215
215
|
function cachedChats(queryClient) {
|
|
216
|
-
return queryClient.getQueryData(
|
|
216
|
+
return queryClient.getQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatList()) ?? [];
|
|
217
217
|
}
|
|
218
218
|
function cachedChat(queryClient, chatExtId) {
|
|
219
219
|
return cachedChats(queryClient).find((c) => c.external_id === chatExtId);
|
|
220
220
|
}
|
|
221
221
|
function upsertChat(queryClient, chat) {
|
|
222
|
-
queryClient.setQueryData(
|
|
222
|
+
queryClient.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatList(), (old) => {
|
|
223
223
|
if (!old) return old;
|
|
224
224
|
const rest = old.filter((c) => c.external_id !== chat.external_id);
|
|
225
225
|
return [chat, ...rest].sort(byActivity);
|
|
@@ -227,13 +227,13 @@ function upsertChat(queryClient, chat) {
|
|
|
227
227
|
}
|
|
228
228
|
function removeChat(queryClient, chatExtId) {
|
|
229
229
|
queryClient.setQueryData(
|
|
230
|
-
|
|
230
|
+
chunkBRFRQWAY_cjs.arbiQueryKeys.chatList(),
|
|
231
231
|
(old) => old?.filter((c) => c.external_id !== chatExtId)
|
|
232
232
|
);
|
|
233
|
-
queryClient.removeQueries({ queryKey:
|
|
233
|
+
queryClient.removeQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId) });
|
|
234
234
|
}
|
|
235
235
|
function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
|
|
236
|
-
queryClient.setQueryData(
|
|
236
|
+
queryClient.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
|
|
237
237
|
if (!old) return old;
|
|
238
238
|
const without = old.messages.filter(
|
|
239
239
|
(m) => m.external_id !== message.external_id && m.external_id !== replaceOptimisticId
|
|
@@ -243,12 +243,12 @@ function appendToThread(queryClient, chatExtId, message, replaceOptimisticId) {
|
|
|
243
243
|
}
|
|
244
244
|
function dropFromThread(queryClient, chatExtId, messageExtId) {
|
|
245
245
|
queryClient.setQueryData(
|
|
246
|
-
|
|
246
|
+
chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId),
|
|
247
247
|
(old) => old ? { ...old, messages: old.messages.filter((m) => m.external_id !== messageExtId) } : old
|
|
248
248
|
);
|
|
249
249
|
}
|
|
250
250
|
function replaceInThread(queryClient, chatExtId, message) {
|
|
251
|
-
queryClient.setQueryData(
|
|
251
|
+
queryClient.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId), (old) => {
|
|
252
252
|
if (!old || !old.messages.some((m) => m.external_id === message.external_id)) return old;
|
|
253
253
|
return {
|
|
254
254
|
...old,
|
|
@@ -258,14 +258,14 @@ function replaceInThread(queryClient, chatExtId, message) {
|
|
|
258
258
|
}
|
|
259
259
|
function patchLastMessage(queryClient, chatExtId, message) {
|
|
260
260
|
queryClient.setQueryData(
|
|
261
|
-
|
|
261
|
+
chunkBRFRQWAY_cjs.arbiQueryKeys.chatList(),
|
|
262
262
|
(old) => old?.map(
|
|
263
263
|
(c) => c.external_id === chatExtId && c.last_message?.external_id === message.external_id ? { ...c, last_message: message } : c
|
|
264
264
|
)
|
|
265
265
|
);
|
|
266
266
|
}
|
|
267
267
|
async function deleteChatMessage(arbi, queryClient, chatExtId, messageExtId) {
|
|
268
|
-
const thread = queryClient.getQueryData(
|
|
268
|
+
const thread = queryClient.getQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId));
|
|
269
269
|
const before = thread?.messages.find((m) => m.external_id === messageExtId);
|
|
270
270
|
const listed = cachedChat(queryClient, chatExtId);
|
|
271
271
|
const wasLast = listed?.last_message?.external_id === messageExtId ? listed.last_message : null;
|
|
@@ -286,7 +286,7 @@ async function applyChangedMessage(arbi, queryClient, chatExtId, message) {
|
|
|
286
286
|
return;
|
|
287
287
|
}
|
|
288
288
|
const chat = cachedChat(queryClient, chatExtId);
|
|
289
|
-
if (!chat || !queryClient.getQueryData(
|
|
289
|
+
if (!chat || !queryClient.getQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId))) return;
|
|
290
290
|
try {
|
|
291
291
|
replaceInThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
|
|
292
292
|
} catch (err) {
|
|
@@ -298,7 +298,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
298
298
|
const me = myChatId(arbi);
|
|
299
299
|
const chat = cachedChat(queryClient, chatExtId);
|
|
300
300
|
if (!chat) {
|
|
301
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
301
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.chatList() });
|
|
302
302
|
return;
|
|
303
303
|
}
|
|
304
304
|
const mine = message.sender_ext_id === me;
|
|
@@ -312,7 +312,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
312
312
|
(m) => m.user.external_id === me ? { ...m, last_read_at: message.created_at } : m
|
|
313
313
|
) : chat.members
|
|
314
314
|
});
|
|
315
|
-
if (queryClient.getQueryData(
|
|
315
|
+
if (queryClient.getQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId))) {
|
|
316
316
|
try {
|
|
317
317
|
appendToThread(queryClient, chatExtId, await arbi.chats.decrypt(chat, message));
|
|
318
318
|
} catch (err) {
|
|
@@ -323,7 +323,7 @@ async function applyChatMessage(arbi, queryClient, chatExtId, message) {
|
|
|
323
323
|
function applyChatRead(arbi, queryClient, chatExtId, userExtId, lastReadAt) {
|
|
324
324
|
const me = myChatId(arbi);
|
|
325
325
|
queryClient.setQueryData(
|
|
326
|
-
|
|
326
|
+
chunkBRFRQWAY_cjs.arbiQueryKeys.chatList(),
|
|
327
327
|
(old) => old?.map(
|
|
328
328
|
(c) => c.external_id !== chatExtId ? c : {
|
|
329
329
|
...c,
|
|
@@ -349,11 +349,11 @@ async function applyChatUpdated(arbi, queryClient, chatExtId, message) {
|
|
|
349
349
|
}
|
|
350
350
|
upsertChat(queryClient, chat);
|
|
351
351
|
if (!message)
|
|
352
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
352
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.chatThread(chatExtId) });
|
|
353
353
|
}
|
|
354
354
|
function applyAgentDmStatus(queryClient, status) {
|
|
355
355
|
if (!["queued", "working", "done", "failed"].includes(status.status)) return;
|
|
356
|
-
queryClient.setQueryData(
|
|
356
|
+
queryClient.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.agentDmStatus(status.agent_ext_id), status);
|
|
357
357
|
}
|
|
358
358
|
async function applyChatEvent(arbi, queryClient, event) {
|
|
359
359
|
const e = event;
|
|
@@ -368,13 +368,13 @@ async function applyChatEvent(arbi, queryClient, event) {
|
|
|
368
368
|
|
|
369
369
|
// src/calls/keys.ts
|
|
370
370
|
function serverCallsExperimental(queryClient) {
|
|
371
|
-
return queryClient.getQueryData(
|
|
371
|
+
return queryClient.getQueryData(chunkBRFRQWAY_cjs.callQueryKeys.config())?.experimental !== false;
|
|
372
372
|
}
|
|
373
373
|
function invalidateCall(queryClient, message) {
|
|
374
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
374
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.callQueryKeys.call(message.call_ext_id) });
|
|
375
375
|
const thread = message.log_conversation_ext_id;
|
|
376
376
|
if (thread) {
|
|
377
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
377
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.conversationActivity(thread) });
|
|
378
378
|
}
|
|
379
379
|
}
|
|
380
380
|
|
|
@@ -625,19 +625,19 @@ function applyCallEvent(queryClient, event, options = {}) {
|
|
|
625
625
|
}
|
|
626
626
|
case "call.recording": {
|
|
627
627
|
if (callExtId)
|
|
628
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
628
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
629
629
|
const state2 = browser.calls.recordingStateFrom(m);
|
|
630
630
|
relay("call.recording", callExtId && state2 ? { ...state2, call_ext_id: callExtId } : null);
|
|
631
631
|
return true;
|
|
632
632
|
}
|
|
633
633
|
case "call.recording_updated": {
|
|
634
634
|
if (callExtId)
|
|
635
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
635
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
636
636
|
return true;
|
|
637
637
|
}
|
|
638
638
|
case "call.recording_deleted": {
|
|
639
639
|
if (callExtId)
|
|
640
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
640
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recordingsOf(callExtId) });
|
|
641
641
|
const recordingExtId = str(m.recording_ext_id);
|
|
642
642
|
relay(
|
|
643
643
|
"call.recording_deleted",
|
|
@@ -668,6 +668,253 @@ function applyCallEvent(queryClient, event, options = {}) {
|
|
|
668
668
|
return false;
|
|
669
669
|
}
|
|
670
670
|
}
|
|
671
|
+
var OfflineMailLockedError = class extends Error {
|
|
672
|
+
constructor() {
|
|
673
|
+
super("Sign in to open the mail saved on this device");
|
|
674
|
+
this.name = "OfflineMailLockedError";
|
|
675
|
+
}
|
|
676
|
+
};
|
|
677
|
+
var sealer = client.createOfflineSealer("arbi-offline-mail-v1", {
|
|
678
|
+
locked: () => new OfflineMailLockedError()
|
|
679
|
+
});
|
|
680
|
+
var forgetOfflineMailKeys = sealer.forget;
|
|
681
|
+
var sealBytes = sealer.sealBytes;
|
|
682
|
+
var openBytes = sealer.openBytes;
|
|
683
|
+
var sealJson = sealer.sealJson;
|
|
684
|
+
var openJson = sealer.openJson;
|
|
685
|
+
var blind = sealer.blind;
|
|
686
|
+
|
|
687
|
+
// src/offline-store/store.ts
|
|
688
|
+
var DB_VERSION = 1;
|
|
689
|
+
var RECORDS = "records";
|
|
690
|
+
var META = "meta";
|
|
691
|
+
function promisify(request) {
|
|
692
|
+
return new Promise((resolve, reject) => {
|
|
693
|
+
request.onsuccess = () => resolve(request.result);
|
|
694
|
+
request.onerror = () => reject(request.error);
|
|
695
|
+
});
|
|
696
|
+
}
|
|
697
|
+
function createRecordStore(dbName) {
|
|
698
|
+
let dbPromise = null;
|
|
699
|
+
function openDB() {
|
|
700
|
+
if (dbPromise) return dbPromise;
|
|
701
|
+
dbPromise = new Promise((resolve, reject) => {
|
|
702
|
+
const request = indexedDB.open(dbName, DB_VERSION);
|
|
703
|
+
request.onerror = () => {
|
|
704
|
+
dbPromise = null;
|
|
705
|
+
reject(request.error);
|
|
706
|
+
};
|
|
707
|
+
request.onsuccess = () => {
|
|
708
|
+
const db = request.result;
|
|
709
|
+
db.onversionchange = () => {
|
|
710
|
+
db.close();
|
|
711
|
+
dbPromise = null;
|
|
712
|
+
};
|
|
713
|
+
resolve(db);
|
|
714
|
+
};
|
|
715
|
+
request.onupgradeneeded = () => {
|
|
716
|
+
const db = request.result;
|
|
717
|
+
if (!db.objectStoreNames.contains(RECORDS)) {
|
|
718
|
+
const records = db.createObjectStore(RECORDS, { keyPath: "key" });
|
|
719
|
+
records.createIndex("bucket", "bucket");
|
|
720
|
+
records.createIndex("kind", "kind");
|
|
721
|
+
}
|
|
722
|
+
if (!db.objectStoreNames.contains(META)) db.createObjectStore(META, { keyPath: "key" });
|
|
723
|
+
};
|
|
724
|
+
});
|
|
725
|
+
return dbPromise;
|
|
726
|
+
}
|
|
727
|
+
async function run(store2, mode, fn) {
|
|
728
|
+
const db = await openDB();
|
|
729
|
+
return promisify(fn(db.transaction(store2, mode).objectStore(store2)));
|
|
730
|
+
}
|
|
731
|
+
async function scan(pick) {
|
|
732
|
+
const db = await openDB();
|
|
733
|
+
const store2 = db.transaction(RECORDS, "readonly").objectStore(RECORDS);
|
|
734
|
+
return new Promise((resolve, reject) => {
|
|
735
|
+
const out = [];
|
|
736
|
+
const cursor = store2.openCursor();
|
|
737
|
+
cursor.onerror = () => reject(cursor.error);
|
|
738
|
+
cursor.onsuccess = () => {
|
|
739
|
+
const c = cursor.result;
|
|
740
|
+
if (!c) return resolve(out);
|
|
741
|
+
out.push(pick(c.value));
|
|
742
|
+
c.continue();
|
|
743
|
+
};
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
const self = {
|
|
747
|
+
dbName,
|
|
748
|
+
async putRecord(record) {
|
|
749
|
+
await run(RECORDS, "readwrite", (s) => s.put(record));
|
|
750
|
+
},
|
|
751
|
+
async getRecord(key) {
|
|
752
|
+
return await run(RECORDS, "readonly", (s) => s.get(key));
|
|
753
|
+
},
|
|
754
|
+
async hasRecord(key) {
|
|
755
|
+
return await run(RECORDS, "readonly", (s) => s.count(key)) > 0;
|
|
756
|
+
},
|
|
757
|
+
async deleteRecords(keys) {
|
|
758
|
+
if (keys.length === 0) return;
|
|
759
|
+
const db = await openDB();
|
|
760
|
+
const tx = db.transaction(RECORDS, "readwrite");
|
|
761
|
+
const store2 = tx.objectStore(RECORDS);
|
|
762
|
+
for (const key of keys) store2.delete(key);
|
|
763
|
+
await new Promise((resolve, reject) => {
|
|
764
|
+
tx.oncomplete = () => resolve();
|
|
765
|
+
tx.onerror = () => reject(tx.error);
|
|
766
|
+
tx.onabort = () => reject(tx.error);
|
|
767
|
+
});
|
|
768
|
+
},
|
|
769
|
+
async recordsInBucket(bucket) {
|
|
770
|
+
return await run(
|
|
771
|
+
RECORDS,
|
|
772
|
+
"readonly",
|
|
773
|
+
(s) => s.index("bucket").getAll(bucket)
|
|
774
|
+
);
|
|
775
|
+
},
|
|
776
|
+
async recordsOfKind(kind) {
|
|
777
|
+
return await run(
|
|
778
|
+
RECORDS,
|
|
779
|
+
"readonly",
|
|
780
|
+
(s) => s.index("kind").getAll(kind)
|
|
781
|
+
);
|
|
782
|
+
},
|
|
783
|
+
allRecordSizes() {
|
|
784
|
+
return scan(({ key, kind, size }) => ({ key, kind, size }));
|
|
785
|
+
},
|
|
786
|
+
allRecordAccess() {
|
|
787
|
+
return scan(({ key, kind, lastAccess }) => ({ key, kind, lastAccess }));
|
|
788
|
+
},
|
|
789
|
+
async touchRecord(key) {
|
|
790
|
+
const record = await self.getRecord(key);
|
|
791
|
+
if (record) await self.putRecord({ ...record, lastAccess: Date.now() });
|
|
792
|
+
},
|
|
793
|
+
async getMeta(key) {
|
|
794
|
+
const row = await run(META, "readonly", (s) => s.get(key));
|
|
795
|
+
return row?.value;
|
|
796
|
+
},
|
|
797
|
+
async setMeta(key, value) {
|
|
798
|
+
await run(META, "readwrite", (s) => s.put({ key, value }));
|
|
799
|
+
},
|
|
800
|
+
async deleteDatabase() {
|
|
801
|
+
const db = await dbPromise?.catch(() => null);
|
|
802
|
+
db?.close();
|
|
803
|
+
dbPromise = null;
|
|
804
|
+
await new Promise((resolve, reject) => {
|
|
805
|
+
const request = indexedDB.deleteDatabase(dbName);
|
|
806
|
+
request.onsuccess = () => resolve();
|
|
807
|
+
request.onerror = () => reject(request.error);
|
|
808
|
+
request.onblocked = () => {
|
|
809
|
+
};
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
};
|
|
813
|
+
return self;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
// src/mail/offline/store.ts
|
|
817
|
+
var OFFLINE_MAIL_DB = "arbi-offline-mail";
|
|
818
|
+
var store = createRecordStore(OFFLINE_MAIL_DB);
|
|
819
|
+
var putRecord = store.putRecord;
|
|
820
|
+
var getRecord = store.getRecord;
|
|
821
|
+
var hasRecord = store.hasRecord;
|
|
822
|
+
var deleteRecords = store.deleteRecords;
|
|
823
|
+
var recordsInBucket = store.recordsInBucket;
|
|
824
|
+
var recordsOfKind = store.recordsOfKind;
|
|
825
|
+
var allRecordSizes = store.allRecordSizes;
|
|
826
|
+
var touchRecord = store.touchRecord;
|
|
827
|
+
var getMeta = store.getMeta;
|
|
828
|
+
var setMeta = store.setMeta;
|
|
829
|
+
var deleteOfflineMailDatabase = store.deleteDatabase;
|
|
830
|
+
|
|
831
|
+
// src/mail/offline/settings.ts
|
|
832
|
+
var DEFAULT_OFFLINE_MAIL_SETTINGS = {
|
|
833
|
+
enabled: true,
|
|
834
|
+
scope: "7d",
|
|
835
|
+
attachmentCapMb: 25,
|
|
836
|
+
quotaMb: 1024
|
|
837
|
+
};
|
|
838
|
+
var SCOPE_DAYS = {
|
|
839
|
+
"1d": 1,
|
|
840
|
+
"7d": 7,
|
|
841
|
+
"30d": 30,
|
|
842
|
+
"90d": 90
|
|
843
|
+
};
|
|
844
|
+
var DAY_MS = 24 * 60 * 60 * 1e3;
|
|
845
|
+
function offlineWindowStart(settings, now = Date.now()) {
|
|
846
|
+
return now - SCOPE_DAYS[settings.scope] * DAY_MS;
|
|
847
|
+
}
|
|
848
|
+
function inOfflineWindow(settings, receivedAt, now = Date.now()) {
|
|
849
|
+
const at = receivedAt ? Date.parse(receivedAt) || 0 : 0;
|
|
850
|
+
return settings.enabled && (!at || at >= offlineWindowStart(settings, now));
|
|
851
|
+
}
|
|
852
|
+
function normalize(saved) {
|
|
853
|
+
const merged = { ...DEFAULT_OFFLINE_MAIL_SETTINGS, ...saved };
|
|
854
|
+
const scope = merged.scope;
|
|
855
|
+
if (scope in SCOPE_DAYS) return merged;
|
|
856
|
+
const longer = scope === "365d" || scope === "all";
|
|
857
|
+
return { ...merged, scope: longer ? "90d" : DEFAULT_OFFLINE_MAIL_SETTINGS.scope };
|
|
858
|
+
}
|
|
859
|
+
var STORAGE_PREFIX = "arbi-offline-mail-settings:";
|
|
860
|
+
var SIGNED_OUT = { ...DEFAULT_OFFLINE_MAIL_SETTINGS, enabled: false };
|
|
861
|
+
function getOfflineMailSettings(userExtId) {
|
|
862
|
+
if (!userExtId) return SIGNED_OUT;
|
|
863
|
+
const key = STORAGE_PREFIX + userExtId;
|
|
864
|
+
try {
|
|
865
|
+
const raw = localStorage.getItem(key);
|
|
866
|
+
return raw ? normalize(JSON.parse(raw)) : DEFAULT_OFFLINE_MAIL_SETTINGS;
|
|
867
|
+
} catch {
|
|
868
|
+
return DEFAULT_OFFLINE_MAIL_SETTINGS;
|
|
869
|
+
}
|
|
870
|
+
}
|
|
871
|
+
function setOfflineMailSettings(userExtId, patch) {
|
|
872
|
+
const next = { ...getOfflineMailSettings(userExtId), ...patch };
|
|
873
|
+
if (userExtId) {
|
|
874
|
+
try {
|
|
875
|
+
localStorage.setItem(STORAGE_PREFIX + userExtId, JSON.stringify(next));
|
|
876
|
+
} catch {
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
notifyOfflineMailChange("settings");
|
|
880
|
+
return next;
|
|
881
|
+
}
|
|
882
|
+
var listeners3 = /* @__PURE__ */ new Set();
|
|
883
|
+
var CHANNEL = "arbi-offline-mail";
|
|
884
|
+
var channel = null;
|
|
885
|
+
function getChannel() {
|
|
886
|
+
if (channel || typeof BroadcastChannel === "undefined") return channel;
|
|
887
|
+
channel = new BroadcastChannel(CHANNEL);
|
|
888
|
+
channel.onmessage = (event) => {
|
|
889
|
+
for (const listener of listeners3) listener(event.data);
|
|
890
|
+
};
|
|
891
|
+
return channel;
|
|
892
|
+
}
|
|
893
|
+
function notifyOfflineMailChange(change) {
|
|
894
|
+
for (const listener of listeners3) listener(change);
|
|
895
|
+
try {
|
|
896
|
+
getChannel()?.postMessage(change);
|
|
897
|
+
} catch {
|
|
898
|
+
}
|
|
899
|
+
}
|
|
900
|
+
function onOfflineMailChange(listener) {
|
|
901
|
+
getChannel();
|
|
902
|
+
listeners3.add(listener);
|
|
903
|
+
return () => listeners3.delete(listener);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
// src/mail/offline/wipe.ts
|
|
907
|
+
var OWNER_KEY = "owner";
|
|
908
|
+
async function wipeOfflineMail() {
|
|
909
|
+
forgetOfflineMailKeys();
|
|
910
|
+
await deleteOfflineMailDatabase();
|
|
911
|
+
notifyOfflineMailChange("wiped");
|
|
912
|
+
}
|
|
913
|
+
async function claimOfflineMail(userExtId) {
|
|
914
|
+
const owner = await getMeta(OWNER_KEY);
|
|
915
|
+
if (owner && owner !== userExtId) await wipeOfflineMail();
|
|
916
|
+
await setMeta(OWNER_KEY, userExtId);
|
|
917
|
+
}
|
|
671
918
|
function toProfileView(profile) {
|
|
672
919
|
return {
|
|
673
920
|
...profile,
|
|
@@ -678,11 +925,11 @@ function useProfile(options) {
|
|
|
678
925
|
const { client, enabled } = useAccountClient();
|
|
679
926
|
const qc = reactQuery.useQueryClient();
|
|
680
927
|
react.useEffect(
|
|
681
|
-
() => client.onProfileChange(() => qc.setQueryData(
|
|
928
|
+
() => client.onProfileChange(() => qc.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.profile(), client.profile())),
|
|
682
929
|
[client, qc]
|
|
683
930
|
);
|
|
684
931
|
return reactQuery.useQuery({
|
|
685
|
-
queryKey:
|
|
932
|
+
queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.profile(),
|
|
686
933
|
queryFn: () => client.profile(),
|
|
687
934
|
enabled: (options?.enabled ?? true) && enabled,
|
|
688
935
|
staleTime: Infinity
|
|
@@ -697,9 +944,9 @@ function useUpdateProfile() {
|
|
|
697
944
|
return client.profile();
|
|
698
945
|
},
|
|
699
946
|
onSuccess: (profile) => {
|
|
700
|
-
qc.setQueryData(
|
|
701
|
-
void qc.invalidateQueries({ queryKey:
|
|
702
|
-
return qc.invalidateQueries({ queryKey:
|
|
947
|
+
qc.setQueryData(chunkBRFRQWAY_cjs.arbiQueryKeys.profile(), profile);
|
|
948
|
+
void qc.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.identity() });
|
|
949
|
+
return qc.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.workspaces() });
|
|
703
950
|
}
|
|
704
951
|
});
|
|
705
952
|
}
|
|
@@ -801,8 +1048,10 @@ function arbiAccountClient(arbi, overrides = {}) {
|
|
|
801
1048
|
if (everywhere) await arbi.sessions.logoutAll();
|
|
802
1049
|
else await arbi.logout();
|
|
803
1050
|
} finally {
|
|
804
|
-
|
|
1051
|
+
chunk7RUVJZZG_cjs.clearSealedDrafts();
|
|
805
1052
|
chunkRLSBRZ6Z_cjs.clearChatArtifacts();
|
|
1053
|
+
await wipeOfflineMail().catch(() => {
|
|
1054
|
+
});
|
|
806
1055
|
}
|
|
807
1056
|
},
|
|
808
1057
|
requestDeletion: () => arbi.account.requestDeletion(),
|
|
@@ -846,7 +1095,7 @@ var NO_ACCOUNT = {
|
|
|
846
1095
|
};
|
|
847
1096
|
var ALWAYS = () => true;
|
|
848
1097
|
function useAccountClient() {
|
|
849
|
-
const { account, arbi } =
|
|
1098
|
+
const { account, arbi } = chunkBRFRQWAY_cjs.useArbiHost();
|
|
850
1099
|
const fallback = react.useMemo(() => arbi ? arbiAccountClient(arbi) : null, [arbi]);
|
|
851
1100
|
const useEnabled = account?.useEnabled ?? ALWAYS;
|
|
852
1101
|
const enabled = useEnabled();
|
|
@@ -857,9 +1106,9 @@ function useAccountClient() {
|
|
|
857
1106
|
return { client: fallback, enabled: arbi.isLoggedIn };
|
|
858
1107
|
}
|
|
859
1108
|
function useEntitlements() {
|
|
860
|
-
const arbi =
|
|
1109
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
861
1110
|
return reactQuery.useQuery({
|
|
862
|
-
queryKey:
|
|
1111
|
+
queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.entitlements(),
|
|
863
1112
|
queryFn: () => arbi.account.entitlements(),
|
|
864
1113
|
enabled: arbi.isLoggedIn,
|
|
865
1114
|
// A plan change shows on the next read; the API enforces it at once either way.
|
|
@@ -868,7 +1117,7 @@ function useEntitlements() {
|
|
|
868
1117
|
}
|
|
869
1118
|
function useInvalidateEntitlements() {
|
|
870
1119
|
const qc = reactQuery.useQueryClient();
|
|
871
|
-
return () => qc.invalidateQueries({ queryKey:
|
|
1120
|
+
return () => qc.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.entitlements() });
|
|
872
1121
|
}
|
|
873
1122
|
function useIsEntitled(feature) {
|
|
874
1123
|
const { data } = useEntitlements();
|
|
@@ -992,7 +1241,7 @@ function ensureMeetingChat(arbi, queryClient, callExtId, callKey) {
|
|
|
992
1241
|
});
|
|
993
1242
|
if (!ref) throw new Error("The server did not return a meeting chat");
|
|
994
1243
|
if (ref.kind === "chat")
|
|
995
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
1244
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.arbiQueryKeys.chatList() });
|
|
996
1245
|
else void invalidateConversationLists(queryClient);
|
|
997
1246
|
return ref;
|
|
998
1247
|
})();
|
|
@@ -1998,9 +2247,9 @@ async function transcribeRecording(params) {
|
|
|
1998
2247
|
return { stored, failed };
|
|
1999
2248
|
}
|
|
2000
2249
|
function useCallsConfig() {
|
|
2001
|
-
const arbi =
|
|
2250
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2002
2251
|
const { data } = reactQuery.useQuery({
|
|
2003
|
-
queryKey:
|
|
2252
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.config(),
|
|
2004
2253
|
queryFn: () => arbi.calls.config(),
|
|
2005
2254
|
enabled: arbi.isLoggedIn,
|
|
2006
2255
|
staleTime: 5 * 6e4,
|
|
@@ -2018,9 +2267,9 @@ function useCallTranscriptionAvailable() {
|
|
|
2018
2267
|
return useCallsConfig()?.transcription_available === true;
|
|
2019
2268
|
}
|
|
2020
2269
|
function useCall(callExtId) {
|
|
2021
|
-
const arbi =
|
|
2270
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2022
2271
|
return reactQuery.useQuery({
|
|
2023
|
-
queryKey:
|
|
2272
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.call(callExtId ?? ""),
|
|
2024
2273
|
queryFn: () => arbi.calls.get(callExtId),
|
|
2025
2274
|
enabled: !!callExtId && arbi.isLoggedIn,
|
|
2026
2275
|
staleTime: 6e4,
|
|
@@ -2028,18 +2277,18 @@ function useCall(callExtId) {
|
|
|
2028
2277
|
});
|
|
2029
2278
|
}
|
|
2030
2279
|
function useCallRecordings(callExtId, enabled = true) {
|
|
2031
|
-
const arbi =
|
|
2280
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2032
2281
|
return reactQuery.useQuery({
|
|
2033
|
-
queryKey:
|
|
2282
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recordings(callExtId ?? ""),
|
|
2034
2283
|
queryFn: () => arbi.calls.recording.list(callExtId),
|
|
2035
2284
|
enabled: !!callExtId && enabled && arbi.isLoggedIn,
|
|
2036
2285
|
retry: false
|
|
2037
2286
|
});
|
|
2038
2287
|
}
|
|
2039
2288
|
function useCallRecording(callExtId, recordingExtId) {
|
|
2040
|
-
const arbi =
|
|
2289
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2041
2290
|
return reactQuery.useQuery({
|
|
2042
|
-
queryKey:
|
|
2291
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recording(callExtId ?? "", recordingExtId ?? ""),
|
|
2043
2292
|
queryFn: () => arbi.calls.recording.get(callExtId, recordingExtId),
|
|
2044
2293
|
enabled: !!callExtId && !!recordingExtId && arbi.isLoggedIn,
|
|
2045
2294
|
retry: false
|
|
@@ -2051,21 +2300,21 @@ function useRecordingWindows(callExtId, enabled) {
|
|
|
2051
2300
|
return react.useMemo(() => data ? recordingWindowsOf(data) : NO_WINDOWS, [data]);
|
|
2052
2301
|
}
|
|
2053
2302
|
function useCallInviteLinks(callExtId) {
|
|
2054
|
-
const arbi =
|
|
2303
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2055
2304
|
return reactQuery.useQuery({
|
|
2056
|
-
queryKey:
|
|
2305
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.inviteLinks(callExtId ?? ""),
|
|
2057
2306
|
queryFn: () => arbi.calls.inviteLinks.list(callExtId),
|
|
2058
2307
|
enabled: !!callExtId && arbi.isLoggedIn,
|
|
2059
2308
|
retry: false
|
|
2060
2309
|
});
|
|
2061
2310
|
}
|
|
2062
2311
|
function useRecordingActions(call) {
|
|
2063
|
-
const arbi =
|
|
2312
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2064
2313
|
const queryClient = reactQuery.useQueryClient();
|
|
2065
2314
|
return react.useMemo(
|
|
2066
2315
|
() => ({
|
|
2067
2316
|
refresh: () => void queryClient.invalidateQueries({
|
|
2068
|
-
queryKey:
|
|
2317
|
+
queryKey: chunkBRFRQWAY_cjs.callQueryKeys.recordingsOf(call.external_id)
|
|
2069
2318
|
}),
|
|
2070
2319
|
open: (recording) => openRecording(arbi, queryClient, call, recording.external_id, recording),
|
|
2071
2320
|
transcribe: async (opened, onProgress) => transcribeRecording({
|
|
@@ -2081,12 +2330,12 @@ function useRecordingActions(call) {
|
|
|
2081
2330
|
);
|
|
2082
2331
|
}
|
|
2083
2332
|
function useRevokeCallInviteLink(callExtId) {
|
|
2084
|
-
const arbi =
|
|
2333
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2085
2334
|
const queryClient = reactQuery.useQueryClient();
|
|
2086
2335
|
return react.useCallback(
|
|
2087
2336
|
async (inviteExtId) => {
|
|
2088
2337
|
await arbi.calls.inviteLinks.revoke(callExtId, inviteExtId);
|
|
2089
|
-
void queryClient.invalidateQueries({ queryKey:
|
|
2338
|
+
void queryClient.invalidateQueries({ queryKey: chunkBRFRQWAY_cjs.callQueryKeys.inviteLinks(callExtId) });
|
|
2090
2339
|
},
|
|
2091
2340
|
[arbi, queryClient, callExtId]
|
|
2092
2341
|
);
|
|
@@ -2144,7 +2393,7 @@ async function saveRecordingFilesToThread(arbi, params) {
|
|
|
2144
2393
|
});
|
|
2145
2394
|
}
|
|
2146
2395
|
function useSaveToThread() {
|
|
2147
|
-
const arbi =
|
|
2396
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2148
2397
|
const queryClient = reactQuery.useQueryClient();
|
|
2149
2398
|
return react.useMemo(() => {
|
|
2150
2399
|
const thenRefresh = async (run) => {
|
|
@@ -2431,9 +2680,9 @@ function isWorkspaceGuestOf(workspaces, workspaceExtId, me) {
|
|
|
2431
2680
|
return workspace?.users?.find((wu) => wu.user.external_id === me)?.role === "guest";
|
|
2432
2681
|
}
|
|
2433
2682
|
function useMeetingReadOnly(lockedWorkspaceExtId) {
|
|
2434
|
-
const arbi =
|
|
2683
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2435
2684
|
const me = arbi.isLoggedIn ? arbi.user.identity()?.externalId ?? null : null;
|
|
2436
|
-
const { data: workspaces } =
|
|
2685
|
+
const { data: workspaces } = chunk7RUVJZZG_cjs.useWorkspaces({
|
|
2437
2686
|
enabled: !!lockedWorkspaceExtId && arbi.isLoggedIn
|
|
2438
2687
|
});
|
|
2439
2688
|
return isWorkspaceGuestOf(
|
|
@@ -2456,9 +2705,9 @@ function useCanHostCalls() {
|
|
|
2456
2705
|
return callsEnabled && entitled;
|
|
2457
2706
|
}
|
|
2458
2707
|
function useOpenCallMeetingChat() {
|
|
2459
|
-
const arbi =
|
|
2708
|
+
const arbi = chunkBRFRQWAY_cjs.useArbi();
|
|
2460
2709
|
const queryClient = reactQuery.useQueryClient();
|
|
2461
|
-
const open =
|
|
2710
|
+
const open = chunkBRFRQWAY_cjs.useArbiHost().calls?.openMeetingChat;
|
|
2462
2711
|
return react.useCallback(
|
|
2463
2712
|
async (target) => {
|
|
2464
2713
|
try {
|
|
@@ -2493,10 +2742,12 @@ exports.HISTORY_LIMIT = HISTORY_LIMIT;
|
|
|
2493
2742
|
exports.LIVE_SEGMENTER = LIVE_SEGMENTER;
|
|
2494
2743
|
exports.MAX_AVATAR_FILE_BYTES = MAX_AVATAR_FILE_BYTES;
|
|
2495
2744
|
exports.MUTED_DEDUPE_MS = MUTED_DEDUPE_MS;
|
|
2745
|
+
exports.OFFLINE_MAIL_DB = OFFLINE_MAIL_DB;
|
|
2496
2746
|
exports.PLAYBACK_LOOKAHEAD_MS = PLAYBACK_LOOKAHEAD_MS;
|
|
2497
2747
|
exports.READ_ONLY_MEETING_TEXT = READ_ONLY_MEETING_TEXT;
|
|
2498
2748
|
exports.RECORDING_CHUNK_MS = RECORDING_CHUNK_MS;
|
|
2499
2749
|
exports.RECORDING_SEGMENTER = RECORDING_SEGMENTER;
|
|
2750
|
+
exports.SCOPE_DAYS = SCOPE_DAYS;
|
|
2500
2751
|
exports.SEGMENT_FRAME_MS = SEGMENT_FRAME_MS;
|
|
2501
2752
|
exports.SEGMENT_ID_PATTERN = SEGMENT_ID_PATTERN;
|
|
2502
2753
|
exports.SEGMENT_PRE_ROLL_MS = SEGMENT_PRE_ROLL_MS;
|
|
@@ -2507,6 +2758,7 @@ exports.UPLOAD_ATTEMPTS = UPLOAD_ATTEMPTS;
|
|
|
2507
2758
|
exports.UPLOAD_BACKOFF_MS = UPLOAD_BACKOFF_MS;
|
|
2508
2759
|
exports.acceptRing = acceptRing;
|
|
2509
2760
|
exports.addConversationToList = addConversationToList;
|
|
2761
|
+
exports.allRecordSizes = allRecordSizes;
|
|
2510
2762
|
exports.appendToThread = appendToThread;
|
|
2511
2763
|
exports.applyAgentDmStatus = applyAgentDmStatus;
|
|
2512
2764
|
exports.applyCallEvent = applyCallEvent;
|
|
@@ -2515,6 +2767,7 @@ exports.applyChatMessage = applyChatMessage;
|
|
|
2515
2767
|
exports.applyChatRead = applyChatRead;
|
|
2516
2768
|
exports.applyChatUpdated = applyChatUpdated;
|
|
2517
2769
|
exports.arbiAccountClient = arbiAccountClient;
|
|
2770
|
+
exports.blind = blind;
|
|
2518
2771
|
exports.buildMeetingChatBody = buildMeetingChatBody;
|
|
2519
2772
|
exports.cachedChat = cachedChat;
|
|
2520
2773
|
exports.cachedChats = cachedChats;
|
|
@@ -2525,6 +2778,7 @@ exports.chatByExtId = chatByExtId;
|
|
|
2525
2778
|
exports.chatHasLiveCall = chatHasLiveCall;
|
|
2526
2779
|
exports.chatLiveCallId = chatLiveCallId;
|
|
2527
2780
|
exports.chatTranscriptRef = chatTranscriptRef;
|
|
2781
|
+
exports.claimOfflineMail = claimOfflineMail;
|
|
2528
2782
|
exports.clearMeetingChatCache = clearMeetingChatCache;
|
|
2529
2783
|
exports.clearTrackUploaders = clearTrackUploaders;
|
|
2530
2784
|
exports.clockTime = clockTime;
|
|
@@ -2533,6 +2787,7 @@ exports.compositeTrack = compositeTrack;
|
|
|
2533
2787
|
exports.conversationKeyForCall = conversationKeyForCall;
|
|
2534
2788
|
exports.createLocalFeatureStore = createLocalFeatureStore;
|
|
2535
2789
|
exports.createMutedNotifier = createMutedNotifier;
|
|
2790
|
+
exports.createRecordStore = createRecordStore;
|
|
2536
2791
|
exports.createTrackCutter = createTrackCutter;
|
|
2537
2792
|
exports.cutAtPauses = cutAtPauses;
|
|
2538
2793
|
exports.declineRing = declineRing;
|
|
@@ -2541,6 +2796,7 @@ exports.decodeCaptionPacket = decodeCaptionPacket;
|
|
|
2541
2796
|
exports.decodeMono16k = decodeMono16k;
|
|
2542
2797
|
exports.decryptPart = decryptPart;
|
|
2543
2798
|
exports.deleteChatMessage = deleteChatMessage;
|
|
2799
|
+
exports.deleteRecords = deleteRecords;
|
|
2544
2800
|
exports.dropFromThread = dropFromThread;
|
|
2545
2801
|
exports.encodeCallChatPacket = encodeCallChatPacket;
|
|
2546
2802
|
exports.encodeCaptionPacket = encodeCaptionPacket;
|
|
@@ -2554,8 +2810,13 @@ exports.fileSafe = fileSafe;
|
|
|
2554
2810
|
exports.findConversation = findConversation;
|
|
2555
2811
|
exports.floatToWav = floatToWav;
|
|
2556
2812
|
exports.formatTranscriptMarkdown = formatTranscriptMarkdown;
|
|
2813
|
+
exports.getMeta = getMeta;
|
|
2814
|
+
exports.getOfflineMailSettings = getOfflineMailSettings;
|
|
2557
2815
|
exports.getOpenChat = getOpenChat;
|
|
2816
|
+
exports.getRecord = getRecord;
|
|
2817
|
+
exports.hasRecord = hasRecord;
|
|
2558
2818
|
exports.hasRecordingTranscript = hasRecordingTranscript;
|
|
2819
|
+
exports.inOfflineWindow = inOfflineWindow;
|
|
2559
2820
|
exports.invalidateCall = invalidateCall;
|
|
2560
2821
|
exports.invalidateConversationDetails = invalidateConversationDetails;
|
|
2561
2822
|
exports.invalidateConversationLists = invalidateConversationLists;
|
|
@@ -2580,8 +2841,13 @@ exports.newPacketId = newPacketId;
|
|
|
2580
2841
|
exports.newSegmentId = newSegmentId;
|
|
2581
2842
|
exports.newTrackKey = newTrackKey;
|
|
2582
2843
|
exports.nextSeqAfter = nextSeqAfter;
|
|
2844
|
+
exports.notifyOfflineMailChange = notifyOfflineMailChange;
|
|
2845
|
+
exports.offlineWindowStart = offlineWindowStart;
|
|
2583
2846
|
exports.onCallEvent = onCallEvent;
|
|
2847
|
+
exports.onOfflineMailChange = onOfflineMailChange;
|
|
2848
|
+
exports.openBytes = openBytes;
|
|
2584
2849
|
exports.openCall = openCall;
|
|
2850
|
+
exports.openJson = openJson;
|
|
2585
2851
|
exports.openQuestion = openQuestion;
|
|
2586
2852
|
exports.openRecording = openRecording;
|
|
2587
2853
|
exports.parseWebinarPacket = parseWebinarPacket;
|
|
@@ -2595,9 +2861,12 @@ exports.persistTranscriptSegment = persistTranscriptSegment;
|
|
|
2595
2861
|
exports.playheadAt = playheadAt;
|
|
2596
2862
|
exports.postRecordingDocsToThread = postRecordingDocsToThread;
|
|
2597
2863
|
exports.postTranscriptToThread = postTranscriptToThread;
|
|
2864
|
+
exports.putRecord = putRecord;
|
|
2598
2865
|
exports.readLocalFeature = readLocalFeature;
|
|
2599
2866
|
exports.recordingFiles = recordingFiles;
|
|
2600
2867
|
exports.recordingWindowsOf = recordingWindowsOf;
|
|
2868
|
+
exports.recordsInBucket = recordsInBucket;
|
|
2869
|
+
exports.recordsOfKind = recordsOfKind;
|
|
2601
2870
|
exports.rejoinAsAudience = rejoinAsAudience;
|
|
2602
2871
|
exports.removeChat = removeChat;
|
|
2603
2872
|
exports.removeConversationFromLists = removeConversationFromLists;
|
|
@@ -2605,8 +2874,12 @@ exports.resetCallSession = resetCallSession;
|
|
|
2605
2874
|
exports.resolveMeetingChat = resolveMeetingChat;
|
|
2606
2875
|
exports.saveRecordingFilesToThread = saveRecordingFilesToThread;
|
|
2607
2876
|
exports.schedulePart = schedulePart;
|
|
2877
|
+
exports.sealBytes = sealBytes;
|
|
2878
|
+
exports.sealJson = sealJson;
|
|
2608
2879
|
exports.sealQuestionText = sealQuestionText;
|
|
2609
2880
|
exports.serverCallsExperimental = serverCallsExperimental;
|
|
2881
|
+
exports.setMeta = setMeta;
|
|
2882
|
+
exports.setOfflineMailSettings = setOfflineMailSettings;
|
|
2610
2883
|
exports.setOpenChat = setOpenChat;
|
|
2611
2884
|
exports.sortTranscriptMessages = sortTranscriptMessages;
|
|
2612
2885
|
exports.sortedParts = sortedParts;
|
|
@@ -2631,6 +2904,7 @@ exports.threadTranscriptText = threadTranscriptText;
|
|
|
2631
2904
|
exports.timelineDurationMs = timelineDurationMs;
|
|
2632
2905
|
exports.timelineOf = timelineOf;
|
|
2633
2906
|
exports.toProfileView = toProfileView;
|
|
2907
|
+
exports.touchRecord = touchRecord;
|
|
2634
2908
|
exports.trackUploaderFor = trackUploaderFor;
|
|
2635
2909
|
exports.transcribeRecording = transcribeRecording;
|
|
2636
2910
|
exports.transcriptPersistRole = transcriptPersistRole;
|
|
@@ -2666,7 +2940,8 @@ exports.useServerCallsExperimental = useServerCallsExperimental;
|
|
|
2666
2940
|
exports.useUpdateProfile = useUpdateProfile;
|
|
2667
2941
|
exports.useUpdateUserSettings = useUpdateUserSettings;
|
|
2668
2942
|
exports.useUserSettings = useUserSettings;
|
|
2943
|
+
exports.wipeOfflineMail = wipeOfflineMail;
|
|
2669
2944
|
exports.wrapTrackKey = wrapTrackKey;
|
|
2670
2945
|
exports.writeSamples = writeSamples;
|
|
2671
|
-
//# sourceMappingURL=chunk-
|
|
2672
|
-
//# sourceMappingURL=chunk-
|
|
2946
|
+
//# sourceMappingURL=chunk-X4HGUBWU.cjs.map
|
|
2947
|
+
//# sourceMappingURL=chunk-X4HGUBWU.cjs.map
|