stream-chat-react 11.12.1 → 11.13.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/dist/{Window-40a618cb.js → Window-44a85f63.js} +230 -94
- package/dist/browser.full-bundle.js +312 -138
- package/dist/browser.full-bundle.js.map +1 -1
- package/dist/browser.full-bundle.min.js +3 -3
- package/dist/browser.full-bundle.min.js.map +1 -1
- package/dist/components/Channel/Channel.d.ts.map +1 -1
- package/dist/components/Channel/Channel.js +122 -47
- package/dist/components/Channel/utils.d.ts +27 -0
- package/dist/components/Channel/utils.d.ts.map +1 -1
- package/dist/components/Channel/utils.js +56 -0
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts +6 -4
- package/dist/components/ChatAutoComplete/ChatAutoComplete.d.ts.map +1 -1
- package/dist/components/Emojis/EmojiPicker.d.ts +1 -0
- package/dist/components/Emojis/EmojiPicker.d.ts.map +1 -1
- package/dist/components/Emojis/EmojiPicker.js +3 -0
- package/dist/components/Emojis/index.cjs.js +4 -1
- package/dist/components/MessageList/VirtualizedMessageList.d.ts +1 -0
- package/dist/components/MessageList/VirtualizedMessageList.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageList.js +1 -0
- package/dist/components/MessageList/VirtualizedMessageListComponents.d.ts.map +1 -1
- package/dist/components/MessageList/VirtualizedMessageListComponents.js +20 -7
- package/dist/components/MessageList/hooks/useMarkRead.js +2 -3
- package/dist/components/MessageList/renderMessages.d.ts +5 -5
- package/dist/components/MessageList/renderMessages.d.ts.map +1 -1
- package/dist/components/MessageList/renderMessages.js +44 -22
- package/dist/components/MessageList/utils.d.ts +10 -1
- package/dist/components/MessageList/utils.d.ts.map +1 -1
- package/dist/components/MessageList/utils.js +3 -0
- package/dist/constants/limits.d.ts +1 -0
- package/dist/constants/limits.d.ts.map +1 -1
- package/dist/constants/limits.js +1 -0
- package/dist/index.cjs.js +67 -31
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,iBAAiB,EAQlB,MAAM,OAAO,CAAC;AAKf,OAAO,
|
|
1
|
+
{"version":3,"file":"Channel.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/Channel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -22,10 +22,10 @@ import { ComponentProvider } from '../../context/ComponentContext';
|
|
|
22
22
|
import { useChatContext } from '../../context/ChatContext';
|
|
23
23
|
import { useTranslationContext } from '../../context/TranslationContext';
|
|
24
24
|
import { TypingProvider } from '../../context/TypingContext';
|
|
25
|
-
import { DEFAULT_INITIAL_CHANNEL_PAGE_SIZE, DEFAULT_NEXT_CHANNEL_PAGE_SIZE, DEFAULT_THREAD_PAGE_SIZE, } from '../../constants/limits';
|
|
25
|
+
import { DEFAULT_INITIAL_CHANNEL_PAGE_SIZE, DEFAULT_JUMP_TO_PAGE_SIZE, DEFAULT_NEXT_CHANNEL_PAGE_SIZE, DEFAULT_THREAD_PAGE_SIZE, } from '../../constants/limits';
|
|
26
26
|
import { hasMoreMessagesProbably, UnreadMessagesSeparator } from '../MessageList';
|
|
27
27
|
import { useChannelContainerClasses } from './hooks/useChannelContainerClasses';
|
|
28
|
-
import { makeAddNotifications } from './utils';
|
|
28
|
+
import { findInMsgSetByDate, findInMsgSetById, makeAddNotifications } from './utils';
|
|
29
29
|
import { getChannel } from '../../utils';
|
|
30
30
|
import { getImageAttachmentConfiguration, getVideoAttachmentConfiguration, } from '../Attachment/attachment-sizing';
|
|
31
31
|
import { defaultReactionOptions } from '../Reactions';
|
|
@@ -205,6 +205,9 @@ var ChannelInner = function (props) {
|
|
|
205
205
|
unread_messages: (_a = event.unread_messages) !== null && _a !== void 0 ? _a : 0,
|
|
206
206
|
};
|
|
207
207
|
});
|
|
208
|
+
if (event.type === 'channel.truncated' && event.cid === channel.cid) {
|
|
209
|
+
_setChannelUnreadUiState(undefined);
|
|
210
|
+
}
|
|
208
211
|
throttledCopyStateFromChannel();
|
|
209
212
|
return [2 /*return*/];
|
|
210
213
|
}
|
|
@@ -364,7 +367,7 @@ var ChannelInner = function (props) {
|
|
|
364
367
|
});
|
|
365
368
|
};
|
|
366
369
|
var loadMoreNewer = function (limit) {
|
|
367
|
-
if (limit === void 0) { limit =
|
|
370
|
+
if (limit === void 0) { limit = DEFAULT_NEXT_CHANNEL_PAGE_SIZE; }
|
|
368
371
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
369
372
|
var newestMessage, newestId, perPage, queryResponse, e_4, hasMoreNewerMessages;
|
|
370
373
|
var _a, _b;
|
|
@@ -408,7 +411,7 @@ var ChannelInner = function (props) {
|
|
|
408
411
|
};
|
|
409
412
|
var clearHighlightedMessageTimeoutId = useRef(null);
|
|
410
413
|
var jumpToMessage = function (messageId, messageLimit) {
|
|
411
|
-
if (messageLimit === void 0) { messageLimit =
|
|
414
|
+
if (messageLimit === void 0) { messageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
|
|
412
415
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
413
416
|
var indexOfMessage, hasMoreMessages;
|
|
414
417
|
return __generator(this, function (_a) {
|
|
@@ -455,57 +458,113 @@ var ChannelInner = function (props) {
|
|
|
455
458
|
});
|
|
456
459
|
}); };
|
|
457
460
|
var jumpToFirstUnreadMessage = useCallback(function (queryMessageLimit) {
|
|
458
|
-
if (queryMessageLimit === void 0) { queryMessageLimit =
|
|
461
|
+
if (queryMessageLimit === void 0) { queryMessageLimit = DEFAULT_JUMP_TO_PAGE_SIZE; }
|
|
459
462
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
460
|
-
var
|
|
461
|
-
var
|
|
462
|
-
return __generator(this, function (
|
|
463
|
-
switch (
|
|
463
|
+
var lastReadMessageId, firstUnreadMessageId, isInCurrentMessageSet, hasMoreMessages, result, result, lastReadTimestamp, _a, lastReadMessageIndex, lastReadMessage, messages, e_5, firstMessageWithCreationDate, firstMessageTimestamp, result, targetId_1, indexOfTarget, e_6;
|
|
464
|
+
var _b, _c, _d, _e;
|
|
465
|
+
return __generator(this, function (_f) {
|
|
466
|
+
switch (_f.label) {
|
|
464
467
|
case 0:
|
|
465
|
-
if (!(
|
|
466
|
-
return [2 /*return*/];
|
|
467
|
-
if (!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id)) {
|
|
468
|
-
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
468
|
+
if (!(channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.unread_messages))
|
|
469
469
|
return [2 /*return*/];
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
id = currentMessageSet[i].id;
|
|
474
|
-
if (id === channelUnreadUiState.last_read_message_id) {
|
|
475
|
-
indexOfLastReadMessage = i;
|
|
476
|
-
break;
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
if (!(typeof indexOfLastReadMessage === 'undefined')) return [3 /*break*/, 5];
|
|
480
|
-
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
470
|
+
lastReadMessageId = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id;
|
|
471
|
+
firstUnreadMessageId = channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id;
|
|
472
|
+
isInCurrentMessageSet = false;
|
|
481
473
|
hasMoreMessages = true;
|
|
482
|
-
|
|
474
|
+
if (!firstUnreadMessageId) return [3 /*break*/, 1];
|
|
475
|
+
result = findInMsgSetById(firstUnreadMessageId, channel.state.messages);
|
|
476
|
+
isInCurrentMessageSet = result.index !== -1;
|
|
477
|
+
return [3 /*break*/, 8];
|
|
483
478
|
case 1:
|
|
484
|
-
|
|
485
|
-
|
|
479
|
+
if (!lastReadMessageId) return [3 /*break*/, 2];
|
|
480
|
+
result = findInMsgSetById(lastReadMessageId, channel.state.messages);
|
|
481
|
+
isInCurrentMessageSet = !!result.target;
|
|
482
|
+
firstUnreadMessageId =
|
|
483
|
+
result.index > -1 ? (_b = channel.state.messages[result.index + 1]) === null || _b === void 0 ? void 0 : _b.id : undefined;
|
|
484
|
+
return [3 /*break*/, 8];
|
|
486
485
|
case 2:
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
return [3 /*break*/, 4];
|
|
486
|
+
lastReadTimestamp = channelUnreadUiState.last_read.getTime();
|
|
487
|
+
_a = findInMsgSetByDate(channelUnreadUiState.last_read, channel.state.messages, true), lastReadMessageIndex = _a.index, lastReadMessage = _a.target;
|
|
488
|
+
if (!lastReadMessage) return [3 /*break*/, 3];
|
|
489
|
+
firstUnreadMessageId = (_c = channel.state.messages[lastReadMessageIndex + 1]) === null || _c === void 0 ? void 0 : _c.id;
|
|
490
|
+
isInCurrentMessageSet = !!firstUnreadMessageId;
|
|
491
|
+
lastReadMessageId = lastReadMessage.id;
|
|
492
|
+
return [3 /*break*/, 8];
|
|
495
493
|
case 3:
|
|
496
|
-
|
|
494
|
+
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
495
|
+
messages = void 0;
|
|
496
|
+
_f.label = 4;
|
|
497
|
+
case 4:
|
|
498
|
+
_f.trys.push([4, 6, , 7]);
|
|
499
|
+
return [4 /*yield*/, channel.query({
|
|
500
|
+
messages: {
|
|
501
|
+
created_at_around: channelUnreadUiState.last_read.toISOString(),
|
|
502
|
+
limit: queryMessageLimit,
|
|
503
|
+
},
|
|
504
|
+
}, 'new')];
|
|
505
|
+
case 5:
|
|
506
|
+
messages = (_f.sent()).messages;
|
|
507
|
+
return [3 /*break*/, 7];
|
|
508
|
+
case 6:
|
|
509
|
+
e_5 = _f.sent();
|
|
497
510
|
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
498
511
|
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
499
512
|
return [2 /*return*/];
|
|
500
|
-
case
|
|
513
|
+
case 7:
|
|
514
|
+
firstMessageWithCreationDate = messages.find(function (msg) { return msg.created_at; });
|
|
515
|
+
if (!firstMessageWithCreationDate) {
|
|
516
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
517
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
518
|
+
return [2 /*return*/];
|
|
519
|
+
}
|
|
520
|
+
firstMessageTimestamp = new Date(firstMessageWithCreationDate.created_at).getTime();
|
|
521
|
+
if (lastReadTimestamp < firstMessageTimestamp) {
|
|
522
|
+
// whole channel is unread
|
|
523
|
+
firstUnreadMessageId = firstMessageWithCreationDate.id;
|
|
524
|
+
hasMoreMessages = false;
|
|
525
|
+
}
|
|
526
|
+
else {
|
|
527
|
+
result = findInMsgSetByDate(channelUnreadUiState.last_read, messages);
|
|
528
|
+
lastReadMessageId = (_d = result.target) === null || _d === void 0 ? void 0 : _d.id;
|
|
529
|
+
hasMoreMessages = result.index >= Math.floor(queryMessageLimit / 2);
|
|
530
|
+
}
|
|
501
531
|
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
502
|
-
|
|
503
|
-
case
|
|
504
|
-
|
|
505
|
-
|
|
532
|
+
_f.label = 8;
|
|
533
|
+
case 8:
|
|
534
|
+
if (!firstUnreadMessageId && !lastReadMessageId) {
|
|
535
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
536
|
+
return [2 /*return*/];
|
|
537
|
+
}
|
|
538
|
+
if (!!isInCurrentMessageSet) return [3 /*break*/, 12];
|
|
539
|
+
dispatch({ loadingMore: true, type: 'setLoadingMore' });
|
|
540
|
+
_f.label = 9;
|
|
541
|
+
case 9:
|
|
542
|
+
_f.trys.push([9, 11, , 12]);
|
|
543
|
+
targetId_1 = (firstUnreadMessageId !== null && firstUnreadMessageId !== void 0 ? firstUnreadMessageId : lastReadMessageId);
|
|
544
|
+
return [4 /*yield*/, channel.state.loadMessageIntoState(targetId_1, undefined, queryMessageLimit)];
|
|
545
|
+
case 10:
|
|
546
|
+
_f.sent();
|
|
547
|
+
indexOfTarget = channel.state.messages.findIndex(function (message) { return message.id === targetId_1; });
|
|
548
|
+
hasMoreMessages = indexOfTarget >= Math.floor(queryMessageLimit / 2);
|
|
549
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
550
|
+
firstUnreadMessageId =
|
|
551
|
+
firstUnreadMessageId !== null && firstUnreadMessageId !== void 0 ? firstUnreadMessageId : (_e = channel.state.messages[indexOfTarget + 1]) === null || _e === void 0 ? void 0 : _e.id;
|
|
552
|
+
return [3 /*break*/, 12];
|
|
553
|
+
case 11:
|
|
554
|
+
e_6 = _f.sent();
|
|
555
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
556
|
+
loadMoreFinished(hasMoreMessages, channel.state.messages);
|
|
557
|
+
return [2 /*return*/];
|
|
558
|
+
case 12:
|
|
559
|
+
if (!firstUnreadMessageId) {
|
|
560
|
+
addNotification(t('Failed to jump to the first unread message'), 'error');
|
|
561
|
+
return [2 /*return*/];
|
|
562
|
+
}
|
|
563
|
+
if (!channelUnreadUiState.first_unread_message_id)
|
|
564
|
+
_setChannelUnreadUiState(__assign(__assign({}, channelUnreadUiState), { first_unread_message_id: firstUnreadMessageId, last_read_message_id: lastReadMessageId }));
|
|
506
565
|
dispatch({
|
|
507
566
|
hasMoreNewer: channel.state.messages !== channel.state.latestMessages,
|
|
508
|
-
highlightedMessageId:
|
|
567
|
+
highlightedMessageId: firstUnreadMessageId,
|
|
509
568
|
type: 'jumpToMessageFinished',
|
|
510
569
|
});
|
|
511
570
|
if (clearHighlightedMessageTimeoutId.current) {
|
|
@@ -519,7 +578,7 @@ var ChannelInner = function (props) {
|
|
|
519
578
|
}
|
|
520
579
|
});
|
|
521
580
|
});
|
|
522
|
-
}, [addNotification, channel,
|
|
581
|
+
}, [addNotification, channel, loadMoreFinished, t, channelUnreadUiState]);
|
|
523
582
|
var deleteMessage = useCallback(function (message) { return __awaiter(void 0, void 0, void 0, function () {
|
|
524
583
|
var deletedMessage, result;
|
|
525
584
|
return __generator(this, function (_a) {
|
|
@@ -603,8 +662,24 @@ var ChannelInner = function (props) {
|
|
|
603
662
|
case 6:
|
|
604
663
|
error_1 = _d.sent();
|
|
605
664
|
stringError = JSON.stringify(error_1);
|
|
606
|
-
parsedError =
|
|
607
|
-
|
|
665
|
+
parsedError = (stringError
|
|
666
|
+
? JSON.parse(stringError)
|
|
667
|
+
: {});
|
|
668
|
+
// Handle the case where the message already exists
|
|
669
|
+
// (typically, when retrying to send a message).
|
|
670
|
+
// If the message already exists, we can assume it was sent successfully,
|
|
671
|
+
// so we update the message status to "received".
|
|
672
|
+
// Right now, the only way to check this error is by checking
|
|
673
|
+
// the combination of the error code and the error description,
|
|
674
|
+
// since there is no special error code for duplicate messages.
|
|
675
|
+
if (parsedError.code === 4 &&
|
|
676
|
+
error_1 instanceof Error &&
|
|
677
|
+
error_1.message.includes('already exists')) {
|
|
678
|
+
updateMessage(__assign(__assign({}, message), { status: 'received' }));
|
|
679
|
+
}
|
|
680
|
+
else {
|
|
681
|
+
updateMessage(__assign(__assign({}, message), { error: parsedError, errorStatusCode: parsedError.status || undefined, status: 'failed' }));
|
|
682
|
+
}
|
|
608
683
|
return [3 /*break*/, 7];
|
|
609
684
|
case 7: return [2 /*return*/];
|
|
610
685
|
}
|
|
@@ -681,7 +756,7 @@ var ChannelInner = function (props) {
|
|
|
681
756
|
var loadMoreThread = function (limit) {
|
|
682
757
|
if (limit === void 0) { limit = DEFAULT_THREAD_PAGE_SIZE; }
|
|
683
758
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
684
|
-
var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages,
|
|
759
|
+
var parentId, oldMessages, oldestMessageId, queryResponse, threadHasMoreMessages, newThreadMessages, e_7;
|
|
685
760
|
var _a;
|
|
686
761
|
return __generator(this, function (_b) {
|
|
687
762
|
switch (_b.label) {
|
|
@@ -711,7 +786,7 @@ var ChannelInner = function (props) {
|
|
|
711
786
|
loadMoreThreadFinished(threadHasMoreMessages, newThreadMessages);
|
|
712
787
|
return [3 /*break*/, 4];
|
|
713
788
|
case 3:
|
|
714
|
-
|
|
789
|
+
e_7 = _b.sent();
|
|
715
790
|
loadMoreThreadFinished(false, oldMessages);
|
|
716
791
|
return [3 /*break*/, 4];
|
|
717
792
|
case 4: return [2 /*return*/];
|
|
@@ -1,4 +1,31 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
import type { ChannelState, MessageResponse } from 'stream-chat';
|
|
2
3
|
import type { ChannelNotifications } from '../../context/ChannelStateContext';
|
|
4
|
+
import type { DefaultStreamChatGenerics } from '../../types';
|
|
3
5
|
export declare const makeAddNotifications: (setNotifications: Dispatch<SetStateAction<ChannelNotifications>>, notificationTimeouts: NodeJS.Timeout[]) => (text: string, type: 'success' | 'error') => void;
|
|
6
|
+
/**
|
|
7
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
8
|
+
* @param targetId
|
|
9
|
+
* @param msgSet
|
|
10
|
+
*/
|
|
11
|
+
export declare const findInMsgSetById: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(targetId: string, msgSet: import("stream-chat").FormatMessageResponse<StreamChatGenerics>[]) => {
|
|
12
|
+
index: number;
|
|
13
|
+
target: import("stream-chat").FormatMessageResponse<StreamChatGenerics>;
|
|
14
|
+
} | {
|
|
15
|
+
index: number;
|
|
16
|
+
target?: undefined;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
20
|
+
* @param targetDate
|
|
21
|
+
* @param msgSet
|
|
22
|
+
* @param exact
|
|
23
|
+
*/
|
|
24
|
+
export declare const findInMsgSetByDate: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(targetDate: Date, msgSet: MessageResponse<StreamChatGenerics>[] | import("stream-chat").FormatMessageResponse<StreamChatGenerics>[], exact?: boolean) => {
|
|
25
|
+
index: number;
|
|
26
|
+
target: MessageResponse<StreamChatGenerics> | import("stream-chat").FormatMessageResponse<StreamChatGenerics>;
|
|
27
|
+
} | {
|
|
28
|
+
index: number;
|
|
29
|
+
target?: undefined;
|
|
30
|
+
};
|
|
4
31
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/components/Channel/utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,oBAAoB,qBACb,SAAS,eAAe,oBAAoB,CAAC,CAAC,wBAC1C,OAAO,OAAO,EAAE,YAC5B,MAAM,QAAQ,SAAS,GAAG,OAAO,SAkB5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,+FAGjB,MAAM;;;;;;CAejB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,iGAGjB,IAAI;;;;;;CAoCjB,CAAC"}
|
|
@@ -13,3 +13,59 @@ export var makeAddNotifications = function (setNotifications, notificationTimeou
|
|
|
13
13
|
}, 5000);
|
|
14
14
|
notificationTimeouts.push(timeout);
|
|
15
15
|
}; };
|
|
16
|
+
/**
|
|
17
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
18
|
+
* @param targetId
|
|
19
|
+
* @param msgSet
|
|
20
|
+
*/
|
|
21
|
+
export var findInMsgSetById = function (targetId, msgSet) {
|
|
22
|
+
for (var i = msgSet.length - 1; i >= 0; i--) {
|
|
23
|
+
var item = msgSet[i];
|
|
24
|
+
if (item.id === targetId) {
|
|
25
|
+
return {
|
|
26
|
+
index: i,
|
|
27
|
+
target: item,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
index: -1,
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Utility function for jumpToFirstUnreadMessage
|
|
37
|
+
* @param targetDate
|
|
38
|
+
* @param msgSet
|
|
39
|
+
* @param exact
|
|
40
|
+
*/
|
|
41
|
+
export var findInMsgSetByDate = function (targetDate, msgSet, exact) {
|
|
42
|
+
var _a, _b;
|
|
43
|
+
if (exact === void 0) { exact = false; }
|
|
44
|
+
var targetTimestamp = targetDate.getTime();
|
|
45
|
+
var left = 0;
|
|
46
|
+
var middle = 0;
|
|
47
|
+
var right = msgSet.length - 1;
|
|
48
|
+
while (left <= right) {
|
|
49
|
+
middle = Math.floor((right + left) / 2);
|
|
50
|
+
var middleTimestamp = new Date(msgSet[middle].created_at).getTime();
|
|
51
|
+
var middleLeftTimestamp = ((_a = msgSet[middle - 1]) === null || _a === void 0 ? void 0 : _a.created_at) &&
|
|
52
|
+
new Date(msgSet[middle - 1].created_at).getTime();
|
|
53
|
+
var middleRightTimestamp = ((_b = msgSet[middle + 1]) === null || _b === void 0 ? void 0 : _b.created_at) &&
|
|
54
|
+
new Date(msgSet[middle + 1].created_at).getTime();
|
|
55
|
+
if (middleTimestamp === targetTimestamp ||
|
|
56
|
+
(middleLeftTimestamp &&
|
|
57
|
+
middleRightTimestamp &&
|
|
58
|
+
middleLeftTimestamp < targetTimestamp &&
|
|
59
|
+
targetTimestamp < middleRightTimestamp)) {
|
|
60
|
+
return { index: middle, target: msgSet[middle] };
|
|
61
|
+
}
|
|
62
|
+
if (middleTimestamp < targetTimestamp)
|
|
63
|
+
left = middle + 1;
|
|
64
|
+
else
|
|
65
|
+
right = middle - 1;
|
|
66
|
+
}
|
|
67
|
+
if (!exact || new Date(msgSet[left].created_at).getTime() === targetTimestamp) {
|
|
68
|
+
return { index: left, target: msgSet[left] };
|
|
69
|
+
}
|
|
70
|
+
return { index: -1 };
|
|
71
|
+
};
|
|
@@ -6,16 +6,18 @@ import { EmojiSearchIndex } from 'components/MessageInput';
|
|
|
6
6
|
type ObjectUnion<T> = T[keyof T];
|
|
7
7
|
export type SuggestionCommand<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = CommandResponse<StreamChatGenerics>;
|
|
8
8
|
export type SuggestionUser<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> = UserResponse<StreamChatGenerics>;
|
|
9
|
+
export type SuggestionEmoji<T extends UnknownType = UnknownType> = Awaited<ReturnType<EmojiSearchIndex<T>['search']>>;
|
|
10
|
+
export type SuggestionItem<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, T extends UnknownType = UnknownType> = SuggestionUser<StreamChatGenerics> | SuggestionCommand<StreamChatGenerics> | SuggestionEmoji<T>;
|
|
9
11
|
export type SuggestionItemProps<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics, T extends UnknownType = UnknownType> = {
|
|
10
12
|
className: string;
|
|
11
13
|
component: React.ComponentType<{
|
|
12
|
-
entity:
|
|
14
|
+
entity: SuggestionItem<StreamChatGenerics, T>;
|
|
13
15
|
selected: boolean;
|
|
14
16
|
}>;
|
|
15
|
-
item:
|
|
17
|
+
item: SuggestionItem<StreamChatGenerics, T>;
|
|
16
18
|
key: React.Key;
|
|
17
|
-
onClickHandler: (event: React.BaseSyntheticEvent) => void;
|
|
18
|
-
onSelectHandler: (item:
|
|
19
|
+
onClickHandler: (event: React.BaseSyntheticEvent, item: SuggestionItem<StreamChatGenerics, T>) => void;
|
|
20
|
+
onSelectHandler: (item: SuggestionItem<StreamChatGenerics, T>) => void;
|
|
19
21
|
selected: boolean;
|
|
20
22
|
style: React.CSSProperties;
|
|
21
23
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatAutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/ChatAutoComplete/ChatAutoComplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAS3C,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEjC,MAAM,MAAM,iBAAiB,CAC3B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAExC,MAAM,MAAM,cAAc,CACxB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,YAAY,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ChatAutoComplete.d.ts","sourceRoot":"","sources":["../../../src/components/ChatAutoComplete/ChatAutoComplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ export type EmojiPickerProps = {
|
|
|
5
5
|
buttonClassName?: string;
|
|
6
6
|
pickerContainerClassName?: string;
|
|
7
7
|
wrapperClassName?: string;
|
|
8
|
+
closeOnEmojiSelect?: boolean;
|
|
8
9
|
/**
|
|
9
10
|
* Untyped [properties](https://github.com/missive/emoji-mart/tree/v5.5.2#options--props) to be
|
|
10
11
|
* passed to the [emoji-mart `Picker`](https://github.com/missive/emoji-mart/tree/v5.5.2#-picker) component
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPicker.d.ts","sourceRoot":"","sources":["../../../src/components/Emojis/EmojiPicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtF;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAeF,eAAO,MAAM,WAAW,UAAW,gBAAgB,
|
|
1
|
+
{"version":3,"file":"EmojiPicker.d.ts","sourceRoot":"","sources":["../../../src/components/Emojis/EmojiPicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAW9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,mBAAmB,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtF;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;CAClC,CAAC;AAeF,eAAO,MAAM,WAAW,UAAW,gBAAgB,sBAsElD,CAAC"}
|
|
@@ -52,6 +52,9 @@ export var EmojiPicker = function (props) {
|
|
|
52
52
|
var _a;
|
|
53
53
|
insertText(e.native);
|
|
54
54
|
(_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
55
|
+
if (props.closeOnEmojiSelect) {
|
|
56
|
+
setDisplayPicker(false);
|
|
57
|
+
}
|
|
55
58
|
} }, props.pickerProps)))),
|
|
56
59
|
themeVersion === '1' && (React.createElement(Tooltip, null, displayPicker ? t('Close emoji picker') : t('Open emoji picker'))),
|
|
57
60
|
React.createElement("button", { "aria-expanded": displayPicker, "aria-label": t('aria/Emoji picker'), className: (_c = props.buttonClassName) !== null && _c !== void 0 ? _c : buttonClassName, onClick: function () { return setDisplayPicker(function (cv) { return !cv; }); }, ref: setReferenceElement, type: 'button' }, ButtonIconComponent && React.createElement(ButtonIconComponent, null))));
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var Window = require('../../Window-
|
|
5
|
+
var Window = require('../../Window-44a85f63.js');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var Picker = require('@emoji-mart/react');
|
|
8
8
|
require('dayjs');
|
|
@@ -117,6 +117,9 @@ var EmojiPicker = function (props) {
|
|
|
117
117
|
var _a;
|
|
118
118
|
insertText(e.native);
|
|
119
119
|
(_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
120
|
+
if (props.closeOnEmojiSelect) {
|
|
121
|
+
setDisplayPicker(false);
|
|
122
|
+
}
|
|
120
123
|
} }, props.pickerProps)))),
|
|
121
124
|
themeVersion === '1' && (React__default["default"].createElement(Window.Tooltip, null, displayPicker ? t('Close emoji picker') : t('Open emoji picker'))),
|
|
122
125
|
React__default["default"].createElement("button", { "aria-expanded": displayPicker, "aria-label": t('aria/Emoji picker'), className: (_c = props.buttonClassName) !== null && _c !== void 0 ? _c : buttonClassName, onClick: function () { return setDisplayPicker(function (cv) { return !cv; }); }, ref: setReferenceElement, type: 'button' }, ButtonIconComponent && React__default["default"].createElement(ButtonIconComponent, null))));
|
|
@@ -27,6 +27,7 @@ export type VirtuosoContext<StreamChatGenerics extends DefaultStreamChatGenerics
|
|
|
27
27
|
virtuosoRef: RefObject<VirtuosoHandle>;
|
|
28
28
|
/** Message id which was marked as unread. ALl the messages following this message are considered unrea. */
|
|
29
29
|
firstUnreadMessageId?: string;
|
|
30
|
+
lastReadDate?: Date;
|
|
30
31
|
/**
|
|
31
32
|
* The ID of the last message considered read by the current user in the current channel.
|
|
32
33
|
* All the messages following this message are considered unread.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAA2C,MAAM,OAAO,CAAC;AAClF,OAAO,EAEL,uBAAuB,EACvB,0BAA0B,EAE1B,cAAc,EACd,aAAa,EACd,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,EAAmC,UAAU,EAAmB,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,YAAY,EAAiB,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAalF,OAAO,EACL,yBAAyB,EAE1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,aAAa,EAEd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAuB,MAAM,gCAAgC,CAAC;AAE5F,OAAO,KAAK,EAA+C,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7F,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhF,KAAK,qCAAqC,GACtC,6BAA6B,GAC7B,8BAA8B,GAC9B,sBAAsB,GACtB,uBAAuB,GACvB,MAAM,GACN,aAAa,GACb,SAAS,GACT,gBAAgB,GAChB,mBAAmB,GACnB,eAAe,GACf,qBAAqB,GACrB,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,MAAM,eAAe,CACzB,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E,QAAQ,CACV,IAAI,CACF,qBAAqB,CAAC,kBAAkB,CAAC,EACzC,eAAe,GAAG,eAAe,GAAG,yBAAyB,CAC9D,CACF,GACC,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,EAAE,qCAAqC,CAAC,GAC5F,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAAE,eAAe,CAAC,GAAG;IAC5D,wDAAwD;IACxD,qBAAqB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACjD,mJAAmJ;IACnJ,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC/C,4IAA4I;IAC5I,iBAAiB,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,uBAAuB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC5E,2GAA2G;IAC3G,iBAAiB,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC;IACvD,yHAAyH;IACzH,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACvC,4GAA4G;IAC5G,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -214,6 +214,7 @@ var VirtualizedMessageListWithContext = function (props) {
|
|
|
214
214
|
DateSeparator: DateSeparator,
|
|
215
215
|
firstUnreadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.first_unread_message_id,
|
|
216
216
|
head: head,
|
|
217
|
+
lastReadDate: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read,
|
|
217
218
|
lastReadMessageId: channelUnreadUiState === null || channelUnreadUiState === void 0 ? void 0 : channelUnreadUiState.last_read_message_id,
|
|
218
219
|
lastReceivedMessageId: lastReceivedMessageId,
|
|
219
220
|
loadingMore: loadingMore,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,
|
|
1
|
+
{"version":3,"file":"VirtualizedMessageListComponents.d.ts","sourceRoot":"","sources":["../../../src/components/MessageList/VirtualizedMessageListComponents.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAMrD,OAAO,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAC;AAInE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhF,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,UAElF;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,UAEhE;AAED,eAAO,MAAM,wBAAwB,0JAGuC,IAAI,uGAG7D,SAAS,WAAW,CAAC,EAAE,UAUjC,CAAC;AAEV,KAAK,4BAA4B,CAC/B,kBAAkB,SAAS,yBAAyB,GAAG,yBAAyB,IAC9E;IACF,OAAO,CAAC,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;CAC/C,CAAC;AAGF,eAAO,MAAM,IAAI;;;;;;;0EAyBhB,CAAC;AACF,eAAO,MAAM,MAAM,gLAgBlB,CAAC;AACF,eAAO,MAAM,gBAAgB,yKAe5B,CAAC;AACF,eAAO,MAAM,MAAM,kHAKlB,CAAC;AACF,eAAO,MAAM,eAAe,oGAGX,MAAM,SACd,WAAW,mFAgHnB,CAAC"}
|
|
@@ -5,8 +5,8 @@ import React from 'react';
|
|
|
5
5
|
import { EmptyStateIndicator as DefaultEmptyStateIndicator } from '../EmptyStateIndicator';
|
|
6
6
|
import { LoadingIndicator as DefaultLoadingIndicator } from '../Loading';
|
|
7
7
|
import { isMessageEdited, Message } from '../Message';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
8
|
+
import { useComponentContext } from '../../context';
|
|
9
|
+
import { isDateSeparatorMessage } from './utils';
|
|
10
10
|
var PREPEND_OFFSET = Math.pow(10, 7);
|
|
11
11
|
export function calculateItemIndex(virtuosoIndex, numItemsPrepended) {
|
|
12
12
|
return virtuosoIndex + numItemsPrepended - PREPEND_OFFSET;
|
|
@@ -62,7 +62,7 @@ export var Footer = function () {
|
|
|
62
62
|
};
|
|
63
63
|
export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
64
64
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
65
|
-
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
65
|
+
var additionalMessageInputProps = virtuosoContext.additionalMessageInputProps, closeReactionSelectorOnClick = virtuosoContext.closeReactionSelectorOnClick, customMessageActions = virtuosoContext.customMessageActions, customMessageRenderer = virtuosoContext.customMessageRenderer, DateSeparator = virtuosoContext.DateSeparator, firstUnreadMessageId = virtuosoContext.firstUnreadMessageId, lastReadDate = virtuosoContext.lastReadDate, lastReadMessageId = virtuosoContext.lastReadMessageId, lastReceivedMessageId = virtuosoContext.lastReceivedMessageId, MessageUIComponent = virtuosoContext.Message, messageActions = virtuosoContext.messageActions, MessageSystem = virtuosoContext.MessageSystem, numItemsPrepended = virtuosoContext.numItemsPrepended, ownMessagesReadByOthers = virtuosoContext.ownMessagesReadByOthers, messageList = virtuosoContext.processedMessages, shouldGroupByUser = virtuosoContext.shouldGroupByUser, sortReactionDetails = virtuosoContext.sortReactionDetails, sortReactions = virtuosoContext.sortReactions, _h = virtuosoContext.unreadMessageCount, unreadMessageCount = _h === void 0 ? 0 : _h, UnreadMessagesSeparator = virtuosoContext.UnreadMessagesSeparator, virtuosoRef = virtuosoContext.virtuosoRef;
|
|
66
66
|
var streamMessageIndex = calculateItemIndex(virtuosoIndex, numItemsPrepended);
|
|
67
67
|
if (customMessageRenderer) {
|
|
68
68
|
return customMessageRenderer(messageList, streamMessageIndex);
|
|
@@ -70,7 +70,7 @@ export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
70
70
|
var message = messageList[streamMessageIndex];
|
|
71
71
|
if (!message)
|
|
72
72
|
return React.createElement("div", { style: { height: '1px' } }); // returning null or zero height breaks the virtuoso
|
|
73
|
-
if (
|
|
73
|
+
if (isDateSeparatorMessage(message)) {
|
|
74
74
|
return DateSeparator ? React.createElement(DateSeparator, { date: message.date, unread: message.unread }) : null;
|
|
75
75
|
}
|
|
76
76
|
if (message.type === 'system') {
|
|
@@ -86,11 +86,24 @@ export var messageRenderer = function (virtuosoIndex, _data, virtuosoContext) {
|
|
|
86
86
|
(maybePrevMessage && isMessageEdited(maybePrevMessage)));
|
|
87
87
|
var endOfGroup = shouldGroupByUser &&
|
|
88
88
|
(((_e = message.user) === null || _e === void 0 ? void 0 : _e.id) !== ((_f = maybeNextMessage === null || maybeNextMessage === void 0 ? void 0 : maybeNextMessage.user) === null || _f === void 0 ? void 0 : _f.id) || isMessageEdited(message));
|
|
89
|
+
var createdAtTimestamp = message.created_at && new Date(message.created_at).getTime();
|
|
90
|
+
var lastReadTimestamp = lastReadDate === null || lastReadDate === void 0 ? void 0 : lastReadDate.getTime();
|
|
91
|
+
var isFirstMessage = streamMessageIndex === 0;
|
|
89
92
|
var isNewestMessage = lastReadMessageId === lastReceivedMessageId;
|
|
90
|
-
var isLastReadMessage = message.id === lastReadMessageId
|
|
91
|
-
|
|
93
|
+
var isLastReadMessage = message.id === lastReadMessageId ||
|
|
94
|
+
(!unreadMessageCount && createdAtTimestamp === lastReadTimestamp);
|
|
95
|
+
var isFirstUnreadMessage = firstUnreadMessageId === message.id ||
|
|
96
|
+
(!!unreadMessageCount &&
|
|
97
|
+
createdAtTimestamp &&
|
|
98
|
+
lastReadTimestamp &&
|
|
99
|
+
createdAtTimestamp > lastReadTimestamp &&
|
|
100
|
+
isFirstMessage);
|
|
101
|
+
var showUnreadSeparatorAbove = !lastReadMessageId && isFirstUnreadMessage;
|
|
102
|
+
var showUnreadSeparatorBelow = isLastReadMessage && !isNewestMessage && (firstUnreadMessageId || !!unreadMessageCount);
|
|
92
103
|
return (React.createElement(React.Fragment, null,
|
|
104
|
+
showUnreadSeparatorAbove && (React.createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
105
|
+
React.createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount }))),
|
|
93
106
|
React.createElement(Message, { additionalMessageInputProps: additionalMessageInputProps, autoscrollToBottom: (_g = virtuosoRef.current) === null || _g === void 0 ? void 0 : _g.autoscrollToBottom, closeReactionSelectorOnClick: closeReactionSelectorOnClick, customMessageActions: customMessageActions, endOfGroup: endOfGroup, firstOfGroup: firstOfGroup, groupedByUser: groupedByUser, lastReceivedId: lastReceivedMessageId, message: message, Message: MessageUIComponent, messageActions: messageActions, readBy: ownMessagesReadByOthers[message.id] || [], sortReactionDetails: sortReactionDetails, sortReactions: sortReactions }),
|
|
94
|
-
|
|
107
|
+
showUnreadSeparatorBelow && (React.createElement("div", { className: 'str-chat__unread-messages-separator-wrapper' },
|
|
95
108
|
React.createElement(UnreadMessagesSeparator, { unreadCount: unreadMessageCount })))));
|
|
96
109
|
};
|
|
@@ -26,7 +26,7 @@ export var useMarkRead = function (_a) {
|
|
|
26
26
|
unreadMessages > 0;
|
|
27
27
|
};
|
|
28
28
|
var onVisibilityChange = function () {
|
|
29
|
-
if (shouldMarkRead(
|
|
29
|
+
if (shouldMarkRead(channel.countUnread()))
|
|
30
30
|
markRead();
|
|
31
31
|
};
|
|
32
32
|
var handleMessageNew = function (event) {
|
|
@@ -48,7 +48,6 @@ export var useMarkRead = function (_a) {
|
|
|
48
48
|
}
|
|
49
49
|
else if (newMessageToCurrentChannel &&
|
|
50
50
|
mainChannelUpdated &&
|
|
51
|
-
!isOwnMessage &&
|
|
52
51
|
shouldMarkRead(channel.countUnread())) {
|
|
53
52
|
markRead();
|
|
54
53
|
}
|
|
@@ -57,7 +56,7 @@ export var useMarkRead = function (_a) {
|
|
|
57
56
|
document.addEventListener('visibilitychange', onVisibilityChange);
|
|
58
57
|
var hasScrolledToBottom = previousRenderMessageListScrolledToBottom.current !== isMessageListScrolledToBottom &&
|
|
59
58
|
isMessageListScrolledToBottom;
|
|
60
|
-
if (
|
|
59
|
+
if (hasScrolledToBottom && shouldMarkRead(channel.countUnread()))
|
|
61
60
|
markRead();
|
|
62
61
|
previousRenderMessageListScrolledToBottom.current = isMessageListScrolledToBottom;
|
|
63
62
|
return function () {
|