sceyt-chat-react-uikit 1.6.9-beta.1 → 1.6.9-beta.3

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/index.js CHANGED
@@ -10403,7 +10403,79 @@ var getShowOnlyContactUsers = function getShowOnlyContactUsers() {
10403
10403
  var contactsMap = {};
10404
10404
  var logoSrc = '';
10405
10405
  var showNotifications = true;
10406
+ var notificationPermission = 'default';
10407
+ var isNotificationSupported = function isNotificationSupported() {
10408
+ return 'Notification' in window;
10409
+ };
10410
+ var requestNotificationPermission = function requestNotificationPermission() {
10411
+ try {
10412
+ if (!isNotificationSupported()) {
10413
+ console.warn('Notifications are not supported in this browser');
10414
+ return Promise.resolve('denied');
10415
+ }
10416
+ return Promise.resolve(_catch(function () {
10417
+ return Promise.resolve(Notification.requestPermission()).then(function (permission) {
10418
+ notificationPermission = permission;
10419
+ return permission;
10420
+ });
10421
+ }, function (error) {
10422
+ console.error('Error requesting notification permission:', error);
10423
+ notificationPermission = 'denied';
10424
+ return 'denied';
10425
+ }));
10426
+ } catch (e) {
10427
+ return Promise.reject(e);
10428
+ }
10429
+ };
10430
+ var createCustomNotification = function createCustomNotification(title, body) {
10431
+ var notificationElement = document.createElement('div');
10432
+ notificationElement.style.cssText = "\n position: fixed;\n top: 20px;\n right: 20px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 8px;\n padding: 16px;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n z-index: 10000;\n max-width: 300px;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;\n animation: slideIn 0.3s ease-out;\n ";
10433
+ var style = document.createElement('style');
10434
+ style.textContent = "\n @keyframes slideIn {\n from { transform: translateX(100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n }\n ";
10435
+ document.head.appendChild(style);
10436
+ var titleElement = document.createElement('div');
10437
+ titleElement.style.cssText = 'font-weight: bold; margin-bottom: 8px; color: #333;';
10438
+ titleElement.textContent = title;
10439
+ var bodyElement = document.createElement('div');
10440
+ bodyElement.style.cssText = 'color: #666; font-size: 14px; line-height: 1.4;';
10441
+ bodyElement.textContent = body;
10442
+ var closeButton = document.createElement('button');
10443
+ closeButton.textContent = '×';
10444
+ closeButton.style.cssText = "\n position: absolute;\n top: 8px;\n right: 8px;\n background: none;\n border: none;\n font-size: 18px;\n cursor: pointer;\n color: #999;\n padding: 0;\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n ";
10445
+ notificationElement.appendChild(titleElement);
10446
+ notificationElement.appendChild(bodyElement);
10447
+ notificationElement.appendChild(closeButton);
10448
+ notificationElement.addEventListener('click', function (event) {
10449
+ if (event.target !== closeButton) {
10450
+ window.focus();
10451
+ store.dispatch({
10452
+ type: SWITCH_CHANNEL,
10453
+ payload: {
10454
+ channel: null
10455
+ }
10456
+ });
10457
+ }
10458
+ });
10459
+ var closeNotification = function closeNotification() {
10460
+ notificationElement.style.animation = 'slideOut 0.3s ease-in';
10461
+ setTimeout(function () {
10462
+ if (notificationElement.parentNode) {
10463
+ notificationElement.parentNode.removeChild(notificationElement);
10464
+ }
10465
+ }, 300);
10466
+ };
10467
+ closeButton.addEventListener('click', closeNotification);
10468
+ setTimeout(closeNotification, 5000);
10469
+ document.body.appendChild(notificationElement);
10470
+ return {
10471
+ close: closeNotification,
10472
+ onclick: function onclick(handler) {
10473
+ notificationElement.addEventListener('click', handler);
10474
+ }
10475
+ };
10476
+ };
10406
10477
  var setNotification = function setNotification(body, user, channel, reaction, attachment) {
10478
+ if (!showNotifications) return;
10407
10479
  var getFromContacts = getShowOnlyContactUsers();
10408
10480
  var attachmentType;
10409
10481
  if (attachment) {
@@ -10411,35 +10483,60 @@ var setNotification = function setNotification(body, user, channel, reaction, at
10411
10483
  attachmentType = attType === attachmentTypes.voice ? 'Voice' : attType === attachmentTypes.image ? 'Photo' : attType === attachmentTypes.video ? 'Video' : 'File';
10412
10484
  }
10413
10485
  var isDirectChannel = channel.type === DEFAULT_CHANNEL_TYPE.DIRECT;
10486
+ var title = (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject) || 'New Message';
10487
+ var notificationBody = '';
10488
+ if (reaction) {
10489
+ notificationBody = (channel.type !== DEFAULT_CHANNEL_TYPE.DIRECT ? makeUsername(contactsMap[user.id], user, getFromContacts) + ': ' : '') + " reacted " + reaction + " to \"" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body + "\"";
10490
+ } else {
10491
+ notificationBody = isDirectChannel ? "" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body : makeUsername(contactsMap[user.id], user, getFromContacts) + "\n" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body;
10492
+ }
10414
10493
  var notification;
10415
- if (showNotifications) {
10416
- if (reaction) {
10417
- notification = new Notification("" + (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject), {
10418
- body: (channel.type !== DEFAULT_CHANNEL_TYPE.DIRECT ? makeUsername(contactsMap[user.id], user, getFromContacts) + ': ' : '') + " reacted " + reaction + " to \"" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body + "\"",
10419
- icon: logoSrc
10420
- });
10494
+ if (isNotificationSupported()) {
10495
+ if (notificationPermission === 'granted') {
10496
+ try {
10497
+ notification = new Notification(title, {
10498
+ body: notificationBody,
10499
+ icon: logoSrc || '',
10500
+ tag: 'sceyt-notification',
10501
+ requireInteraction: false
10502
+ });
10503
+ notification.onclick = function (event) {
10504
+ event.preventDefault();
10505
+ window.focus();
10506
+ store.dispatch({
10507
+ type: SWITCH_CHANNEL,
10508
+ payload: {
10509
+ channel: channel
10510
+ }
10511
+ });
10512
+ notification.close();
10513
+ };
10514
+ setTimeout(function () {
10515
+ if (notification) {
10516
+ notification.close();
10517
+ }
10518
+ }, 5000);
10519
+ } catch (error) {
10520
+ console.error('Error creating native notification:', error);
10521
+ notification = createCustomNotification(title, notificationBody);
10522
+ }
10523
+ } else if (notificationPermission === 'default') {
10524
+ requestPermissionOnUserInteraction();
10525
+ notification = createCustomNotification(title, notificationBody);
10421
10526
  } else {
10422
- notification = new Notification("" + (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject), {
10423
- body: isDirectChannel ? "" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body : makeUsername(contactsMap[user.id], user, getFromContacts) + "\n" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body,
10424
- icon: logoSrc
10425
- });
10527
+ notification = createCustomNotification(title, notificationBody);
10426
10528
  }
10427
- notification.onclick = function (event) {
10428
- event.preventDefault();
10429
- window.focus();
10430
- store.dispatch({
10431
- type: SWITCH_CHANNEL,
10432
- payload: {
10433
- channel: channel
10434
- }
10435
- });
10436
- notification.close();
10437
- };
10438
- if (window.sceytTabNotifications) {
10529
+ } else {
10530
+ notification = createCustomNotification(title, notificationBody);
10531
+ }
10532
+ if (window.sceytTabNotifications) {
10533
+ try {
10439
10534
  window.sceytTabNotifications.close();
10535
+ } catch (error) {
10536
+ console.warn('Error closing previous notification:', error);
10440
10537
  }
10441
- window.sceytTabNotifications = notification;
10442
10538
  }
10539
+ window.sceytTabNotifications = notification;
10443
10540
  };
10444
10541
  var setNotificationLogoSrc = function setNotificationLogoSrc(src) {
10445
10542
  logoSrc = src;
@@ -10453,6 +10550,31 @@ var setShowNotifications = function setShowNotifications(show) {
10453
10550
  var getShowNotifications = function getShowNotifications() {
10454
10551
  return showNotifications;
10455
10552
  };
10553
+ var initializeNotifications = function initializeNotifications() {
10554
+ try {
10555
+ if (isNotificationSupported()) {
10556
+ notificationPermission = Notification.permission;
10557
+ if (notificationPermission === 'default') {
10558
+ console.log('Notification permission not yet requested');
10559
+ }
10560
+ }
10561
+ return Promise.resolve();
10562
+ } catch (e) {
10563
+ return Promise.reject(e);
10564
+ }
10565
+ };
10566
+ var requestPermissionOnUserInteraction = function requestPermissionOnUserInteraction() {
10567
+ try {
10568
+ var _temp = function () {
10569
+ if (notificationPermission === 'default') {
10570
+ return Promise.resolve(requestNotificationPermission()).then(function () {});
10571
+ }
10572
+ }();
10573
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
10574
+ } catch (e) {
10575
+ return Promise.reject(e);
10576
+ }
10577
+ };
10456
10578
 
10457
10579
  function getMembersAC(channelId) {
10458
10580
  return {
@@ -17007,14 +17129,14 @@ function editMessage(action) {
17007
17129
  }, _marked6$1, null, [[0, 21]]);
17008
17130
  }
17009
17131
  function getMessagesQuery(action) {
17010
- var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, pendingMessages, messagesMap, filteredPendingMessages, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap, _filteredPendingMessages, _secondResult4, _pendingMessages2, _messagesMap2, _filteredPendingMessages2;
17132
+ var _action$payload, channel, loadWithLastMessage, messageId, limit, withDeliveredMessages, SceytChatClient, messageQueryBuilder, messageQuery, cachedMessages, result, allMessages, havLastMessage, secondResult, sentMessages, messagesMap, filteredSentMessages, _allMessages, messageIndex, maxLengthPart, _secondResult, thirdResult, pendingMessages, _messagesMap, filteredPendingMessages, _secondResult2, _thirdResult, _secondResult3, _pendingMessages, _messagesMap2, _filteredPendingMessages, _secondResult4, _pendingMessages2, _messagesMap3, _filteredPendingMessages2;
17011
17133
  return _regeneratorRuntime().wrap(function getMessagesQuery$(_context9) {
17012
17134
  while (1) switch (_context9.prev = _context9.next) {
17013
17135
  case 0:
17014
17136
  _context9.prev = 0;
17015
17137
  _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages;
17016
17138
  if (!(channel.id && !channel.isMockChannel)) {
17017
- _context9.next = 175;
17139
+ _context9.next = 178;
17018
17140
  break;
17019
17141
  }
17020
17142
  SceytChatClient = getClient();
@@ -17035,13 +17157,13 @@ function getMessagesQuery(action) {
17035
17157
  hasNext: false
17036
17158
  };
17037
17159
  if (!loadWithLastMessage) {
17038
- _context9.next = 54;
17160
+ _context9.next = 57;
17039
17161
  break;
17040
17162
  }
17041
17163
  allMessages = getAllMessages();
17042
17164
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
17043
17165
  if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
17044
- _context9.next = 44;
17166
+ _context9.next = 47;
17045
17167
  break;
17046
17168
  }
17047
17169
  setHasPrevCached(false);
@@ -17066,37 +17188,44 @@ function getMessagesQuery(action) {
17066
17188
  if (withDeliveredMessages) {
17067
17189
  sentMessages = getFromAllMessagesByMessageId('', '', true);
17068
17190
  }
17069
- result.messages = [].concat(result.messages, sentMessages);
17070
- _context9.next = 36;
17191
+ messagesMap = {};
17192
+ result.messages.forEach(function (msg) {
17193
+ messagesMap[msg.tid || ''] = msg;
17194
+ });
17195
+ filteredSentMessages = sentMessages.filter(function (msg) {
17196
+ return !messagesMap[msg.tid || ''];
17197
+ });
17198
+ result.messages = [].concat(result.messages, filteredSentMessages);
17199
+ _context9.next = 39;
17071
17200
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17072
- case 36:
17201
+ case 39:
17073
17202
  setMessagesToMap(channel.id, result.messages);
17074
17203
  setAllMessages(result.messages);
17075
- _context9.next = 40;
17204
+ _context9.next = 43;
17076
17205
  return effects.put(setMessagesHasPrevAC(true));
17077
- case 40:
17078
- _context9.next = 42;
17206
+ case 43:
17207
+ _context9.next = 45;
17079
17208
  return effects.put(markChannelAsReadAC(channel.id));
17080
- case 42:
17081
- _context9.next = 49;
17209
+ case 45:
17210
+ _context9.next = 52;
17082
17211
  break;
17083
- case 44:
17212
+ case 47:
17084
17213
  result.messages = getFromAllMessagesByMessageId('', '', true);
17085
- _context9.next = 47;
17214
+ _context9.next = 50;
17086
17215
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17087
- case 47:
17088
- _context9.next = 49;
17216
+ case 50:
17217
+ _context9.next = 52;
17089
17218
  return effects.put(setMessagesHasPrevAC(true));
17090
- case 49:
17091
- _context9.next = 51;
17219
+ case 52:
17220
+ _context9.next = 54;
17092
17221
  return effects.put(setMessagesHasNextAC(false));
17093
- case 51:
17222
+ case 54:
17094
17223
  setHasNextCached(false);
17095
- _context9.next = 164;
17224
+ _context9.next = 167;
17096
17225
  break;
17097
- case 54:
17226
+ case 57:
17098
17227
  if (!messageId) {
17099
- _context9.next = 97;
17228
+ _context9.next = 100;
17100
17229
  break;
17101
17230
  }
17102
17231
  _allMessages = getAllMessages();
@@ -17105,181 +17234,181 @@ function getMessagesQuery(action) {
17105
17234
  });
17106
17235
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
17107
17236
  if (!(messageIndex >= maxLengthPart)) {
17108
- _context9.next = 66;
17237
+ _context9.next = 69;
17109
17238
  break;
17110
17239
  }
17111
17240
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
17112
- _context9.next = 62;
17241
+ _context9.next = 65;
17113
17242
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17114
- case 62:
17243
+ case 65:
17115
17244
  setHasPrevCached(messageIndex > maxLengthPart);
17116
17245
  setHasNextCached(_allMessages.length > maxLengthPart);
17117
- _context9.next = 93;
17246
+ _context9.next = 96;
17118
17247
  break;
17119
- case 66:
17248
+ case 69:
17120
17249
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17121
17250
  log.info('load by message id from server ...............', messageId);
17122
- _context9.next = 70;
17251
+ _context9.next = 73;
17123
17252
  return effects.call(messageQuery.loadNearMessageId, messageId);
17124
- case 70:
17253
+ case 73:
17125
17254
  result = _context9.sent;
17126
17255
  if (!(result.messages.length === 50)) {
17127
- _context9.next = 83;
17256
+ _context9.next = 86;
17128
17257
  break;
17129
17258
  }
17130
17259
  messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
17131
- _context9.next = 75;
17260
+ _context9.next = 78;
17132
17261
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17133
- case 75:
17262
+ case 78:
17134
17263
  _secondResult = _context9.sent;
17135
17264
  messageQuery.reverse = false;
17136
- _context9.next = 79;
17265
+ _context9.next = 82;
17137
17266
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17138
- case 79:
17267
+ case 82:
17139
17268
  thirdResult = _context9.sent;
17140
17269
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
17141
17270
  result.hasNext = _secondResult.hasNext;
17142
17271
  messageQuery.reverse = true;
17143
- case 83:
17272
+ case 86:
17144
17273
  log.info('result from server ....... ', result);
17145
- _context9.next = 86;
17274
+ _context9.next = 89;
17146
17275
  return effects.put(setMessagesHasNextAC(true));
17147
- case 86:
17276
+ case 89:
17148
17277
  pendingMessages = getPendingMessages(channel.id);
17149
17278
  if (pendingMessages && pendingMessages.length) {
17150
- messagesMap = {};
17279
+ _messagesMap = {};
17151
17280
  result.messages.forEach(function (msg) {
17152
- messagesMap[msg.tid || ''] = msg;
17281
+ _messagesMap[msg.tid || ''] = msg;
17153
17282
  });
17154
17283
  filteredPendingMessages = pendingMessages.filter(function (msg) {
17155
- return !messagesMap[msg.tid || ''];
17284
+ return !_messagesMap[msg.tid || ''];
17156
17285
  });
17157
17286
  setPendingMessages(channel.id, filteredPendingMessages);
17158
17287
  result.messages = [].concat(result.messages, filteredPendingMessages);
17159
17288
  }
17160
- _context9.next = 90;
17289
+ _context9.next = 93;
17161
17290
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17162
- case 90:
17291
+ case 93:
17163
17292
  setAllMessages([].concat(result.messages));
17164
17293
  setHasPrevCached(false);
17165
17294
  setHasNextCached(false);
17166
- case 93:
17167
- _context9.next = 95;
17295
+ case 96:
17296
+ _context9.next = 98;
17168
17297
  return effects.put(setScrollToMessagesAC(messageId));
17169
- case 95:
17170
- _context9.next = 164;
17298
+ case 98:
17299
+ _context9.next = 167;
17171
17300
  break;
17172
- case 97:
17301
+ case 100:
17173
17302
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
17174
- _context9.next = 143;
17303
+ _context9.next = 146;
17175
17304
  break;
17176
17305
  }
17177
17306
  setAllMessages([]);
17178
17307
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17179
17308
  if (!Number(channel.lastDisplayedMessageId)) {
17180
- _context9.next = 121;
17309
+ _context9.next = 124;
17181
17310
  break;
17182
17311
  }
17183
- _context9.next = 103;
17312
+ _context9.next = 106;
17184
17313
  return effects.call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
17185
- case 103:
17314
+ case 106:
17186
17315
  result = _context9.sent;
17187
17316
  if (!(result.messages.length === 50)) {
17188
- _context9.next = 119;
17317
+ _context9.next = 122;
17189
17318
  break;
17190
17319
  }
17191
17320
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
17192
- _context9.next = 108;
17321
+ _context9.next = 111;
17193
17322
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17194
- case 108:
17323
+ case 111:
17195
17324
  _secondResult2 = _context9.sent;
17196
17325
  if (!(channel.newMessageCount > 25)) {
17197
- _context9.next = 118;
17326
+ _context9.next = 121;
17198
17327
  break;
17199
17328
  }
17200
17329
  messageQuery.reverse = false;
17201
- _context9.next = 113;
17330
+ _context9.next = 116;
17202
17331
  return effects.call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17203
- case 113:
17332
+ case 116:
17204
17333
  _thirdResult = _context9.sent;
17205
17334
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
17206
17335
  messageQuery.reverse = true;
17207
- _context9.next = 119;
17336
+ _context9.next = 122;
17208
17337
  break;
17209
- case 118:
17338
+ case 121:
17210
17339
  result.messages = [].concat(_secondResult2.messages, result.messages);
17211
- case 119:
17212
- _context9.next = 131;
17340
+ case 122:
17341
+ _context9.next = 134;
17213
17342
  break;
17214
- case 121:
17215
- _context9.next = 123;
17343
+ case 124:
17344
+ _context9.next = 126;
17216
17345
  return effects.call(messageQuery.loadPrevious);
17217
- case 123:
17346
+ case 126:
17218
17347
  result = _context9.sent;
17219
17348
  if (!(result.messages.length === 50)) {
17220
- _context9.next = 131;
17349
+ _context9.next = 134;
17221
17350
  break;
17222
17351
  }
17223
17352
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17224
- _context9.next = 128;
17353
+ _context9.next = 131;
17225
17354
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17226
- case 128:
17355
+ case 131:
17227
17356
  _secondResult3 = _context9.sent;
17228
17357
  result.messages = [].concat(_secondResult3.messages, result.messages);
17229
17358
  result.hasNext = _secondResult3.hasNext;
17230
- case 131:
17359
+ case 134:
17231
17360
  setMessagesToMap(channel.id, result.messages);
17232
- _context9.next = 134;
17361
+ _context9.next = 137;
17233
17362
  return effects.put(setMessagesHasPrevAC(true));
17234
- case 134:
17235
- _context9.next = 136;
17363
+ case 137:
17364
+ _context9.next = 139;
17236
17365
  return effects.put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
17237
- case 136:
17366
+ case 139:
17238
17367
  _pendingMessages = getPendingMessages(channel.id);
17239
17368
  if (_pendingMessages && _pendingMessages.length) {
17240
- _messagesMap = {};
17369
+ _messagesMap2 = {};
17241
17370
  result.messages.forEach(function (msg) {
17242
- _messagesMap[msg.tid || ''] = msg;
17371
+ _messagesMap2[msg.tid || ''] = msg;
17243
17372
  });
17244
17373
  _filteredPendingMessages = _pendingMessages.filter(function (msg) {
17245
- return !_messagesMap[msg.tid || ''];
17374
+ return !_messagesMap2[msg.tid || ''];
17246
17375
  });
17247
17376
  setPendingMessages(channel.id, _filteredPendingMessages);
17248
17377
  result.messages = [].concat(result.messages, _filteredPendingMessages);
17249
17378
  }
17250
17379
  setAllMessages([].concat(result.messages));
17251
- _context9.next = 141;
17380
+ _context9.next = 144;
17252
17381
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17253
- case 141:
17254
- _context9.next = 164;
17382
+ case 144:
17383
+ _context9.next = 167;
17255
17384
  break;
17256
- case 143:
17385
+ case 146:
17257
17386
  setAllMessages([]);
17258
17387
  if (!(cachedMessages && cachedMessages.length)) {
17259
- _context9.next = 148;
17388
+ _context9.next = 151;
17260
17389
  break;
17261
17390
  }
17262
17391
  setAllMessages([].concat(cachedMessages));
17263
- _context9.next = 148;
17392
+ _context9.next = 151;
17264
17393
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
17265
- case 148:
17394
+ case 151:
17266
17395
  log.info('load message from server');
17267
- _context9.next = 151;
17396
+ _context9.next = 154;
17268
17397
  return effects.call(messageQuery.loadPrevious);
17269
- case 151:
17398
+ case 154:
17270
17399
  result = _context9.sent;
17271
17400
  if (!(result.messages.length === 50)) {
17272
- _context9.next = 159;
17401
+ _context9.next = 162;
17273
17402
  break;
17274
17403
  }
17275
17404
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17276
- _context9.next = 156;
17405
+ _context9.next = 159;
17277
17406
  return effects.call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17278
- case 156:
17407
+ case 159:
17279
17408
  _secondResult4 = _context9.sent;
17280
17409
  result.messages = [].concat(_secondResult4.messages, result.messages);
17281
17410
  result.hasNext = _secondResult4.hasNext;
17282
- case 159:
17411
+ case 162:
17283
17412
  result.messages.forEach(function (msg) {
17284
17413
  updateMessageOnMap(channel.id, {
17285
17414
  messageId: msg.id,
@@ -17287,58 +17416,58 @@ function getMessagesQuery(action) {
17287
17416
  });
17288
17417
  updateMessageOnAllMessages(msg.id, msg);
17289
17418
  });
17290
- _context9.next = 162;
17419
+ _context9.next = 165;
17291
17420
  return effects.put(setMessagesHasPrevAC(result.hasNext));
17292
- case 162:
17293
- _context9.next = 164;
17421
+ case 165:
17422
+ _context9.next = 167;
17294
17423
  return effects.put(setMessagesHasNextAC(false));
17295
- case 164:
17424
+ case 167:
17296
17425
  if (cachedMessages && cachedMessages.length) {
17297
- _context9.next = 171;
17426
+ _context9.next = 174;
17298
17427
  break;
17299
17428
  }
17300
17429
  _pendingMessages2 = getPendingMessages(channel.id);
17301
17430
  if (_pendingMessages2 && _pendingMessages2.length) {
17302
- _messagesMap2 = {};
17431
+ _messagesMap3 = {};
17303
17432
  result.messages.forEach(function (msg) {
17304
- _messagesMap2[msg.tid || ''] = msg;
17433
+ _messagesMap3[msg.tid || ''] = msg;
17305
17434
  });
17306
17435
  _filteredPendingMessages2 = _pendingMessages2.filter(function (msg) {
17307
- return !_messagesMap2[msg.tid || ''];
17436
+ return !_messagesMap3[msg.tid || ''];
17308
17437
  });
17309
17438
  setPendingMessages(channel.id, _filteredPendingMessages2);
17310
17439
  result.messages = [].concat(result.messages, _filteredPendingMessages2);
17311
17440
  }
17312
- _context9.next = 169;
17441
+ _context9.next = 172;
17313
17442
  return effects.put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17314
- case 169:
17443
+ case 172:
17315
17444
  setMessagesToMap(channel.id, result.messages);
17316
17445
  setAllMessages([].concat(result.messages));
17317
- case 171:
17318
- _context9.next = 173;
17446
+ case 174:
17447
+ _context9.next = 176;
17319
17448
  return effects.put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
17320
- case 173:
17321
- _context9.next = 178;
17449
+ case 176:
17450
+ _context9.next = 181;
17322
17451
  break;
17323
- case 175:
17452
+ case 178:
17324
17453
  if (!channel.isMockChannel) {
17325
- _context9.next = 178;
17454
+ _context9.next = 181;
17326
17455
  break;
17327
17456
  }
17328
- _context9.next = 178;
17457
+ _context9.next = 181;
17329
17458
  return effects.put(setMessagesAC([]));
17330
- case 178:
17331
- _context9.next = 183;
17459
+ case 181:
17460
+ _context9.next = 186;
17332
17461
  break;
17333
- case 180:
17334
- _context9.prev = 180;
17462
+ case 183:
17463
+ _context9.prev = 183;
17335
17464
  _context9.t0 = _context9["catch"](0);
17336
17465
  log.error('error in message query', _context9.t0);
17337
- case 183:
17466
+ case 186:
17338
17467
  case "end":
17339
17468
  return _context9.stop();
17340
17469
  }
17341
- }, _marked7$1, null, [[0, 180]]);
17470
+ }, _marked7$1, null, [[0, 183]]);
17342
17471
  }
17343
17472
  function loadMoreMessages(action) {
17344
17473
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result;
@@ -18873,6 +19002,9 @@ var SceytChat = function SceytChat(_ref) {
18873
19002
  dispatch(setIsDraggingAC(true));
18874
19003
  }
18875
19004
  };
19005
+ var handleUserInteraction = function handleUserInteraction() {
19006
+ requestPermissionOnUserInteraction();
19007
+ };
18876
19008
  var handleVisibilityChange = function handleVisibilityChange() {
18877
19009
  if (document[hidden]) {
18878
19010
  setTabIsActive(false);
@@ -18964,15 +19096,7 @@ var SceytChat = function SceytChat(_ref) {
18964
19096
  setChannelTypesFilter(channelTypeFilter);
18965
19097
  }
18966
19098
  if (showNotifications) {
18967
- try {
18968
- if (window.Notification && Notification.permission === 'default') {
18969
- Promise.resolve(Notification.requestPermission()).then(function (permission) {
18970
- log.info('permission:', permission);
18971
- });
18972
- }
18973
- } catch (e) {
18974
- log.error('safari Notification request permission', e);
18975
- }
19099
+ initializeNotifications();
18976
19100
  window.sceytTabNotifications = null;
18977
19101
  window.sceytTabUrl = window.location.href;
18978
19102
  window.addEventListener('focus', function () {
@@ -19048,6 +19172,7 @@ var SceytChat = function SceytChat(_ref) {
19048
19172
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, SceytChatClient ? (/*#__PURE__*/React__default.createElement(ChatContainer, {
19049
19173
  onDrop: handleDropFile,
19050
19174
  onDragOver: handleDragOver,
19175
+ onClick: handleUserInteraction,
19051
19176
  withChannelsList: channelsListWidth && channelsListWidth > 0,
19052
19177
  backgroundColor: backgroundColor,
19053
19178
  highlightedBackground: highlightedBackground,
@@ -19502,20 +19627,24 @@ var DeletedAvatarWrapper = styled__default(SvgDeletedUserAvatar)(_templateObject
19502
19627
  });
19503
19628
 
19504
19629
  var _templateObject$4, _templateObject2$4, _templateObject3$3, _templateObject4$3, _templateObject5$2, _templateObject6$1, _templateObject7$1, _templateObject8$1, _templateObject9$1, _templateObject0$1, _templateObject1$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1, _templateObject20$1;
19505
- var ChannelMessageText = function ChannelMessageText(_ref) {
19506
- var isTypingOrRecording = _ref.isTypingOrRecording,
19507
- textPrimary = _ref.textPrimary,
19508
- textSecondary = _ref.textSecondary,
19509
- draftMessageText = _ref.draftMessageText,
19510
- lastMessage = _ref.lastMessage,
19511
- user = _ref.user,
19512
- contactsMap = _ref.contactsMap,
19513
- getFromContacts = _ref.getFromContacts,
19514
- lastMessageMetas = _ref.lastMessageMetas,
19515
- accentColor = _ref.accentColor,
19516
- typingOrRecording = _ref.typingOrRecording,
19517
- channel = _ref.channel,
19518
- isDirectChannel = _ref.isDirectChannel;
19630
+ var LastMessageAttachments = function LastMessageAttachments(_ref) {
19631
+ var lastMessage = _ref.lastMessage;
19632
+ return !!(lastMessage.attachments && lastMessage.attachments.length) && (lastMessage.attachments[0].type === attachmentTypes.image ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgPicture, null), lastMessage.body ? '' : 'Photo')) : lastMessage.attachments[0].type === attachmentTypes.video ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVideoCall, null), lastMessage.body ? '' : 'Video')) : lastMessage.attachments[0].type === attachmentTypes.file ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgChoseFile, null), lastMessage.body ? '' : 'File')) : lastMessage.attachments[0].type === attachmentTypes.voice ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVoiceIcon, null), lastMessage.body ? '' : 'Voice')) : null);
19633
+ };
19634
+ var ChannelMessageText = function ChannelMessageText(_ref2) {
19635
+ var isTypingOrRecording = _ref2.isTypingOrRecording,
19636
+ textPrimary = _ref2.textPrimary,
19637
+ textSecondary = _ref2.textSecondary,
19638
+ draftMessageText = _ref2.draftMessageText,
19639
+ lastMessage = _ref2.lastMessage,
19640
+ user = _ref2.user,
19641
+ contactsMap = _ref2.contactsMap,
19642
+ getFromContacts = _ref2.getFromContacts,
19643
+ lastMessageMetas = _ref2.lastMessageMetas,
19644
+ accentColor = _ref2.accentColor,
19645
+ typingOrRecording = _ref2.typingOrRecording,
19646
+ channel = _ref2.channel,
19647
+ isDirectChannel = _ref2.isDirectChannel;
19519
19648
  return /*#__PURE__*/React__default.createElement(MessageTextContainer, null, isTypingOrRecording && (/*#__PURE__*/React__default.createElement(TypingIndicator, null, !isDirectChannel && /*#__PURE__*/React__default.createElement(Points, {
19520
19649
  color: textPrimary
19521
19650
  }, ":"), typingOrRecording.isTyping ? 'typing' : 'recording', "...")), !isTypingOrRecording && (draftMessageText ? (/*#__PURE__*/React__default.createElement(DraftMessageText, {
@@ -19524,7 +19653,9 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19524
19653
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19525
19654
  })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'RM' ? " removed " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.slice(0, 5).map(function (mem) {
19526
19655
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19527
- })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'LG' ? 'Left this group' : '') : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, channel.lastReactedMessage && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, "Reacted", /*#__PURE__*/React__default.createElement(ReactionItem, null, channel.newReactions && channel.newReactions[0] && channel.newReactions[0].key), "to", ' "')), !!(lastMessage.attachments && lastMessage.attachments.length) && (lastMessage.attachments[0].type === attachmentTypes.image ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgPicture, null), lastMessage.body ? '' : 'Photo')) : lastMessage.attachments[0].type === attachmentTypes.video ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVideoCall, null), lastMessage.body ? '' : 'Video')) : lastMessage.attachments[0].type === attachmentTypes.file ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgChoseFile, null), lastMessage.body ? '' : 'File')) : lastMessage.attachments[0].type === attachmentTypes.voice ? (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(SvgVoiceIcon, null), lastMessage.body ? '' : 'Voice')) : null), /*#__PURE__*/React__default.createElement(LastMessageDescription, null, !!(lastMessage && lastMessage.id) && MessageTextFormat({
19656
+ })) + " " + (lastMessageMetas && lastMessageMetas.m && lastMessageMetas.m.length > 5 ? "and " + (lastMessageMetas.m.length - 5) + " more" : '') : lastMessage.body === 'LG' ? 'Left this group' : '') : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(LastMessageDescription, null, channel.lastReactedMessage && (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, "Reacted", /*#__PURE__*/React__default.createElement(ReactionItem, null, channel.newReactions && channel.newReactions[0] && channel.newReactions[0].key), "to", ' "')), LastMessageAttachments({
19657
+ lastMessage: lastMessage
19658
+ }), !!(lastMessage && lastMessage.id) && MessageTextFormat({
19528
19659
  text: lastMessage.body,
19529
19660
  message: lastMessage,
19530
19661
  contactsMap: contactsMap,
@@ -19532,34 +19663,34 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19532
19663
  isLastMessage: true,
19533
19664
  accentColor: accentColor,
19534
19665
  textSecondary: textSecondary
19535
- })), channel.lastReactedMessage && '"'))));
19666
+ }), channel.lastReactedMessage && '"')))));
19536
19667
  };
