stream-chat 4.4.3-dev.3 → 5.0.1
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 +4 -13
- package/dist/browser.es.js +1258 -722
- package/dist/browser.es.js.map +1 -1
- package/dist/browser.full-bundle.min.js +1 -1
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/browser.js +1258 -721
- package/dist/browser.js.map +1 -1
- package/dist/index.es.js +1258 -722
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +1258 -721
- package/dist/index.js.map +1 -1
- package/dist/types/base64.d.ts.map +1 -1
- package/dist/types/channel.d.ts +19 -15
- package/dist/types/channel.d.ts.map +1 -1
- package/dist/types/channel_state.d.ts +2 -2
- package/dist/types/channel_state.d.ts.map +1 -1
- package/dist/types/client.d.ts +25 -42
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/client_state.d.ts +2 -2
- package/dist/types/client_state.d.ts.map +1 -1
- package/dist/types/connection.d.ts +14 -49
- package/dist/types/connection.d.ts.map +1 -1
- package/dist/types/connection_fallback.d.ts +41 -0
- package/dist/types/connection_fallback.d.ts.map +1 -0
- package/dist/types/errors.d.ts +14 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/insights.d.ts +16 -9
- package/dist/types/insights.d.ts.map +1 -1
- package/dist/types/permissions.d.ts.map +1 -1
- package/dist/types/signing.d.ts +3 -3
- package/dist/types/signing.d.ts.map +1 -1
- package/dist/types/token_manager.d.ts +2 -2
- package/dist/types/token_manager.d.ts.map +1 -1
- package/dist/types/types.d.ts +95 -89
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +13 -3
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +4 -4
- package/src/base64.ts +1 -4
- package/src/channel.ts +133 -461
- package/src/channel_state.ts +31 -158
- package/src/client.ts +298 -712
- package/src/client_state.ts +2 -2
- package/src/connection.ts +146 -395
- package/src/connection_fallback.ts +209 -0
- package/src/errors.ts +58 -0
- package/src/insights.ts +37 -31
- package/src/permissions.ts +3 -24
- package/src/signing.ts +6 -17
- package/src/token_manager.ts +6 -18
- package/src/types.ts +269 -512
- package/src/utils.ts +58 -24
- package/CHANGELOG.md +0 -844
package/src/channel_state.ts
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
LiteralStringForUnion,
|
|
8
8
|
MessageResponse,
|
|
9
9
|
ReactionResponse,
|
|
10
|
-
|
|
10
|
+
UR,
|
|
11
11
|
UserResponse,
|
|
12
12
|
} from './types';
|
|
13
13
|
|
|
@@ -15,35 +15,19 @@ import {
|
|
|
15
15
|
* ChannelState - A container class for the channel state.
|
|
16
16
|
*/
|
|
17
17
|
export class ChannelState<
|
|
18
|
-
AttachmentType extends
|
|
19
|
-
ChannelType extends
|
|
18
|
+
AttachmentType extends UR = UR,
|
|
19
|
+
ChannelType extends UR = UR,
|
|
20
20
|
CommandType extends string = LiteralStringForUnion,
|
|
21
|
-
EventType extends
|
|
22
|
-
MessageType extends
|
|
23
|
-
ReactionType extends
|
|
24
|
-
UserType extends
|
|
21
|
+
EventType extends UR = UR,
|
|
22
|
+
MessageType extends UR = UR,
|
|
23
|
+
ReactionType extends UR = UR,
|
|
24
|
+
UserType extends UR = UR
|
|
25
25
|
> {
|
|
26
|
-
_channel: Channel<
|
|
27
|
-
AttachmentType,
|
|
28
|
-
ChannelType,
|
|
29
|
-
CommandType,
|
|
30
|
-
EventType,
|
|
31
|
-
MessageType,
|
|
32
|
-
ReactionType,
|
|
33
|
-
UserType
|
|
34
|
-
>;
|
|
26
|
+
_channel: Channel<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>;
|
|
35
27
|
watcher_count: number;
|
|
36
28
|
typing: Record<
|
|
37
29
|
string,
|
|
38
|
-
Event<
|
|
39
|
-
AttachmentType,
|
|
40
|
-
ChannelType,
|
|
41
|
-
CommandType,
|
|
42
|
-
EventType,
|
|
43
|
-
MessageType,
|
|
44
|
-
ReactionType,
|
|
45
|
-
UserType
|
|
46
|
-
>
|
|
30
|
+
Event<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>
|
|
47
31
|
>;
|
|
48
32
|
read: Record<string, { last_read: Date; user: UserResponse<UserType> }>;
|
|
49
33
|
messages: Array<
|
|
@@ -102,15 +86,7 @@ export class ChannelState<
|
|
|
102
86
|
*/
|
|
103
87
|
isUpToDate: boolean;
|
|
104
88
|
constructor(
|
|
105
|
-
channel: Channel<
|
|
106
|
-
AttachmentType,
|
|
107
|
-
ChannelType,
|
|
108
|
-
CommandType,
|
|
109
|
-
EventType,
|
|
110
|
-
MessageType,
|
|
111
|
-
ReactionType,
|
|
112
|
-
UserType
|
|
113
|
-
>,
|
|
89
|
+
channel: Channel<AttachmentType, ChannelType, CommandType, EventType, MessageType, ReactionType, UserType>,
|
|
114
90
|
) {
|
|
115
91
|
this._channel = channel;
|
|
116
92
|
this.watcher_count = 0;
|
|
@@ -132,10 +108,7 @@ export class ChannelState<
|
|
|
132
108
|
* be pushed on to message list.
|
|
133
109
|
*/
|
|
134
110
|
this.isUpToDate = true;
|
|
135
|
-
this.last_message_at =
|
|
136
|
-
channel?.state?.last_message_at != null
|
|
137
|
-
? new Date(channel.state.last_message_at)
|
|
138
|
-
: null;
|
|
111
|
+
this.last_message_at = channel?.state?.last_message_at != null ? new Date(channel.state.last_message_at) : null;
|
|
139
112
|
}
|
|
140
113
|
|
|
141
114
|
/**
|
|
@@ -147,23 +120,11 @@ export class ChannelState<
|
|
|
147
120
|
*
|
|
148
121
|
*/
|
|
149
122
|
addMessageSorted(
|
|
150
|
-
newMessage: MessageResponse<
|
|
151
|
-
AttachmentType,
|
|
152
|
-
ChannelType,
|
|
153
|
-
CommandType,
|
|
154
|
-
MessageType,
|
|
155
|
-
ReactionType,
|
|
156
|
-
UserType
|
|
157
|
-
>,
|
|
123
|
+
newMessage: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
158
124
|
timestampChanged = false,
|
|
159
125
|
addIfDoesNotExist = true,
|
|
160
126
|
) {
|
|
161
|
-
return this.addMessagesSorted(
|
|
162
|
-
[newMessage],
|
|
163
|
-
timestampChanged,
|
|
164
|
-
false,
|
|
165
|
-
addIfDoesNotExist,
|
|
166
|
-
);
|
|
127
|
+
return this.addMessagesSorted([newMessage], timestampChanged, false, addIfDoesNotExist);
|
|
167
128
|
}
|
|
168
129
|
|
|
169
130
|
/**
|
|
@@ -174,22 +135,8 @@ export class ChannelState<
|
|
|
174
135
|
*
|
|
175
136
|
*/
|
|
176
137
|
formatMessage(
|
|
177
|
-
message: MessageResponse<
|
|
178
|
-
|
|
179
|
-
ChannelType,
|
|
180
|
-
CommandType,
|
|
181
|
-
MessageType,
|
|
182
|
-
ReactionType,
|
|
183
|
-
UserType
|
|
184
|
-
>,
|
|
185
|
-
): FormatMessageResponse<
|
|
186
|
-
AttachmentType,
|
|
187
|
-
ChannelType,
|
|
188
|
-
CommandType,
|
|
189
|
-
MessageType,
|
|
190
|
-
ReactionType,
|
|
191
|
-
UserType
|
|
192
|
-
> {
|
|
138
|
+
message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
139
|
+
): FormatMessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType> {
|
|
193
140
|
return {
|
|
194
141
|
...message,
|
|
195
142
|
/**
|
|
@@ -214,14 +161,7 @@ export class ChannelState<
|
|
|
214
161
|
*
|
|
215
162
|
*/
|
|
216
163
|
addMessagesSorted(
|
|
217
|
-
newMessages: MessageResponse<
|
|
218
|
-
AttachmentType,
|
|
219
|
-
ChannelType,
|
|
220
|
-
CommandType,
|
|
221
|
-
MessageType,
|
|
222
|
-
ReactionType,
|
|
223
|
-
UserType
|
|
224
|
-
>[],
|
|
164
|
+
newMessages: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>[],
|
|
225
165
|
timestampChanged = false,
|
|
226
166
|
initializing = false,
|
|
227
167
|
addIfDoesNotExist = true,
|
|
@@ -235,9 +175,7 @@ export class ChannelState<
|
|
|
235
175
|
* handle updates to user, we can use the reference map, to determine which
|
|
236
176
|
* channels need to be updated with updated user object.
|
|
237
177
|
*/
|
|
238
|
-
this._channel
|
|
239
|
-
.getClient()
|
|
240
|
-
.state.updateUserReference(message.user, this._channel.cid);
|
|
178
|
+
this._channel.getClient().state.updateUserReference(message.user, this._channel.cid);
|
|
241
179
|
}
|
|
242
180
|
|
|
243
181
|
if (initializing && message.id && this.threads[message.id]) {
|
|
@@ -300,14 +238,7 @@ export class ChannelState<
|
|
|
300
238
|
*
|
|
301
239
|
*/
|
|
302
240
|
addPinnedMessages(
|
|
303
|
-
pinnedMessages: MessageResponse<
|
|
304
|
-
AttachmentType,
|
|
305
|
-
ChannelType,
|
|
306
|
-
CommandType,
|
|
307
|
-
MessageType,
|
|
308
|
-
ReactionType,
|
|
309
|
-
UserType
|
|
310
|
-
>[],
|
|
241
|
+
pinnedMessages: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>[],
|
|
311
242
|
) {
|
|
312
243
|
for (let i = 0; i < pinnedMessages.length; i += 1) {
|
|
313
244
|
this.addPinnedMessage(pinnedMessages[i]);
|
|
@@ -321,14 +252,7 @@ export class ChannelState<
|
|
|
321
252
|
*
|
|
322
253
|
*/
|
|
323
254
|
addPinnedMessage(
|
|
324
|
-
pinnedMessage: MessageResponse<
|
|
325
|
-
AttachmentType,
|
|
326
|
-
ChannelType,
|
|
327
|
-
CommandType,
|
|
328
|
-
MessageType,
|
|
329
|
-
ReactionType,
|
|
330
|
-
UserType
|
|
331
|
-
>,
|
|
255
|
+
pinnedMessage: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
332
256
|
) {
|
|
333
257
|
this.pinnedMessages = this._addToMessageList(
|
|
334
258
|
this.pinnedMessages,
|
|
@@ -345,14 +269,7 @@ export class ChannelState<
|
|
|
345
269
|
*
|
|
346
270
|
*/
|
|
347
271
|
removePinnedMessage(
|
|
348
|
-
message: MessageResponse<
|
|
349
|
-
AttachmentType,
|
|
350
|
-
ChannelType,
|
|
351
|
-
CommandType,
|
|
352
|
-
MessageType,
|
|
353
|
-
ReactionType,
|
|
354
|
-
UserType
|
|
355
|
-
>,
|
|
272
|
+
message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
356
273
|
) {
|
|
357
274
|
const { result } = this.removeMessageFromArray(this.pinnedMessages, message);
|
|
358
275
|
this.pinnedMessages = result;
|
|
@@ -360,24 +277,13 @@ export class ChannelState<
|
|
|
360
277
|
|
|
361
278
|
addReaction(
|
|
362
279
|
reaction: ReactionResponse<ReactionType, UserType>,
|
|
363
|
-
message?: MessageResponse<
|
|
364
|
-
AttachmentType,
|
|
365
|
-
ChannelType,
|
|
366
|
-
CommandType,
|
|
367
|
-
MessageType,
|
|
368
|
-
ReactionType,
|
|
369
|
-
UserType
|
|
370
|
-
>,
|
|
280
|
+
message?: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
371
281
|
enforce_unique?: boolean,
|
|
372
282
|
) {
|
|
373
283
|
if (!message) return;
|
|
374
284
|
const messageWithReaction = message;
|
|
375
285
|
this._updateMessage(message, (msg) => {
|
|
376
|
-
messageWithReaction.own_reactions = this._addOwnReactionToMessage(
|
|
377
|
-
msg.own_reactions,
|
|
378
|
-
reaction,
|
|
379
|
-
enforce_unique,
|
|
380
|
-
);
|
|
286
|
+
messageWithReaction.own_reactions = this._addOwnReactionToMessage(msg.own_reactions, reaction, enforce_unique);
|
|
381
287
|
return this.formatMessage(messageWithReaction);
|
|
382
288
|
});
|
|
383
289
|
return messageWithReaction;
|
|
@@ -407,45 +313,26 @@ export class ChannelState<
|
|
|
407
313
|
reaction: ReactionResponse<ReactionType, UserType>,
|
|
408
314
|
) {
|
|
409
315
|
if (ownReactions) {
|
|
410
|
-
return ownReactions.filter(
|
|
411
|
-
(item) => item.user_id !== reaction.user_id || item.type !== reaction.type,
|
|
412
|
-
);
|
|
316
|
+
return ownReactions.filter((item) => item.user_id !== reaction.user_id || item.type !== reaction.type);
|
|
413
317
|
}
|
|
414
318
|
return ownReactions;
|
|
415
319
|
}
|
|
416
320
|
|
|
417
321
|
removeReaction(
|
|
418
322
|
reaction: ReactionResponse<ReactionType, UserType>,
|
|
419
|
-
message?: MessageResponse<
|
|
420
|
-
AttachmentType,
|
|
421
|
-
ChannelType,
|
|
422
|
-
CommandType,
|
|
423
|
-
MessageType,
|
|
424
|
-
ReactionType,
|
|
425
|
-
UserType
|
|
426
|
-
>,
|
|
323
|
+
message?: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
427
324
|
) {
|
|
428
325
|
if (!message) return;
|
|
429
326
|
const messageWithReaction = message;
|
|
430
327
|
this._updateMessage(message, (msg) => {
|
|
431
|
-
messageWithReaction.own_reactions = this._removeOwnReactionFromMessage(
|
|
432
|
-
msg.own_reactions,
|
|
433
|
-
reaction,
|
|
434
|
-
);
|
|
328
|
+
messageWithReaction.own_reactions = this._removeOwnReactionFromMessage(msg.own_reactions, reaction);
|
|
435
329
|
return this.formatMessage(messageWithReaction);
|
|
436
330
|
});
|
|
437
331
|
return messageWithReaction;
|
|
438
332
|
}
|
|
439
333
|
|
|
440
334
|
removeQuotedMessageReferences(
|
|
441
|
-
message: MessageResponse<
|
|
442
|
-
AttachmentType,
|
|
443
|
-
ChannelType,
|
|
444
|
-
CommandType,
|
|
445
|
-
MessageType,
|
|
446
|
-
ReactionType,
|
|
447
|
-
UserType
|
|
448
|
-
>,
|
|
335
|
+
message: MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>,
|
|
449
336
|
) {
|
|
450
337
|
const parseMessage = (
|
|
451
338
|
m: ReturnType<
|
|
@@ -465,14 +352,7 @@ export class ChannelState<
|
|
|
465
352
|
created_at: m.created_at.toString(),
|
|
466
353
|
pinned_at: m.pinned_at?.toString(),
|
|
467
354
|
updated_at: m.updated_at?.toString(),
|
|
468
|
-
} as unknown) as MessageResponse<
|
|
469
|
-
AttachmentType,
|
|
470
|
-
ChannelType,
|
|
471
|
-
CommandType,
|
|
472
|
-
MessageType,
|
|
473
|
-
ReactionType,
|
|
474
|
-
UserType
|
|
475
|
-
>);
|
|
355
|
+
} as unknown) as MessageResponse<AttachmentType, ChannelType, CommandType, MessageType, ReactionType, UserType>);
|
|
476
356
|
|
|
477
357
|
const updatedMessages = this.messages
|
|
478
358
|
.filter((msg) => msg.quoted_message_id === message.id)
|
|
@@ -614,8 +494,7 @@ export class ChannelState<
|
|
|
614
494
|
}
|
|
615
495
|
|
|
616
496
|
const messageTime = (message[sortBy] as Date).getTime();
|
|
617
|
-
const messageIsNewest =
|
|
618
|
-
(messageArr[messageArrayLength - 1][sortBy] as Date).getTime() < messageTime;
|
|
497
|
+
const messageIsNewest = (messageArr[messageArrayLength - 1][sortBy] as Date).getTime() < messageTime;
|
|
619
498
|
|
|
620
499
|
// if message is newer than last item in the list concat and return unless it's an update or deletion
|
|
621
500
|
if (messageIsNewest && addMessageToList) {
|
|
@@ -630,8 +509,7 @@ export class ChannelState<
|
|
|
630
509
|
let right = messageArrayLength - 1;
|
|
631
510
|
while (left <= right) {
|
|
632
511
|
middle = Math.floor((right + left) / 2);
|
|
633
|
-
if ((messageArr[middle][sortBy] as Date).getTime() <= messageTime)
|
|
634
|
-
left = middle + 1;
|
|
512
|
+
if ((messageArr[middle][sortBy] as Date).getTime() <= messageTime) left = middle + 1;
|
|
635
513
|
else right = middle - 1;
|
|
636
514
|
}
|
|
637
515
|
|
|
@@ -674,10 +552,7 @@ export class ChannelState<
|
|
|
674
552
|
this.threads[messageToRemove.parent_id] = threadMessages;
|
|
675
553
|
isRemoved = removed;
|
|
676
554
|
} else {
|
|
677
|
-
const { removed, result: messages } = this.removeMessageFromArray(
|
|
678
|
-
this.messages,
|
|
679
|
-
messageToRemove,
|
|
680
|
-
);
|
|
555
|
+
const { removed, result: messages } = this.removeMessageFromArray(this.messages, messageToRemove);
|
|
681
556
|
this.messages = messages;
|
|
682
557
|
isRemoved = removed;
|
|
683
558
|
}
|
|
@@ -701,9 +576,7 @@ export class ChannelState<
|
|
|
701
576
|
>,
|
|
702
577
|
msg: { id: string; parent_id?: string },
|
|
703
578
|
) => {
|
|
704
|
-
const result = msgArray.filter(
|
|
705
|
-
(message) => !(!!message.id && !!msg.id && message.id === msg.id),
|
|
706
|
-
);
|
|
579
|
+
const result = msgArray.filter((message) => !(!!message.id && !!msg.id && message.id === msg.id));
|
|
707
580
|
|
|
708
581
|
return { removed: result.length < msgArray.length, result };
|
|
709
582
|
};
|