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.modern.js CHANGED
@@ -10380,7 +10380,79 @@ var getShowOnlyContactUsers = function getShowOnlyContactUsers() {
10380
10380
  var contactsMap = {};
10381
10381
  var logoSrc = '';
10382
10382
  var showNotifications = true;
10383
+ var notificationPermission = 'default';
10384
+ var isNotificationSupported = function isNotificationSupported() {
10385
+ return 'Notification' in window;
10386
+ };
10387
+ var requestNotificationPermission = function requestNotificationPermission() {
10388
+ try {
10389
+ if (!isNotificationSupported()) {
10390
+ console.warn('Notifications are not supported in this browser');
10391
+ return Promise.resolve('denied');
10392
+ }
10393
+ return Promise.resolve(_catch(function () {
10394
+ return Promise.resolve(Notification.requestPermission()).then(function (permission) {
10395
+ notificationPermission = permission;
10396
+ return permission;
10397
+ });
10398
+ }, function (error) {
10399
+ console.error('Error requesting notification permission:', error);
10400
+ notificationPermission = 'denied';
10401
+ return 'denied';
10402
+ }));
10403
+ } catch (e) {
10404
+ return Promise.reject(e);
10405
+ }
10406
+ };
10407
+ var createCustomNotification = function createCustomNotification(title, body) {
10408
+ var notificationElement = document.createElement('div');
10409
+ 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 ";
10410
+ var style = document.createElement('style');
10411
+ style.textContent = "\n @keyframes slideIn {\n from { transform: translateX(100%); opacity: 0; }\n to { transform: translateX(0); opacity: 1; }\n }\n ";
10412
+ document.head.appendChild(style);
10413
+ var titleElement = document.createElement('div');
10414
+ titleElement.style.cssText = 'font-weight: bold; margin-bottom: 8px; color: #333;';
10415
+ titleElement.textContent = title;
10416
+ var bodyElement = document.createElement('div');
10417
+ bodyElement.style.cssText = 'color: #666; font-size: 14px; line-height: 1.4;';
10418
+ bodyElement.textContent = body;
10419
+ var closeButton = document.createElement('button');
10420
+ closeButton.textContent = '×';
10421
+ 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 ";
10422
+ notificationElement.appendChild(titleElement);
10423
+ notificationElement.appendChild(bodyElement);
10424
+ notificationElement.appendChild(closeButton);
10425
+ notificationElement.addEventListener('click', function (event) {
10426
+ if (event.target !== closeButton) {
10427
+ window.focus();
10428
+ store.dispatch({
10429
+ type: SWITCH_CHANNEL,
10430
+ payload: {
10431
+ channel: null
10432
+ }
10433
+ });
10434
+ }
10435
+ });
10436
+ var closeNotification = function closeNotification() {
10437
+ notificationElement.style.animation = 'slideOut 0.3s ease-in';
10438
+ setTimeout(function () {
10439
+ if (notificationElement.parentNode) {
10440
+ notificationElement.parentNode.removeChild(notificationElement);
10441
+ }
10442
+ }, 300);
10443
+ };
10444
+ closeButton.addEventListener('click', closeNotification);
10445
+ setTimeout(closeNotification, 5000);
10446
+ document.body.appendChild(notificationElement);
10447
+ return {
10448
+ close: closeNotification,
10449
+ onclick: function onclick(handler) {
10450
+ notificationElement.addEventListener('click', handler);
10451
+ }
10452
+ };
10453
+ };
10383
10454
  var setNotification = function setNotification(body, user, channel, reaction, attachment) {
10455
+ if (!showNotifications) return;
10384
10456
  var getFromContacts = getShowOnlyContactUsers();
10385
10457
  var attachmentType;
10386
10458
  if (attachment) {
@@ -10388,35 +10460,60 @@ var setNotification = function setNotification(body, user, channel, reaction, at
10388
10460
  attachmentType = attType === attachmentTypes.voice ? 'Voice' : attType === attachmentTypes.image ? 'Photo' : attType === attachmentTypes.video ? 'Video' : 'File';
10389
10461
  }
10390
10462
  var isDirectChannel = channel.type === DEFAULT_CHANNEL_TYPE.DIRECT;
10463
+ var title = (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject) || 'New Message';
10464
+ var notificationBody = '';
10465
+ if (reaction) {
10466
+ notificationBody = (channel.type !== DEFAULT_CHANNEL_TYPE.DIRECT ? makeUsername(contactsMap[user.id], user, getFromContacts) + ': ' : '') + " reacted " + reaction + " to \"" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body + "\"";
10467
+ } else {
10468
+ notificationBody = isDirectChannel ? "" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body : makeUsername(contactsMap[user.id], user, getFromContacts) + "\n" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body;
10469
+ }
10391
10470
  var notification;
10392
- if (showNotifications) {
10393
- if (reaction) {
10394
- notification = new Notification("" + (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject), {
10395
- body: (channel.type !== DEFAULT_CHANNEL_TYPE.DIRECT ? makeUsername(contactsMap[user.id], user, getFromContacts) + ': ' : '') + " reacted " + reaction + " to \"" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body + "\"",
10396
- icon: logoSrc
10397
- });
10471
+ if (isNotificationSupported()) {
10472
+ if (notificationPermission === 'granted') {
10473
+ try {
10474
+ notification = new Notification(title, {
10475
+ body: notificationBody,
10476
+ icon: logoSrc || '',
10477
+ tag: 'sceyt-notification',
10478
+ requireInteraction: false
10479
+ });
10480
+ notification.onclick = function (event) {
10481
+ event.preventDefault();
10482
+ window.focus();
10483
+ store.dispatch({
10484
+ type: SWITCH_CHANNEL,
10485
+ payload: {
10486
+ channel: channel
10487
+ }
10488
+ });
10489
+ notification.close();
10490
+ };
10491
+ setTimeout(function () {
10492
+ if (notification) {
10493
+ notification.close();
10494
+ }
10495
+ }, 5000);
10496
+ } catch (error) {
10497
+ console.error('Error creating native notification:', error);
10498
+ notification = createCustomNotification(title, notificationBody);
10499
+ }
10500
+ } else if (notificationPermission === 'default') {
10501
+ requestPermissionOnUserInteraction();
10502
+ notification = createCustomNotification(title, notificationBody);
10398
10503
  } else {
10399
- notification = new Notification("" + (isDirectChannel ? makeUsername(contactsMap[user.id], user, getFromContacts) : channel.subject), {
10400
- body: isDirectChannel ? "" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body : makeUsername(contactsMap[user.id], user, getFromContacts) + "\n" + (attachmentType || '') + (attachmentType && body ? ': ' : '') + body,
10401
- icon: logoSrc
10402
- });
10504
+ notification = createCustomNotification(title, notificationBody);
10403
10505
  }
10404
- notification.onclick = function (event) {
10405
- event.preventDefault();
10406
- window.focus();
10407
- store.dispatch({
10408
- type: SWITCH_CHANNEL,
10409
- payload: {
10410
- channel: channel
10411
- }
10412
- });
10413
- notification.close();
10414
- };
10415
- if (window.sceytTabNotifications) {
10506
+ } else {
10507
+ notification = createCustomNotification(title, notificationBody);
10508
+ }
10509
+ if (window.sceytTabNotifications) {
10510
+ try {
10416
10511
  window.sceytTabNotifications.close();
10512
+ } catch (error) {
10513
+ console.warn('Error closing previous notification:', error);
10417
10514
  }
10418
- window.sceytTabNotifications = notification;
10419
10515
  }
10516
+ window.sceytTabNotifications = notification;
10420
10517
  };
10421
10518
  var setNotificationLogoSrc = function setNotificationLogoSrc(src) {
10422
10519
  logoSrc = src;
@@ -10430,6 +10527,31 @@ var setShowNotifications = function setShowNotifications(show) {
10430
10527
  var getShowNotifications = function getShowNotifications() {
10431
10528
  return showNotifications;
10432
10529
  };
10530
+ var initializeNotifications = function initializeNotifications() {
10531
+ try {
10532
+ if (isNotificationSupported()) {
10533
+ notificationPermission = Notification.permission;
10534
+ if (notificationPermission === 'default') {
10535
+ console.log('Notification permission not yet requested');
10536
+ }
10537
+ }
10538
+ return Promise.resolve();
10539
+ } catch (e) {
10540
+ return Promise.reject(e);
10541
+ }
10542
+ };
10543
+ var requestPermissionOnUserInteraction = function requestPermissionOnUserInteraction() {
10544
+ try {
10545
+ var _temp = function () {
10546
+ if (notificationPermission === 'default') {
10547
+ return Promise.resolve(requestNotificationPermission()).then(function () {});
10548
+ }
10549
+ }();
10550
+ return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
10551
+ } catch (e) {
10552
+ return Promise.reject(e);
10553
+ }
10554
+ };
10433
10555
 
10434
10556
  function getMembersAC(channelId) {
10435
10557
  return {
@@ -16984,14 +17106,14 @@ function editMessage(action) {
16984
17106
  }, _marked6$1, null, [[0, 21]]);
16985
17107
  }
16986
17108
  function getMessagesQuery(action) {
16987
- 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;
17109
+ 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;
16988
17110
  return _regeneratorRuntime().wrap(function getMessagesQuery$(_context9) {
16989
17111
  while (1) switch (_context9.prev = _context9.next) {
16990
17112
  case 0:
16991
17113
  _context9.prev = 0;
16992
17114
  _action$payload = action.payload, channel = _action$payload.channel, loadWithLastMessage = _action$payload.loadWithLastMessage, messageId = _action$payload.messageId, limit = _action$payload.limit, withDeliveredMessages = _action$payload.withDeliveredMessages;
16993
17115
  if (!(channel.id && !channel.isMockChannel)) {
16994
- _context9.next = 175;
17116
+ _context9.next = 178;
16995
17117
  break;
16996
17118
  }
16997
17119
  SceytChatClient = getClient();
@@ -17012,13 +17134,13 @@ function getMessagesQuery(action) {
17012
17134
  hasNext: false
17013
17135
  };
17014
17136
  if (!loadWithLastMessage) {
17015
- _context9.next = 54;
17137
+ _context9.next = 57;
17016
17138
  break;
17017
17139
  }
17018
17140
  allMessages = getAllMessages();
17019
17141
  havLastMessage = allMessages && allMessages.length && channel.lastMessage && allMessages[allMessages.length - 1] && allMessages[allMessages.length - 1].id === channel.lastMessage.id;
17020
17142
  if (!(channel.newMessageCount && channel.newMessageCount > 0 || !havLastMessage)) {
17021
- _context9.next = 44;
17143
+ _context9.next = 47;
17022
17144
  break;
17023
17145
  }
17024
17146
  setHasPrevCached(false);
@@ -17043,37 +17165,44 @@ function getMessagesQuery(action) {
17043
17165
  if (withDeliveredMessages) {
17044
17166
  sentMessages = getFromAllMessagesByMessageId('', '', true);
17045
17167
  }
17046
- result.messages = [].concat(result.messages, sentMessages);
17047
- _context9.next = 36;
17168
+ messagesMap = {};
17169
+ result.messages.forEach(function (msg) {
17170
+ messagesMap[msg.tid || ''] = msg;
17171
+ });
17172
+ filteredSentMessages = sentMessages.filter(function (msg) {
17173
+ return !messagesMap[msg.tid || ''];
17174
+ });
17175
+ result.messages = [].concat(result.messages, filteredSentMessages);
17176
+ _context9.next = 39;
17048
17177
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17049
- case 36:
17178
+ case 39:
17050
17179
  setMessagesToMap(channel.id, result.messages);
17051
17180
  setAllMessages(result.messages);
17052
- _context9.next = 40;
17181
+ _context9.next = 43;
17053
17182
  return put(setMessagesHasPrevAC(true));
17054
- case 40:
17055
- _context9.next = 42;
17183
+ case 43:
17184
+ _context9.next = 45;
17056
17185
  return put(markChannelAsReadAC(channel.id));
17057
- case 42:
17058
- _context9.next = 49;
17186
+ case 45:
17187
+ _context9.next = 52;
17059
17188
  break;
17060
- case 44:
17189
+ case 47:
17061
17190
  result.messages = getFromAllMessagesByMessageId('', '', true);
17062
- _context9.next = 47;
17191
+ _context9.next = 50;
17063
17192
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17064
- case 47:
17065
- _context9.next = 49;
17193
+ case 50:
17194
+ _context9.next = 52;
17066
17195
  return put(setMessagesHasPrevAC(true));
17067
- case 49:
17068
- _context9.next = 51;
17196
+ case 52:
17197
+ _context9.next = 54;
17069
17198
  return put(setMessagesHasNextAC(false));
17070
- case 51:
17199
+ case 54:
17071
17200
  setHasNextCached(false);
17072
- _context9.next = 164;
17201
+ _context9.next = 167;
17073
17202
  break;
17074
- case 54:
17203
+ case 57:
17075
17204
  if (!messageId) {
17076
- _context9.next = 97;
17205
+ _context9.next = 100;
17077
17206
  break;
17078
17207
  }
17079
17208
  _allMessages = getAllMessages();
@@ -17082,181 +17211,181 @@ function getMessagesQuery(action) {
17082
17211
  });
17083
17212
  maxLengthPart = MESSAGES_MAX_LENGTH / 2;
17084
17213
  if (!(messageIndex >= maxLengthPart)) {
17085
- _context9.next = 66;
17214
+ _context9.next = 69;
17086
17215
  break;
17087
17216
  }
17088
17217
  result.messages = _allMessages.slice(messageIndex - maxLengthPart, messageIndex + maxLengthPart);
17089
- _context9.next = 62;
17218
+ _context9.next = 65;
17090
17219
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17091
- case 62:
17220
+ case 65:
17092
17221
  setHasPrevCached(messageIndex > maxLengthPart);
17093
17222
  setHasNextCached(_allMessages.length > maxLengthPart);
17094
- _context9.next = 93;
17223
+ _context9.next = 96;
17095
17224
  break;
17096
- case 66:
17225
+ case 69:
17097
17226
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17098
17227
  log.info('load by message id from server ...............', messageId);
17099
- _context9.next = 70;
17228
+ _context9.next = 73;
17100
17229
  return call(messageQuery.loadNearMessageId, messageId);
17101
- case 70:
17230
+ case 73:
17102
17231
  result = _context9.sent;
17103
17232
  if (!(result.messages.length === 50)) {
17104
- _context9.next = 83;
17233
+ _context9.next = 86;
17105
17234
  break;
17106
17235
  }
17107
17236
  messageQuery.limit = (MESSAGES_MAX_LENGTH - 50) / 2;
17108
- _context9.next = 75;
17237
+ _context9.next = 78;
17109
17238
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17110
- case 75:
17239
+ case 78:
17111
17240
  _secondResult = _context9.sent;
17112
17241
  messageQuery.reverse = false;
17113
- _context9.next = 79;
17242
+ _context9.next = 82;
17114
17243
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17115
- case 79:
17244
+ case 82:
17116
17245
  thirdResult = _context9.sent;
17117
17246
  result.messages = [].concat(_secondResult.messages, result.messages, thirdResult.messages);
17118
17247
  result.hasNext = _secondResult.hasNext;
17119
17248
  messageQuery.reverse = true;
17120
- case 83:
17249
+ case 86:
17121
17250
  log.info('result from server ....... ', result);
17122
- _context9.next = 86;
17251
+ _context9.next = 89;
17123
17252
  return put(setMessagesHasNextAC(true));
17124
- case 86:
17253
+ case 89:
17125
17254
  pendingMessages = getPendingMessages(channel.id);
17126
17255
  if (pendingMessages && pendingMessages.length) {
17127
- messagesMap = {};
17256
+ _messagesMap = {};
17128
17257
  result.messages.forEach(function (msg) {
17129
- messagesMap[msg.tid || ''] = msg;
17258
+ _messagesMap[msg.tid || ''] = msg;
17130
17259
  });
17131
17260
  filteredPendingMessages = pendingMessages.filter(function (msg) {
17132
- return !messagesMap[msg.tid || ''];
17261
+ return !_messagesMap[msg.tid || ''];
17133
17262
  });
17134
17263
  setPendingMessages(channel.id, filteredPendingMessages);
17135
17264
  result.messages = [].concat(result.messages, filteredPendingMessages);
17136
17265
  }
17137
- _context9.next = 90;
17266
+ _context9.next = 93;
17138
17267
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17139
- case 90:
17268
+ case 93:
17140
17269
  setAllMessages([].concat(result.messages));
17141
17270
  setHasPrevCached(false);
17142
17271
  setHasNextCached(false);
17143
- case 93:
17144
- _context9.next = 95;
17272
+ case 96:
17273
+ _context9.next = 98;
17145
17274
  return put(setScrollToMessagesAC(messageId));
17146
- case 95:
17147
- _context9.next = 164;
17275
+ case 98:
17276
+ _context9.next = 167;
17148
17277
  break;
17149
- case 97:
17278
+ case 100:
17150
17279
  if (!(channel.newMessageCount && channel.lastDisplayedMessageId)) {
17151
- _context9.next = 143;
17280
+ _context9.next = 146;
17152
17281
  break;
17153
17282
  }
17154
17283
  setAllMessages([]);
17155
17284
  messageQuery.limit = MESSAGES_MAX_LENGTH;
17156
17285
  if (!Number(channel.lastDisplayedMessageId)) {
17157
- _context9.next = 121;
17286
+ _context9.next = 124;
17158
17287
  break;
17159
17288
  }
17160
- _context9.next = 103;
17289
+ _context9.next = 106;
17161
17290
  return call(messageQuery.loadNearMessageId, channel.lastDisplayedMessageId);
17162
- case 103:
17291
+ case 106:
17163
17292
  result = _context9.sent;
17164
17293
  if (!(result.messages.length === 50)) {
17165
- _context9.next = 119;
17294
+ _context9.next = 122;
17166
17295
  break;
17167
17296
  }
17168
17297
  messageQuery.limit = channel.newMessageCount > 25 ? (MESSAGES_MAX_LENGTH - 50) / 2 : MESSAGES_MAX_LENGTH - 50;
17169
- _context9.next = 108;
17298
+ _context9.next = 111;
17170
17299
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17171
- case 108:
17300
+ case 111:
17172
17301
  _secondResult2 = _context9.sent;
17173
17302
  if (!(channel.newMessageCount > 25)) {
17174
- _context9.next = 118;
17303
+ _context9.next = 121;
17175
17304
  break;
17176
17305
  }
17177
17306
  messageQuery.reverse = false;
17178
- _context9.next = 113;
17307
+ _context9.next = 116;
17179
17308
  return call(messageQuery.loadNextMessageId, result.messages[result.messages.length - 1].id);
17180
- case 113:
17309
+ case 116:
17181
17310
  _thirdResult = _context9.sent;
17182
17311
  result.messages = [].concat(_secondResult2.messages, result.messages, _thirdResult.messages);
17183
17312
  messageQuery.reverse = true;
17184
- _context9.next = 119;
17313
+ _context9.next = 122;
17185
17314
  break;
17186
- case 118:
17315
+ case 121:
17187
17316
  result.messages = [].concat(_secondResult2.messages, result.messages);
17188
- case 119:
17189
- _context9.next = 131;
17317
+ case 122:
17318
+ _context9.next = 134;
17190
17319
  break;
17191
- case 121:
17192
- _context9.next = 123;
17320
+ case 124:
17321
+ _context9.next = 126;
17193
17322
  return call(messageQuery.loadPrevious);
17194
- case 123:
17323
+ case 126:
17195
17324
  result = _context9.sent;
17196
17325
  if (!(result.messages.length === 50)) {
17197
- _context9.next = 131;
17326
+ _context9.next = 134;
17198
17327
  break;
17199
17328
  }
17200
17329
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17201
- _context9.next = 128;
17330
+ _context9.next = 131;
17202
17331
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17203
- case 128:
17332
+ case 131:
17204
17333
  _secondResult3 = _context9.sent;
17205
17334
  result.messages = [].concat(_secondResult3.messages, result.messages);
17206
17335
  result.hasNext = _secondResult3.hasNext;
17207
- case 131:
17336
+ case 134:
17208
17337
  setMessagesToMap(channel.id, result.messages);
17209
- _context9.next = 134;
17338
+ _context9.next = 137;
17210
17339
  return put(setMessagesHasPrevAC(true));
17211
- case 134:
17212
- _context9.next = 136;
17340
+ case 137:
17341
+ _context9.next = 139;
17213
17342
  return put(setMessagesHasNextAC(channel.lastMessage && result.messages.length > 0 && channel.lastMessage.id !== result.messages[result.messages.length - 1].id));
17214
- case 136:
17343
+ case 139:
17215
17344
  _pendingMessages = getPendingMessages(channel.id);
17216
17345
  if (_pendingMessages && _pendingMessages.length) {
17217
- _messagesMap = {};
17346
+ _messagesMap2 = {};
17218
17347
  result.messages.forEach(function (msg) {
17219
- _messagesMap[msg.tid || ''] = msg;
17348
+ _messagesMap2[msg.tid || ''] = msg;
17220
17349
  });
17221
17350
  _filteredPendingMessages = _pendingMessages.filter(function (msg) {
17222
- return !_messagesMap[msg.tid || ''];
17351
+ return !_messagesMap2[msg.tid || ''];
17223
17352
  });
17224
17353
  setPendingMessages(channel.id, _filteredPendingMessages);
17225
17354
  result.messages = [].concat(result.messages, _filteredPendingMessages);
17226
17355
  }
17227
17356
  setAllMessages([].concat(result.messages));
17228
- _context9.next = 141;
17357
+ _context9.next = 144;
17229
17358
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17230
- case 141:
17231
- _context9.next = 164;
17359
+ case 144:
17360
+ _context9.next = 167;
17232
17361
  break;
17233
- case 143:
17362
+ case 146:
17234
17363
  setAllMessages([]);
17235
17364
  if (!(cachedMessages && cachedMessages.length)) {
17236
- _context9.next = 148;
17365
+ _context9.next = 151;
17237
17366
  break;
17238
17367
  }
17239
17368
  setAllMessages([].concat(cachedMessages));
17240
- _context9.next = 148;
17369
+ _context9.next = 151;
17241
17370
  return put(setMessagesAC(JSON.parse(JSON.stringify(cachedMessages))));
17242
- case 148:
17371
+ case 151:
17243
17372
  log.info('load message from server');
17244
- _context9.next = 151;
17373
+ _context9.next = 154;
17245
17374
  return call(messageQuery.loadPrevious);
17246
- case 151:
17375
+ case 154:
17247
17376
  result = _context9.sent;
17248
17377
  if (!(result.messages.length === 50)) {
17249
- _context9.next = 159;
17378
+ _context9.next = 162;
17250
17379
  break;
17251
17380
  }
17252
17381
  messageQuery.limit = MESSAGES_MAX_LENGTH - 50;
17253
- _context9.next = 156;
17382
+ _context9.next = 159;
17254
17383
  return call(messageQuery.loadPreviousMessageId, result.messages[0].id);
17255
- case 156:
17384
+ case 159:
17256
17385
  _secondResult4 = _context9.sent;
17257
17386
  result.messages = [].concat(_secondResult4.messages, result.messages);
17258
17387
  result.hasNext = _secondResult4.hasNext;
17259
- case 159:
17388
+ case 162:
17260
17389
  result.messages.forEach(function (msg) {
17261
17390
  updateMessageOnMap(channel.id, {
17262
17391
  messageId: msg.id,
@@ -17264,58 +17393,58 @@ function getMessagesQuery(action) {
17264
17393
  });
17265
17394
  updateMessageOnAllMessages(msg.id, msg);
17266
17395
  });
17267
- _context9.next = 162;
17396
+ _context9.next = 165;
17268
17397
  return put(setMessagesHasPrevAC(result.hasNext));
17269
- case 162:
17270
- _context9.next = 164;
17398
+ case 165:
17399
+ _context9.next = 167;
17271
17400
  return put(setMessagesHasNextAC(false));
17272
- case 164:
17401
+ case 167:
17273
17402
  if (cachedMessages && cachedMessages.length) {
17274
- _context9.next = 171;
17403
+ _context9.next = 174;
17275
17404
  break;
17276
17405
  }
17277
17406
  _pendingMessages2 = getPendingMessages(channel.id);
17278
17407
  if (_pendingMessages2 && _pendingMessages2.length) {
17279
- _messagesMap2 = {};
17408
+ _messagesMap3 = {};
17280
17409
  result.messages.forEach(function (msg) {
17281
- _messagesMap2[msg.tid || ''] = msg;
17410
+ _messagesMap3[msg.tid || ''] = msg;
17282
17411
  });
17283
17412
  _filteredPendingMessages2 = _pendingMessages2.filter(function (msg) {
17284
- return !_messagesMap2[msg.tid || ''];
17413
+ return !_messagesMap3[msg.tid || ''];
17285
17414
  });
17286
17415
  setPendingMessages(channel.id, _filteredPendingMessages2);
17287
17416
  result.messages = [].concat(result.messages, _filteredPendingMessages2);
17288
17417
  }
17289
- _context9.next = 169;
17418
+ _context9.next = 172;
17290
17419
  return put(setMessagesAC(JSON.parse(JSON.stringify(result.messages))));
17291
- case 169:
17420
+ case 172:
17292
17421
  setMessagesToMap(channel.id, result.messages);
17293
17422
  setAllMessages([].concat(result.messages));
17294
- case 171:
17295
- _context9.next = 173;
17423
+ case 174:
17424
+ _context9.next = 176;
17296
17425
  return put(setMessagesLoadingStateAC(LOADING_STATE.LOADED));
17297
- case 173:
17298
- _context9.next = 178;
17426
+ case 176:
17427
+ _context9.next = 181;
17299
17428
  break;
17300
- case 175:
17429
+ case 178:
17301
17430
  if (!channel.isMockChannel) {
17302
- _context9.next = 178;
17431
+ _context9.next = 181;
17303
17432
  break;
17304
17433
  }
17305
- _context9.next = 178;
17434
+ _context9.next = 181;
17306
17435
  return put(setMessagesAC([]));
17307
- case 178:
17308
- _context9.next = 183;
17436
+ case 181:
17437
+ _context9.next = 186;
17309
17438
  break;
17310
- case 180:
17311
- _context9.prev = 180;
17439
+ case 183:
17440
+ _context9.prev = 183;
17312
17441
  _context9.t0 = _context9["catch"](0);
17313
17442
  log.error('error in message query', _context9.t0);
17314
- case 183:
17443
+ case 186:
17315
17444
  case "end":
17316
17445
  return _context9.stop();
17317
17446
  }
17318
- }, _marked7$1, null, [[0, 180]]);
17447
+ }, _marked7$1, null, [[0, 183]]);
17319
17448
  }
17320
17449
  function loadMoreMessages(action) {
17321
17450
  var payload, limit, direction, channelId, messageId, hasNext, SceytChatClient, messageQueryBuilder, messageQuery, result;
@@ -18850,6 +18979,9 @@ var SceytChat = function SceytChat(_ref) {
18850
18979
  dispatch(setIsDraggingAC(true));
18851
18980
  }
18852
18981
  };
18982
+ var handleUserInteraction = function handleUserInteraction() {
18983
+ requestPermissionOnUserInteraction();
18984
+ };
18853
18985
  var handleVisibilityChange = function handleVisibilityChange() {
18854
18986
  if (document[hidden]) {
18855
18987
  setTabIsActive(false);
@@ -18941,15 +19073,7 @@ var SceytChat = function SceytChat(_ref) {
18941
19073
  setChannelTypesFilter(channelTypeFilter);
18942
19074
  }
18943
19075
  if (showNotifications) {
18944
- try {
18945
- if (window.Notification && Notification.permission === 'default') {
18946
- Promise.resolve(Notification.requestPermission()).then(function (permission) {
18947
- log.info('permission:', permission);
18948
- });
18949
- }
18950
- } catch (e) {
18951
- log.error('safari Notification request permission', e);
18952
- }
19076
+ initializeNotifications();
18953
19077
  window.sceytTabNotifications = null;
18954
19078
  window.sceytTabUrl = window.location.href;
18955
19079
  window.addEventListener('focus', function () {
@@ -19025,6 +19149,7 @@ var SceytChat = function SceytChat(_ref) {
19025
19149
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, SceytChatClient ? (/*#__PURE__*/React__default.createElement(ChatContainer, {
19026
19150
  onDrop: handleDropFile,
19027
19151
  onDragOver: handleDragOver,
19152
+ onClick: handleUserInteraction,
19028
19153
  withChannelsList: channelsListWidth && channelsListWidth > 0,
19029
19154
  backgroundColor: backgroundColor,
19030
19155
  highlightedBackground: highlightedBackground,
@@ -19479,20 +19604,24 @@ var DeletedAvatarWrapper = styled(SvgDeletedUserAvatar)(_templateObject4$2 || (_
19479
19604
  });
19480
19605
 
19481
19606
  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;
19482
- var ChannelMessageText = function ChannelMessageText(_ref) {
19483
- var isTypingOrRecording = _ref.isTypingOrRecording,
19484
- textPrimary = _ref.textPrimary,
19485
- textSecondary = _ref.textSecondary,
19486
- draftMessageText = _ref.draftMessageText,
19487
- lastMessage = _ref.lastMessage,
19488
- user = _ref.user,
19489
- contactsMap = _ref.contactsMap,
19490
- getFromContacts = _ref.getFromContacts,
19491
- lastMessageMetas = _ref.lastMessageMetas,
19492
- accentColor = _ref.accentColor,
19493
- typingOrRecording = _ref.typingOrRecording,
19494
- channel = _ref.channel,
19495
- isDirectChannel = _ref.isDirectChannel;
19607
+ var LastMessageAttachments = function LastMessageAttachments(_ref) {
19608
+ var lastMessage = _ref.lastMessage;
19609
+ 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);
19610
+ };
19611
+ var ChannelMessageText = function ChannelMessageText(_ref2) {
19612
+ var isTypingOrRecording = _ref2.isTypingOrRecording,
19613
+ textPrimary = _ref2.textPrimary,
19614
+ textSecondary = _ref2.textSecondary,
19615
+ draftMessageText = _ref2.draftMessageText,
19616
+ lastMessage = _ref2.lastMessage,
19617
+ user = _ref2.user,
19618
+ contactsMap = _ref2.contactsMap,
19619
+ getFromContacts = _ref2.getFromContacts,
19620
+ lastMessageMetas = _ref2.lastMessageMetas,
19621
+ accentColor = _ref2.accentColor,
19622
+ typingOrRecording = _ref2.typingOrRecording,
19623
+ channel = _ref2.channel,
19624
+ isDirectChannel = _ref2.isDirectChannel;
19496
19625
  return /*#__PURE__*/React__default.createElement(MessageTextContainer, null, isTypingOrRecording && (/*#__PURE__*/React__default.createElement(TypingIndicator, null, !isDirectChannel && /*#__PURE__*/React__default.createElement(Points, {
19497
19626
  color: textPrimary
19498
19627
  }, ":"), typingOrRecording.isTyping ? 'typing' : 'recording', "...")), !isTypingOrRecording && (draftMessageText ? (/*#__PURE__*/React__default.createElement(DraftMessageText, {
@@ -19501,7 +19630,9 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19501
19630
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19502
19631
  })) + " " + (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) {
19503
19632
  return mem === user.id ? ' You' : " " + systemMessageUserName(mem, contactsMap && contactsMap[mem], lastMessage.mentionedUsers);
19504
- })) + " " + (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({
19633
+ })) + " " + (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({
19634
+ lastMessage: lastMessage
19635
+ }), !!(lastMessage && lastMessage.id) && MessageTextFormat({
19505
19636
  text: lastMessage.body,
19506
19637
  message: lastMessage,
19507
19638
  contactsMap: contactsMap,
@@ -19509,34 +19640,34 @@ var ChannelMessageText = function ChannelMessageText(_ref) {
19509
19640
  isLastMessage: true,
19510
19641
  accentColor: accentColor,
19511
19642
  textSecondary: textSecondary
19512
- })), channel.lastReactedMessage && '"'))));
19643
+ }), channel.lastReactedMessage && '"')))));
19513
19644
  };
19514
- var Channel = function Channel(_ref2) {
19645
+ var Channel = function Channel(_ref3) {
19515
19646
  var _channel$metadata, _channel$metadata2;
19516
- var channel = _ref2.channel,
19517
- theme = _ref2.theme,
19518
- _ref2$showAvatar = _ref2.showAvatar,
19519
- showAvatar = _ref2$showAvatar === void 0 ? true : _ref2$showAvatar,
19520
- avatarBorderRadius = _ref2.avatarBorderRadius,
19521
- notificationsIsMutedIcon = _ref2.notificationsIsMutedIcon,
19522
- notificationsIsMutedIconColor = _ref2.notificationsIsMutedIconColor,
19523
- pinedIcon = _ref2.pinedIcon,
19524
- selectedChannelLeftBorder = _ref2.selectedChannelLeftBorder,
19525
- selectedChannelBackground = _ref2.selectedChannelBackground,
19526
- contactsMap = _ref2.contactsMap,
19527
- selectedChannelBorderRadius = _ref2.selectedChannelBorderRadius,
19528
- selectedChannelPaddings = _ref2.selectedChannelPaddings,
19529
- channelsPaddings = _ref2.channelsPaddings,
19530
- channelsMargin = _ref2.channelsMargin,
19531
- channelHoverBackground = _ref2.channelHoverBackground,
19532
- channelSubjectFontSize = _ref2.channelSubjectFontSize,
19533
- channelSubjectLineHeight = _ref2.channelSubjectLineHeight,
19534
- channelSubjectColor = _ref2.channelSubjectColor,
19535
- channelLastMessageFontSize = _ref2.channelLastMessageFontSize,
19536
- channelLastMessageTimeFontSize = _ref2.channelLastMessageTimeFontSize,
19537
- channelLastMessageHeight = _ref2.channelLastMessageHeight,
19538
- channelAvatarSize = _ref2.channelAvatarSize,
19539
- channelAvatarTextSize = _ref2.channelAvatarTextSize;
19647
+ var channel = _ref3.channel,
19648
+ theme = _ref3.theme,
19649
+ _ref3$showAvatar = _ref3.showAvatar,
19650
+ showAvatar = _ref3$showAvatar === void 0 ? true : _ref3$showAvatar,
19651
+ avatarBorderRadius = _ref3.avatarBorderRadius,
19652
+ notificationsIsMutedIcon = _ref3.notificationsIsMutedIcon,
19653
+ notificationsIsMutedIconColor = _ref3.notificationsIsMutedIconColor,
19654
+ pinedIcon = _ref3.pinedIcon,
19655
+ selectedChannelLeftBorder = _ref3.selectedChannelLeftBorder,
19656
+ selectedChannelBackground = _ref3.selectedChannelBackground,
19657
+ contactsMap = _ref3.contactsMap,
19658
+ selectedChannelBorderRadius = _ref3.selectedChannelBorderRadius,
19659
+ selectedChannelPaddings = _ref3.selectedChannelPaddings,
19660
+ channelsPaddings = _ref3.channelsPaddings,
19661
+ channelsMargin = _ref3.channelsMargin,
19662
+ channelHoverBackground = _ref3.channelHoverBackground,
19663
+ channelSubjectFontSize = _ref3.channelSubjectFontSize,
19664
+ channelSubjectLineHeight = _ref3.channelSubjectLineHeight,
19665
+ channelSubjectColor = _ref3.channelSubjectColor,
19666
+ channelLastMessageFontSize = _ref3.channelLastMessageFontSize,
19667
+ channelLastMessageTimeFontSize = _ref3.channelLastMessageTimeFontSize,
19668
+ channelLastMessageHeight = _ref3.channelLastMessageHeight,
19669
+ channelAvatarSize = _ref3.channelAvatarSize,
19670
+ channelAvatarTextSize = _ref3.channelAvatarTextSize;
19540
19671
  var _useColor = useColors(),
19541
19672
  accentColor = _useColor[THEME_COLORS.ACCENT],
19542
19673
  textPrimary = _useColor[THEME_COLORS.TEXT_PRIMARY],
@@ -19788,9 +19919,9 @@ var Container$2 = styled.div(_templateObject6$1 || (_templateObject6$1 = _tagged
19788
19919
  return props.channelsMargin || '0 8px';
19789
19920
  }, function (props) {
19790
19921
  return props.selectedChannelBorderRadius || '12px';
19791
- }, function (_ref3) {
19792
- var selectedChannel = _ref3.selectedChannel,
19793
- hoverBackground = _ref3.hoverBackground;
19922
+ }, function (_ref4) {
19923
+ var selectedChannel = _ref4.selectedChannel,
19924
+ hoverBackground = _ref4.hoverBackground;
19794
19925
  return !selectedChannel && "\n background-color: " + hoverBackground + ";\n ";
19795
19926
  }, UserStatus, function (props) {
19796
19927
  return props.selectedChannel ? props.selectedBackgroundColor : props.hoverBackground;
@@ -19805,9 +19936,9 @@ var DraftMessageText = styled.span(_templateObject8$1 || (_templateObject8$1 = _
19805
19936
  });
19806
19937
  var LastMessageAuthor = styled.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) {
19807
19938
  return props.color;
19808
- }, function (_ref4) {
19809
- var typing = _ref4.typing,
19810
- recording = _ref4.recording;
19939
+ }, function (_ref5) {
19940
+ var typing = _ref5.typing,
19941
+ recording = _ref5.recording;
19811
19942
  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 ";
19812
19943
  });
19813
19944
  var Points = styled.span(_templateObject0$1 || (_templateObject0$1 = _taggedTemplateLiteralLoose(["\n margin-right: 4px;\n color: ", ";\n font-style: normal;\n"])), function (props) {
@@ -19824,7 +19955,7 @@ var LastMessageText = styled.span(_templateObject1$1 || (_templateObject1$1 = _t
19824
19955
  }, function (props) {
19825
19956
  return props.color;
19826
19957
  });
19827
- var LastMessageDescription = styled.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"])));
19958
+ var LastMessageDescription = styled.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"])));
19828
19959
  var ChannelStatus = styled.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) {
19829
19960
  return props.color;
19830
19961
  });
@@ -30766,8 +30897,7 @@ var CreateMessageDateDivider = function CreateMessageDateDivider(_ref) {
30766
30897
  };
30767
30898
  var MessageList = function MessageList(_ref2) {
30768
30899
  var _channel$lastMessage, _channel$lastMessage3, _scrollRef$current;
30769
- var messages = _ref2.messages,
30770
- fontFamily = _ref2.fontFamily,
30900
+ var fontFamily = _ref2.fontFamily,
30771
30901
  _ref2$ownMessageOnRig = _ref2.ownMessageOnRightSide,
30772
30902
  ownMessageOnRightSide = _ref2$ownMessageOnRig === void 0 ? true : _ref2$ownMessageOnRig,
30773
30903
  messageWidthPercent = _ref2.messageWidthPercent,
@@ -30940,6 +31070,7 @@ var MessageList = function MessageList(_ref2) {
30940
31070
  var messagesLoading = useSelector(messagesLoadingState);
30941
31071
  var draggingSelector = useSelector(isDraggingSelector, shallowEqual);
30942
31072
  var showScrollToNewMessageButton = useSelector(showScrollToNewMessageButtonSelector, shallowEqual);
31073
+ var messages = useSelector(activeChannelMessagesSelector, shallowEqual) || [];
30943
31074
  var _useState = useState(''),
30944
31075
  unreadMessageId = _useState[0],
30945
31076
  setUnreadMessageId = _useState[1];
@@ -31026,14 +31157,14 @@ var MessageList = function MessageList(_ref2) {
31026
31157
  if (target.scrollTop === 0 && scrollToNewMessage.scrollToBottom && scrollToNewMessage.updateMessageList && messagesLoading !== LOADING_STATE.LOADING) {
31027
31158
  dispatch(getMessagesAC(channel, true));
31028
31159
  }
31160
+ if (target.scrollTop <= -50) {
31161
+ dispatch(showScrollToNewMessageButtonAC(true));
31162
+ } else {
31163
+ dispatch(showScrollToNewMessageButtonAC(false));
31164
+ }
31029
31165
  if (scrollToReply) {
31030
31166
  target.scrollTop = scrollToReply;
31031
31167
  } else {
31032
- if (target.scrollTop <= -50) {
31033
- dispatch(showScrollToNewMessageButtonAC(true));
31034
- } else {
31035
- dispatch(showScrollToNewMessageButtonAC(false));
31036
- }
31037
31168
  if (messagesIndexMap[lastVisibleMessageId] < 15 || forceLoadPrevMessages) {
31038
31169
  if (connectionStatus === CONNECTION_STATUS.CONNECTED && !scrollToNewMessage.scrollToBottom && hasPrevMessages) {
31039
31170
  if (messagesLoading === LOADING_STATE.LOADING || loading || prevDisable) {
@@ -31083,7 +31214,10 @@ var MessageList = function MessageList(_ref2) {
31083
31214
  }) >= 10) {
31084
31215
  var repliedMessage = document.getElementById(messageId);
31085
31216
  if (repliedMessage) {
31086
- scrollRef.current.scrollTop = repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2;
31217
+ scrollRef.current.scrollTo({
31218
+ top: repliedMessage.offsetTop - scrollRef.current.offsetHeight / 2,
31219
+ behavior: 'smooth'
31220
+ });
31087
31221
  repliedMessage.classList.add('highlight');
31088
31222
  setTimeout(function () {
31089
31223
  repliedMessage.classList.remove('highlight');
@@ -31216,7 +31350,10 @@ var MessageList = function MessageList(_ref2) {
31216
31350
  var repliedMessage = document.getElementById(scrollToRepliedMessage);
31217
31351
  if (repliedMessage) {
31218
31352
  setScrollToReply(repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200));
31219
- scrollRef.current.scrollTop = repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200);
31353
+ scrollRef.current.scrollTo({
31354
+ top: repliedMessage && repliedMessage.offsetTop - (channel.backToLinkedChannel ? 0 : 200),
31355
+ behavior: 'smooth'
31356
+ });
31220
31357
  scrollRef.current.style.scrollBehavior = 'smooth';
31221
31358
  if (!channel.backToLinkedChannel) {
31222
31359
  repliedMessage && repliedMessage.classList.add('highlight');
@@ -31238,12 +31375,18 @@ var MessageList = function MessageList(_ref2) {
31238
31375
  if (scrollToNewMessage.scrollToBottom) {
31239
31376
  if (scrollToNewMessage.isIncomingMessage) {
31240
31377
  if (scrollRef.current.scrollTop > -100) {
31241
- scrollRef.current.scrollTop = 0;
31378
+ scrollRef.current.scrollTo({
31379
+ top: 0,
31380
+ behavior: 'smooth'
31381
+ });
31242
31382
  }
31243
31383
  } else {
31244
31384
  nextDisable = true;
31245
31385
  prevDisable = true;
31246
- scrollRef.current.scrollTop = 0;
31386
+ scrollRef.current.scrollTo({
31387
+ top: 0,
31388
+ behavior: 'smooth'
31389
+ });
31247
31390
  dispatch(showScrollToNewMessageButtonAC(false));
31248
31391
  setTimeout(function () {
31249
31392
  prevDisable = false;
@@ -31890,9 +32033,7 @@ var MessagesContainer = function MessagesContainer(_ref) {
31890
32033
  _ref$hiddenMessagesPr = _ref.hiddenMessagesProperties,
31891
32034
  hiddenMessagesProperties = _ref$hiddenMessagesPr === void 0 ? [] : _ref$hiddenMessagesPr,
31892
32035
  shouldOpenUserProfileForMention = _ref.shouldOpenUserProfileForMention;
31893
- var messages = useSelector(activeChannelMessagesSelector) || [];
31894
32036
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(MessageList, {
31895
- messages: messages,
31896
32037
  fontFamily: fontFamily,
31897
32038
  ownMessageOnRightSide: ownMessageOnRightSide,
31898
32039
  messageWidthPercent: messageWidthPercent,
@@ -38845,7 +38986,10 @@ var MessagesScrollToBottomButton = function MessagesScrollToBottomButton(_ref) {
38845
38986
  if (repliedMessage) {
38846
38987
  var scrollRef = document.getElementById('scrollableDiv');
38847
38988
  if (scrollRef) {
38848
- scrollRef.scrollTop = repliedMessage.offsetTop;
38989
+ scrollRef.scrollTo({
38990
+ top: repliedMessage.offsetTop - scrollRef.offsetHeight / 2,
38991
+ behavior: 'smooth'
38992
+ });
38849
38993
  }
38850
38994
  }
38851
38995
  } else {