19537
- var Channel = function Channel(_ref2) {
19668
+ var Channel = function Channel(_ref3) {
19538
19669
  var _channel$metadata, _channel$metadata2;
19539
- var channel = _ref2.channel,
19540
- theme = _ref2.theme,
19541
- _ref2$showAvatar = _ref2.showAvatar,
19542
- showAvatar = _ref2$showAvatar === void 0 ? true : _ref2$showAvatar,
19543
- avatarBorderRadius = _ref2.avatarBorderRadius,
19544
- notificationsIsMutedIcon = _ref2.notificationsIsMutedIcon,
19545
- notificationsIsMutedIconColor = _ref2.notificationsIsMutedIconColor,
19546
- pinedIcon = _ref2.pinedIcon,
19547
- selectedChannelLeftBorder = _ref2.selectedChannelLeftBorder,
19548
- selectedChannelBackground = _ref2.selectedChannelBackground,
19549
- contactsMap = _ref2.contactsMap,
19550
- selectedChannelBorderRadius = _ref2.selectedChannelBorderRadius,
19551
- selectedChannelPaddings = _ref2.selectedChannelPaddings,
19552
- channelsPaddings = _ref2.channelsPaddings,
19553
- channelsMargin = _ref2.channelsMargin,
19554
- channelHoverBackground = _ref2.channelHoverBackground,
19555
- channelSubjectFontSize = _ref2.channelSubjectFontSize,
19556
- channelSubjectLineHeight = _ref2.channelSubjectLineHeight,
19557
- channelSubjectColor = _ref2.channelSubjectColor,
19558
- channelLastMessageFontSize = _ref2.channelLastMessageFontSize,
19559
- channelLastMessageTimeFontSize = _ref2.channelLastMessageTimeFontSize,
19560
- channelLastMessageHeight = _ref2.channelLastMessageHeight,
19561
- channelAvatarSize = _ref2.channelAvatarSize,
19562
- channelAvatarTextSize = _ref2.channelAvatarTextSize;
19670
+ var channel = _ref3.channel,
19671
+ theme = _ref3.theme,
19672
+ _ref3$showAvatar = _ref3.showAvatar,
19673
+ showAvatar = _ref3$showAvatar === void 0 ? true : _ref3$showAvatar,
19674
+ avatarBorderRadius = _ref3.avatarBorderRadius,
19675
+ notificationsIsMutedIcon = _ref3.notificationsIsMutedIcon,
19676
+ notificationsIsMutedIconColor = _ref3.notificationsIsMutedIconColor,
19677
+ pinedIcon = _ref3.pinedIcon,
19678
+ selectedChannelLeftBorder = _ref3.selectedChannelLeftBorder,
19679
+ selectedChannelBackground = _ref3.selectedChannelBackground,
19680
+ contactsMap = _ref3.contactsMap,
19681
+ selectedChannelBorderRadius = _ref3.selectedChannelBorderRadius,
19682
+ selectedChannelPaddings = _ref3.selectedChannelPaddings,
19683
+ channelsPaddings = _ref3.channelsPaddings,
19684
+ channelsMargin = _ref3.channelsMargin,
19685
+ channelHoverBackground = _ref3.channelHoverBackground,
19686
+ channelSubjectFontSize = _ref3.channelSubjectFontSize,
19687
+ channelSubjectLineHeight = _ref3.channelSubjectLineHeight,
19688
+ channelSubjectColor = _ref3.channelSubjectColor,
19689
+ channelLastMessageFontSize = _ref3.channelLastMessageFontSize,
19690
+ channelLastMessageTimeFontSize = _ref3.channelLastMessageTimeFontSize,
19691
+ channelLastMessageHeight = _ref3.channelLastMessageHeight,
19692
+ channelAvatarSize = _ref3.channelAvatarSize,
19693
+ channelAvatarTextSize = _ref3.channelAvatarTextSize;
19563
19694
  var _useColor = useColors(),
19564
19695
  accentColor = _useColor[THEME_COLORS.ACCENT],
19565
19696
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -19811,9 +19942,9 @@ var Container$2 = styled__default.div(_templateObject6$1 || (_templateObject6$1
19811
19942
  return props.channelsMargin || '0 8px';
19812
19943
  }, function (props) {
19813
19944
  return props.selectedChannelBorderRadius || '12px';
19814
- }, function (_ref3) {
19815
- var selectedChannel = _ref3.selectedChannel,
19816
- hoverBackground = _ref3.hoverBackground;
19945
+ }, function (_ref4) {
19946
+ var selectedChannel = _ref4.selectedChannel,
19947
+ hoverBackground = _ref4.hoverBackground;
19817
19948
  return !selectedChannel && "\n background-color: " + hoverBackground + ";\n ";
19818
19949
  }, UserStatus, function (props) {
19819
19950
  return props.selectedChannel ? props.selectedBackgroundColor : props.hoverBackground;
@@ -19828,9 +19959,9 @@ var DraftMessageText = styled__default.span(_templateObject8$1 || (_templateObje
19828
19959
  });
19829
19960
  var LastMessageAuthor = styled__default.div(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["\n max-width: 120px;\n font-weight: 500;\n color: ", ";\n\n ", "\n & > span {\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n }\n"])), function (props) {
19830
19961
  return props.color;
19831
- }, function (_ref4) {
19832
- var typing = _ref4.typing,
19833
- recording = _ref4.recording;
19962
+ }, function (_ref5) {
19963
+ var typing = _ref5.typing,
19964
+ recording = _ref5.recording;
19834
19965
  return (typing || recording) && "\n font-weight: 500;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: calc(100% - " + (typing ? 62 : 76) + "px);\n ";
19835
19966
  });
19836
19967
  var Points = styled__default.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
@@ -19847,7 +19978,7 @@ var LastMessageText = styled__default.span(_templateObject1$1 || (_templateObjec
19847
19978
  }, function (props) {
19848
19979
  return props.color;
19849
19980
  });
19850
- var LastMessageDescription = styled__default.div(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n"])));
19981
+ var LastMessageDescription = styled__default.div(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n display: block;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 100%;\n & > svg {\n width: 18px;\n height: 18px;\n margin: 3px 0 -3px 0;\n margin-right: 4px;\n }\n"])));
19851
19982
  var ChannelStatus = styled__default.div(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n position: absolute;\n right: 16px;\n top: 15px;\n display: flex;\n flex-wrap: wrap;\n height: 42px;\n margin-left: auto;\n\n & > svg {\n width: 16px;\n height: 16px;\n color: ", ";\n }\n"])), function (props) {
19852
19983
  return props.color;
19853
19984
  });
@@ -30789,8 +30920,7 @@ var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
30789
30920
  };
30790
30921
  var MessageList = function MessageList(_ref2) {
30791
30922
  var _channel$lastMessage, _channel$lastMessage3, _scrollRef$current;
30792
- var messages = _ref2.messages,
30793
- fontFamily = _ref2.fontFamily,
30923
+ var fontFamily = _ref2.fontFamily,
30794
30924
  _ref2$ownMessageOnRig = _ref2.ownMessageOnRightSide,
30795
30925
  ownMessageOnRightSide = _ref2$ownMessageOnRig === void 0 ? true : _ref2$ownMessageOnRig,
30796
30926
  messageWidthPercent = _ref2.messageWidthPercent,
@@ -30963,6 +31093,7 @@ var MessageList = function MessageList(_ref2) {
30963
31093
  var messagesLoading = reactRedux.useSelector(messagesLoadingState);
30964
31094
  var draggingSelector = reactRedux.useSelector(isDraggingSelector, reactRedux.shallowEqual);
30965
31095
  var showScrollToNewMessageButton = reactRedux.useSelector(showScrollToNewMessageButtonSelector, reactRedux.shallowEqual);
31096
+ var messages = reactRedux.useSelector(activeChannelMessagesSelector, reactRedux.shallowEqual) || [];
30966
31097
  var _useState = React.useState(''),
30967
31098
  unreadMessageId = _useState[0],
30968
31099
  setUnreadMessageId = _useState[1];
@@ -31049,14 +31180,14 @@ var MessageList = function MessageList(_ref2) {
31049
31180
  if (target.scrollTop === 0 && scrollToNewMessage.scrollToBottom && scrollToNewMessage.updateMessageList && messagesLoading !== LOADING_STATE.LOADING) {
31050
31181
  dispatch(getMessagesAC(channel, true));
31051
31182
  }
31183
+ if (target.scrollTop <= -50) {
31184
+ dispatch(showScrollToNewMessageButtonAC(true));
31185
+ } else {
31186
+ dispatch(showScrollToNewMessageButtonAC(false));
31187
+ }
31052
31188
  if (scrollToReply) {
31053
31189
  target.scrollTop = scrollToReply;
31054
31190
  } else {
31055
- if (target.scrollTop <= -50) {
31056
- dispatch(showScrollToNewMessageButtonAC(true));
31057
- } else {
31058
- dispatch(showScrollToNewMessageButtonAC(false));
31059
- }
31060
31191
  if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
31061
31192
  if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
31062
31193
  if (messagesLoading === LOADING_STATE.LOADING || loading || prevDisable) {
@@ -31106,7 +31237,10 @@ var MessageList = function MessageList(_ref2) {
31106
31237
  }) >= 10) {
31107
31238
  var repliedMessage = document.getElementById(messageId);
31108
31239
  if (repliedMessage) {
31109
- scrollRef.current.scrollTop = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
31240
+ scrollRef.current.scrollTo({
31241
+ top: repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2,
31242
+ behavior: 'smooth'
31243
+ });
31110
31244
  repliedMessage.classList.add('highlight');
31111
31245
  setTimeout(function () {
31112
31246
  repliedMessage.classList.remove('highlight');
@@ -31239,7 +31373,10 @@ var MessageList = function MessageList(_ref2) {
31239
31373
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
31240
31374
  if (repliedMessage) {
31241
31375
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
31242
- scrollRef.current.scrollTop = repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200);
31376
+ scrollRef.current.scrollTo({
31377
+ top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
31378
+ behavior: 'smooth'
31379
+ });
31243
31380
  scrollRef.current.style.scrollBehavior = 'smooth';
31244
31381
  if (!channel.backToLinkedChannel) {
31245
31382
  repliedMessage && repliedMessage.classList.add('highlight');
@@ -31261,12 +31398,18 @@ var MessageList = function MessageList(_ref2) {
31261
31398
  if (scrollToNewMessage.scrollToBottom) {
31262
31399
  if (scrollToNewMessage.isIncomingMessage) {
31263
31400
  if (scrollRef.current.scrollTop > -100) {
31264
- scrollRef.current.scrollTop = 0;
31401
+ scrollRef.current.scrollTo({
31402
+ top: 0,
31403
+ behavior: 'smooth'
31404
+ });
31265
31405
  }
31266
31406
  } else {
31267
31407
  nextDisable = true;
31268
31408
  prevDisable = true;
31269
- scrollRef.current.scrollTop = 0;
31409
+ scrollRef.current.scrollTo({
31410
+ top: 0,
31411
+ behavior: 'smooth'
31412
+ });
31270
31413
  dispatch(showScrollToNewMessageButtonAC(false));
31271
31414
  setTimeout(function () {
31272
31415
  prevDisable = false;
@@ -31913,9 +32056,7 @@ var MessagesContainer = function MessagesContainer(_ref) {
31913
32056
  _ref$hiddenMessagesPr = _ref.hiddenMessagesProperties,
31914
32057
  hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr,
31915
32058
  shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
31916
- var messages = reactRedux.useSelector(activeChannelMessagesSelector) || [];
31917
32059
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MessageList, {
31918
- messages: messages,
31919
32060
  fontFamily: fontFamily,
31920
32061
  ownMessageOnRightSide: ownMessageOnRightSide,
31921
32062
  messageWidthPercent: messageWidthPercent,
@@ -38868,7 +39009,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38868
39009
  if (repliedMessage) {
38869
39010
  var scrollRef = document.getElementById('scrollableDiv');
38870
39011
  if (scrollRef) {
38871
- scrollRef.scrollTop = repliedMessage.offsetTop;
39012
+ scrollRef.scrollTo({
39013
+ top: repliedMessage.offsetTop - scrollRef.offsetHeight / 2,
39014
+ behavior: 'smooth'
39015
+ });
38872
39016
  }
38873
39017
  }
38874
39018
  } else {