sceyt-chat-react-uikit 1.8.0-beta.5 → 1.8.0-beta.7

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.
Files changed (3) hide show
  1. package/index.js +299 -76
  2. package/index.modern.js +299 -76
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -15,6 +15,8 @@ var LinkifyIt = _interopDefault(require('linkify-it'));
15
15
  var Cropper = _interopDefault(require('react-easy-crop'));
16
16
  var Carousel = _interopDefault(require('react-elastic-carousel'));
17
17
  var reactCircularProgressbar = require('react-circular-progressbar');
18
+ var ffmpeg = require('@ffmpeg/ffmpeg');
19
+ var util = require('@ffmpeg/util');
18
20
  var lexical = require('lexical');
19
21
  var LexicalComposerContext = require('@lexical/react/LexicalComposerContext');
20
22
  var LexicalComposer = require('@lexical/react/LexicalComposer');
@@ -34115,9 +34117,170 @@ var Bar = styled__default.div(_templateObject2$q || (_templateObject2$q = _tagge
34115
34117
  return props.progressColor;
34116
34118
  });
34117
34119
 
34120
+ var ffmpegInstance = null;
34121
+ var isFFmpegLoading = false;
34122
+ var ffmpegLoadPromise = null;
34123
+ var isSafari = function isSafari() {
34124
+ if (typeof window === 'undefined' || !window.navigator) {
34125
+ return false;
34126
+ }
34127
+ var userAgent = window.navigator.userAgent;
34128
+ return /^((?!chrome|android).)*safari/i.test(userAgent);
34129
+ };
34130
+ var initFFmpeg = function initFFmpeg() {
34131
+ try {
34132
+ if (ffmpegInstance) {
34133
+ return Promise.resolve(ffmpegInstance);
34134
+ }
34135
+ if (isFFmpegLoading && ffmpegLoadPromise) {
34136
+ return Promise.resolve(ffmpegLoadPromise.then(function () {
34137
+ if (!ffmpegInstance) {
34138
+ throw new Error('FFmpeg failed to initialize');
34139
+ }
34140
+ return ffmpegInstance;
34141
+ }));
34142
+ }
34143
+ isFFmpegLoading = true;
34144
+ ffmpegLoadPromise = function () {
34145
+ try {
34146
+ return Promise.resolve(_catch(function () {
34147
+ var ffmpeg$1 = new ffmpeg.FFmpeg();
34148
+ var baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd';
34149
+ var _load = ffmpeg$1.load;
34150
+ return Promise.resolve(util.toBlobURL(baseURL + "/ffmpeg-core.js", 'text/javascript')).then(function (_toBlobURL) {
34151
+ return Promise.resolve(util.toBlobURL(baseURL + "/ffmpeg-core.wasm", 'application/wasm')).then(function (_toBlobURL2) {
34152
+ return Promise.resolve(_load.call(ffmpeg$1, {
34153
+ coreURL: _toBlobURL,
34154
+ wasmURL: _toBlobURL2
34155
+ })).then(function () {
34156
+ ffmpegInstance = ffmpeg$1;
34157
+ isFFmpegLoading = false;
34158
+ });
34159
+ });
34160
+ });
34161
+ }, function (error) {
34162
+ isFFmpegLoading = false;
34163
+ ffmpegLoadPromise = null;
34164
+ ffmpegInstance = null;
34165
+ log.error('Failed to load FFmpeg:', error);
34166
+ throw error;
34167
+ }));
34168
+ } catch (e) {
34169
+ return Promise.reject(e);
34170
+ }
34171
+ }();
34172
+ return Promise.resolve(ffmpegLoadPromise).then(function () {
34173
+ if (!ffmpegInstance) {
34174
+ throw new Error('FFmpeg instance is null after initialization');
34175
+ }
34176
+ return ffmpegInstance;
34177
+ });
34178
+ } catch (e) {
34179
+ return Promise.reject(e);
34180
+ }
34181
+ };
34182
+ var convertMp3ToAac = function convertMp3ToAac(file, messageId) {
34183
+ try {
34184
+ return Promise.resolve(_catch(function () {
34185
+ var maxSize = 50 * 1024 * 1024;
34186
+ if (file.size > maxSize) {
34187
+ throw new Error("File size (" + (file.size / 1024 / 1024).toFixed(2) + "MB) exceeds maximum allowed size (50MB)");
34188
+ }
34189
+ if (file.size === 0) {
34190
+ throw new Error('File is empty');
34191
+ }
34192
+ return Promise.resolve(initFFmpeg()).then(function (ffmpeg) {
34193
+ function _temp8() {
34194
+ function _temp6() {
34195
+ return Promise.resolve(util.fetchFile(file)).then(function (inputData) {
34196
+ return Promise.resolve(ffmpeg.writeFile(messageId + "_input.mp3", inputData)).then(function () {
34197
+ return Promise.resolve(ffmpeg.exec(['-i', messageId + "_input.mp3", '-c:a', 'aac', '-b:a', '128k', '-movflags', '+faststart', messageId + "_output.m4a"])).then(function () {
34198
+ return Promise.resolve(ffmpeg.readFile(messageId + "_output.m4a")).then(function (data) {
34199
+ function _temp4() {
34200
+ function _temp2() {
34201
+ var dataArray;
34202
+ if (data instanceof Uint8Array) {
34203
+ dataArray = data;
34204
+ } else if (typeof data === 'string') {
34205
+ var binaryString = atob(data);
34206
+ var bytes = new Uint8Array(binaryString.length);
34207
+ for (var i = 0; i < binaryString.length; i++) {
34208
+ bytes[i] = binaryString.charCodeAt(i);
34209
+ }
34210
+ dataArray = bytes;
34211
+ } else {
34212
+ dataArray = new Uint8Array(data);
34213
+ }
34214
+ var arrayBuffer = dataArray.buffer.slice(dataArray.byteOffset, dataArray.byteOffset + dataArray.byteLength);
34215
+ var blob = new Blob([arrayBuffer], {
34216
+ type: 'audio/mp4'
34217
+ });
34218
+ var convertedFile = new File([blob], messageId + "_" + file.name.replace('.mp3', '.m4a'), {
34219
+ type: 'audio/mp4',
34220
+ lastModified: file.lastModified
34221
+ });
34222
+ return convertedFile;
34223
+ }
34224
+ var _temp = _catch(function () {
34225
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_output.m4a")).then(function () {});
34226
+ }, function () {});
34227
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
34228
+ }
34229
+ var _temp3 = _catch(function () {
34230
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_input.mp3")).then(function () {});
34231
+ }, function () {});
34232
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
34233
+ });
34234
+ });
34235
+ });
34236
+ });
34237
+ }
34238
+ var _temp5 = _catch(function () {
34239
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_output.m4a")).then(function () {});
34240
+ }, function () {});
34241
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
34242
+ }
34243
+ var _temp7 = _catch(function () {
34244
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_input.mp3")).then(function () {});
34245
+ }, function () {});
34246
+ return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7);
34247
+ });
34248
+ }, function (error) {
34249
+ log.error('Failed to convert MP3 to AAC:', error);
34250
+ throw error;
34251
+ }));
34252
+ } catch (e) {
34253
+ return Promise.reject(e);
34254
+ }
34255
+ };
34256
+ var convertAudioForSafari = function convertAudioForSafari(file, messageId) {
34257
+ try {
34258
+ var _exit = false;
34259
+ var _temp9 = function () {
34260
+ if (isSafari() && file.type === 'audio/mpeg' && file.name.endsWith('.mp3')) {
34261
+ return _catch(function () {
34262
+ return Promise.resolve(convertMp3ToAac(file, messageId)).then(function (_await$convertMp3ToAa) {
34263
+ _exit = true;
34264
+ return _await$convertMp3ToAa;
34265
+ });
34266
+ }, function (error) {
34267
+ log.warn('Audio conversion failed, using original file:', error);
34268
+ _exit = true;
34269
+ return file;
34270
+ });
34271
+ }
34272
+ }();
34273
+ return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(function (_result2) {
34274
+ return _exit ? _result2 : file;
34275
+ }) : _exit ? _temp9 : file);
34276
+ } catch (e) {
34277
+ return Promise.reject(e);
34278
+ }
34279
+ };
34280
+
34118
34281
  var _templateObject$v, _templateObject2$r, _templateObject3$l, _templateObject4$h, _templateObject5$e, _templateObject6$c, _templateObject7$b, _templateObject8$b;
34119
34282
  var AudioPlayer = function AudioPlayer(_ref) {
34120
- var _file$metadata, _file$metadata2, _file$metadata3;
34283
+ var _file$metadata5, _file$metadata6, _file$metadata7;
34121
34284
  var url = _ref.url,
34122
34285
  file = _ref.file,
34123
34286
  messagePlayed = _ref.messagePlayed,
@@ -34168,6 +34331,7 @@ var AudioPlayer = function AudioPlayer(_ref) {
34168
34331
  var wavesurfer = React.useRef(null);
34169
34332
  var wavesurferContainer = React.useRef(null);
34170
34333
  var intervalRef = React.useRef(null);
34334
+ var convertedUrlRef = React.useRef(null);
34171
34335
  var handleSetAudioRate = function handleSetAudioRate() {
34172
34336
  if (wavesurfer.current) {
34173
34337
  if (audioRate === 1) {
@@ -34251,84 +34415,131 @@ var AudioPlayer = function AudioPlayer(_ref) {
34251
34415
  }, [recording.initRecording]);
34252
34416
  React.useEffect(function () {
34253
34417
  if (url) {
34418
+ if (convertedUrlRef.current) {
34419
+ URL.revokeObjectURL(convertedUrlRef.current);
34420
+ convertedUrlRef.current = null;
34421
+ }
34254
34422
  if (url !== '_' && !isRendered && wavesurfer && wavesurfer.current) {
34255
34423
  wavesurfer.current.destroy();
34256
34424
  }
34257
34425
  var initWaveSurfer = function initWaveSurfer() {
34258
34426
  try {
34259
- try {
34260
- wavesurfer.current = WaveSurfer.create({
34261
- container: wavesurferContainer.current,
34262
- waveColor: 'transparent',
34263
- progressColor: 'transparent',
34264
- audioRate: audioRate,
34265
- barWidth: 1,
34266
- barHeight: 1,
34267
- hideScrollbar: true,
34268
- barRadius: 1.5,
34269
- cursorWidth: 0,
34270
- barGap: 2,
34271
- height: 20
34272
- });
34273
- var peaks;
34274
- if (file.metadata) {
34275
- if (file.metadata.dur) {
34276
- setDuration(file.metadata.dur);
34277
- setCurrentTime(formatAudioVideoTime(file.metadata.dur));
34427
+ var _exit = false;
34428
+ return Promise.resolve(_catch(function () {
34429
+ var _file$name;
34430
+ function _temp2(_result2) {
34431
+ if (_exit) return _result2;
34432
+ wavesurfer.current = WaveSurfer.create({
34433
+ container: wavesurferContainer.current,
34434
+ waveColor: 'transparent',
34435
+ progressColor: 'transparent',
34436
+ audioRate: audioRate,
34437
+ barWidth: 1,
34438
+ barHeight: 1,
34439
+ hideScrollbar: true,
34440
+ barRadius: 1.5,
34441
+ cursorWidth: 0,
34442
+ barGap: 2,
34443
+ height: 20
34444
+ });
34445
+ var peaks;
34446
+ if (file.metadata) {
34447
+ if (file.metadata.dur) {
34448
+ setDuration(file.metadata.dur);
34449
+ setCurrentTime(formatAudioVideoTime(file.metadata.dur));
34450
+ }
34451
+ if (file.metadata.tmb) {
34452
+ var maxVal = Array.isArray(file.metadata.tmb) && file.metadata.tmb.length > 0 ? file.metadata.tmb.reduce(function (acc, n) {
34453
+ return n > acc ? n : acc;
34454
+ }, -Infinity) : 0;
34455
+ var dec = maxVal / 100;
34456
+ peaks = file.metadata.tmb.map(function (peak) {
34457
+ return peak / dec / 100;
34458
+ });
34459
+ }
34278
34460
  }
34279
- if (file.metadata.tmb) {
34280
- var maxVal = Array.isArray(file.metadata.tmb) && file.metadata.tmb.length > 0 ? file.metadata.tmb.reduce(function (acc, n) {
34281
- return n > acc ? n : acc;
34282
- }, -Infinity) : 0;
34283
- var dec = maxVal / 100;
34284
- peaks = file.metadata.tmb.map(function (peak) {
34285
- return peak / dec / 100;
34286
- });
34461
+ wavesurfer.current.load(audioUrl, peaks);
34462
+ wavesurfer.current.on('ready', function () {
34463
+ var _file$metadata, _file$metadata2;
34464
+ var audioDuration = wavesurfer.current.getDuration();
34465
+ setDuration((file === null || file === void 0 ? void 0 : (_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : _file$metadata.dur) || audioDuration);
34466
+ setCurrentTime(formatAudioVideoTime((file === null || file === void 0 ? void 0 : (_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.dur) || audioDuration));
34467
+ wavesurfer.current.drawBuffer = function (d) {
34468
+ log.info('filters --- ', d);
34469
+ };
34470
+ });
34471
+ wavesurfer.current.on('finish', function () {
34472
+ var _file$metadata3, _file$metadata4;
34473
+ setPlayAudio(false);
34474
+ wavesurfer.current.seekTo(0);
34475
+ var audioDuration = wavesurfer.current.getDuration();
34476
+ setDuration((file === null || file === void 0 ? void 0 : (_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.dur) || audioDuration);
34477
+ setCurrentTime(formatAudioVideoTime((file === null || file === void 0 ? void 0 : (_file$metadata4 = file.metadata) === null || _file$metadata4 === void 0 ? void 0 : _file$metadata4.dur) || audioDuration));
34478
+ setCurrentTimeSeconds(0);
34479
+ if (playingAudioId === file.id) {
34480
+ dispatch(setPlayingAudioIdAC(null));
34481
+ }
34482
+ clearInterval(intervalRef.current);
34483
+ if (onClose) {
34484
+ onClose();
34485
+ }
34486
+ });
34487
+ wavesurfer.current.on('pause', function () {
34488
+ setPlayAudio(false);
34489
+ if (playingAudioId === file.id) {
34490
+ dispatch(setPlayingAudioIdAC(null));
34491
+ }
34492
+ clearInterval(intervalRef.current);
34493
+ });
34494
+ wavesurfer.current.on('interaction', function () {
34495
+ var currentTime = wavesurfer.current.getCurrentTime();
34496
+ setCurrentTime(formatAudioVideoTime(currentTime));
34497
+ setCurrentTimeSeconds(currentTime);
34498
+ });
34499
+ if (url !== '_') {
34500
+ setIsRendered(true);
34287
34501
  }
34288
34502
  }
34289
- wavesurfer.current.load(url, peaks);
34290
- wavesurfer.current.on('ready', function () {
34291
- var audioDuration = wavesurfer.current.getDuration();
34292
- setDuration(audioDuration);
34293
- setCurrentTime(formatAudioVideoTime(audioDuration));
34294
- wavesurfer.current.drawBuffer = function (d) {
34295
- log.info('filters --- ', d);
34296
- };
34297
- });
34298
- wavesurfer.current.on('finish', function () {
34299
- setPlayAudio(false);
34300
- wavesurfer.current.seekTo(0);
34301
- var audioDuration = wavesurfer.current.getDuration();
34302
- setDuration(audioDuration);
34303
- setCurrentTime(formatAudioVideoTime(audioDuration));
34304
- setCurrentTimeSeconds(0);
34305
- if (playingAudioId === file.id) {
34306
- dispatch(setPlayingAudioIdAC(null));
34307
- }
34308
- clearInterval(intervalRef.current);
34309
- if (onClose) {
34310
- onClose();
34311
- }
34312
- });
34313
- wavesurfer.current.on('pause', function () {
34314
- setPlayAudio(false);
34315
- if (playingAudioId === file.id) {
34316
- dispatch(setPlayingAudioIdAC(null));
34503
+ var audioUrl = url;
34504
+ var needsConversion = isSafari() && url && url !== '_' && (url.endsWith('.mp3') || ((_file$name = file.name) === null || _file$name === void 0 ? void 0 : _file$name.endsWith('.mp3')) || file.type === 'audio/mpeg');
34505
+ var _temp = function () {
34506
+ if (needsConversion) {
34507
+ return _catch(function () {
34508
+ if (convertedUrlRef.current) {
34509
+ URL.revokeObjectURL(convertedUrlRef.current);
34510
+ convertedUrlRef.current = null;
34511
+ }
34512
+ var cacheKey = file.id || url;
34513
+ return Promise.resolve(fetch(url, {
34514
+ cache: 'no-store'
34515
+ })).then(function (response) {
34516
+ if (!response.ok) {
34517
+ throw new Error("Failed to fetch audio: " + response.statusText);
34518
+ }
34519
+ return Promise.resolve(response.blob()).then(function (blob) {
34520
+ var uniqueFileName = (file.id || Date.now()) + "_" + (file.name || 'audio.mp3');
34521
+ var audioFile = new File([blob], uniqueFileName, {
34522
+ type: blob.type || 'audio/mpeg',
34523
+ lastModified: Date.now()
34524
+ });
34525
+ return Promise.resolve(convertAudioForSafari(audioFile, file === null || file === void 0 ? void 0 : file.messageId)).then(function (convertedFile) {
34526
+ var convertedBlobUrl = URL.createObjectURL(convertedFile);
34527
+ audioUrl = convertedBlobUrl;
34528
+ convertedUrlRef.current = convertedBlobUrl;
34529
+ log.info("Converted audio for Safari: " + cacheKey + " -> " + convertedBlobUrl);
34530
+ });
34531
+ });
34532
+ });
34533
+ }, function (conversionError) {
34534
+ log.warn('Failed to convert audio for Safari, using original:', conversionError);
34535
+ audioUrl = url;
34536
+ });
34317
34537
  }
34318
- clearInterval(intervalRef.current);
34319
- });
34320
- wavesurfer.current.on('interaction', function () {
34321
- var currentTime = wavesurfer.current.getCurrentTime();
34322
- setCurrentTime(formatAudioVideoTime(currentTime));
34323
- setCurrentTimeSeconds(currentTime);
34324
- });
34325
- if (url !== '_') {
34326
- setIsRendered(true);
34327
- }
34328
- } catch (e) {
34538
+ }();
34539
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
34540
+ }, function (e) {
34329
34541
  log.error('Failed to init wavesurfer', e);
34330
- }
34331
- return Promise.resolve();
34542
+ }));
34332
34543
  } catch (e) {
34333
34544
  return Promise.reject(e);
34334
34545
  }
@@ -34337,8 +34548,16 @@ var AudioPlayer = function AudioPlayer(_ref) {
34337
34548
  }
34338
34549
  return function () {
34339
34550
  clearInterval(intervalRef.current);
34551
+ if (convertedUrlRef.current) {
34552
+ URL.revokeObjectURL(convertedUrlRef.current);
34553
+ convertedUrlRef.current = null;
34554
+ }
34555
+ if (wavesurfer.current) {
34556
+ wavesurfer.current.destroy();
34557
+ wavesurfer.current = null;
34558
+ }
34340
34559
  };
34341
- }, [url]);
34560
+ }, [url, file.id]);
34342
34561
  React.useEffect(function () {
34343
34562
  if (playAudio && playingAudioId && playingAudioId !== "player_" + file.id && wavesurfer.current) {
34344
34563
  setPlayAudio(false);
@@ -34356,8 +34575,8 @@ var AudioPlayer = function AudioPlayer(_ref) {
34356
34575
  iconColor: accentColor
34357
34576
  }))), /*#__PURE__*/React__default.createElement(WaveContainer, null, /*#__PURE__*/React__default.createElement(VisualizationWrapper, null, /*#__PURE__*/React__default.createElement(AudioVisualizationPlaceholder, {
34358
34577
  ref: wavesurferContainer,
34359
- hidden: !!((_file$metadata = file.metadata) !== null && _file$metadata !== void 0 && _file$metadata.tmb && Array.isArray(file.metadata.tmb))
34360
- }), ((_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.tmb) && Array.isArray(file.metadata.tmb) && (/*#__PURE__*/React__default.createElement(AudioVisualization, {
34578
+ hidden: !!((_file$metadata5 = file.metadata) !== null && _file$metadata5 !== void 0 && _file$metadata5.tmb && Array.isArray(file.metadata.tmb))
34579
+ }), ((_file$metadata6 = file.metadata) === null || _file$metadata6 === void 0 ? void 0 : _file$metadata6.tmb) && Array.isArray(file.metadata.tmb) && (/*#__PURE__*/React__default.createElement(AudioVisualization, {
34361
34580
  tmb: file.metadata.tmb,
34362
34581
  duration: duration || file.metadata.dur || 0,
34363
34582
  currentTime: currentTimeSeconds,
@@ -34373,7 +34592,7 @@ var AudioPlayer = function AudioPlayer(_ref) {
34373
34592
  backgroundColor: backgroundSections
34374
34593
  }, audioRate, /*#__PURE__*/React__default.createElement("span", null, "X"))), /*#__PURE__*/React__default.createElement(Timer$1, {
34375
34594
  color: textSecondary
34376
- }, currentTime || formatAudioVideoTime(((_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.dur) || 0)));
34595
+ }, currentTime || formatAudioVideoTime(((_file$metadata7 = file.metadata) === null || _file$metadata7 === void 0 ? void 0 : _file$metadata7.dur) || 0)));
34377
34596
  };
34378
34597
  var Container$f = styled__default.div(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["\n position: relative;\n display: flex;\n align-items: flex-start;\n width: 230px;\n padding: 8px 12px;\n ", "\n ", "\n"])), function (props) {
34379
34598
  return props.backgroundColor && "background-color: " + props.backgroundColor + ";";
@@ -35260,7 +35479,11 @@ var Attachment = function Attachment(_ref) {
35260
35479
  channelId: channelId,
35261
35480
  incoming: incoming,
35262
35481
  viewOnce: viewOnce,
35263
- setViewOnceVoiceModalOpen: viewOnce ? setViewOnceVoiceModalOpen : undefined
35482
+ setViewOnceVoiceModalOpen: viewOnce ? function () {
35483
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
35484
+ setViewOnceVoiceModalOpen(true);
35485
+ }
35486
+ } : undefined
35264
35487
  })) : attachment.type === attachmentTypes.link ? null : (
35265
35488
  /*#__PURE__*/
35266
35489
  React__default.createElement(AttachmentFile$1, {
@@ -45421,7 +45644,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
45421
45644
  if (activeChannel.id) {
45422
45645
  prevActiveChannelId = activeChannel.id;
45423
45646
  }
45424
- if (activeChannel.id && membersHasNext === undefined) {
45647
+ if (activeChannel.id && membersHasNext === undefined && !(activeChannel.type === DEFAULT_CHANNEL_TYPE.DIRECT && activeChannel.memberCount === 2)) {
45425
45648
  dispatch(getMembersAC(activeChannel.id));
45426
45649
  }
45427
45650
  setMentionedUsers([]);
@@ -49054,7 +49277,7 @@ var Members = function Members(_ref) {
49054
49277
  if (getFromContacts) {
49055
49278
  dispatch(getContactsAC());
49056
49279
  }
49057
- if (channel !== null && channel !== void 0 && channel.id) {
49280
+ if (channel !== null && channel !== void 0 && channel.id && !(channel.type === DEFAULT_CHANNEL_TYPE.DIRECT && channel.memberCount === 2)) {
49058
49281
  dispatch(getMembersAC(channel.id));
49059
49282
  }
49060
49283
  }
package/index.modern.js CHANGED
@@ -10,6 +10,8 @@ import LinkifyIt from 'linkify-it';
10
10
  import Cropper from 'react-easy-crop';
11
11
  import Carousel from 'react-elastic-carousel';
12
12
  import { CircularProgressbar } from 'react-circular-progressbar';
13
+ import { FFmpeg } from '@ffmpeg/ffmpeg';
14
+ import { fetchFile, toBlobURL } from '@ffmpeg/util';
13
15
  import { $applyNodeReplacement, TextNode, $createTextNode, $getSelection, $isRangeSelection, $isTextNode, FORMAT_TEXT_COMMAND, SELECTION_CHANGE_COMMAND, COMMAND_PRIORITY_LOW, $getRoot, $createParagraphNode, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND, PASTE_COMMAND, COMMAND_PRIORITY_NORMAL } from 'lexical';
14
16
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
15
17
  import { LexicalComposer } from '@lexical/react/LexicalComposer';
@@ -34114,9 +34116,170 @@ var Bar = styled.div(_templateObject2$q || (_templateObject2$q = _taggedTemplate
34114
34116
  return props.progressColor;
34115
34117
  });
34116
34118
 
34119
+ var ffmpegInstance = null;
34120
+ var isFFmpegLoading = false;
34121
+ var ffmpegLoadPromise = null;
34122
+ var isSafari = function isSafari() {
34123
+ if (typeof window === 'undefined' || !window.navigator) {
34124
+ return false;
34125
+ }
34126
+ var userAgent = window.navigator.userAgent;
34127
+ return /^((?!chrome|android).)*safari/i.test(userAgent);
34128
+ };
34129
+ var initFFmpeg = function initFFmpeg() {
34130
+ try {
34131
+ if (ffmpegInstance) {
34132
+ return Promise.resolve(ffmpegInstance);
34133
+ }
34134
+ if (isFFmpegLoading && ffmpegLoadPromise) {
34135
+ return Promise.resolve(ffmpegLoadPromise.then(function () {
34136
+ if (!ffmpegInstance) {
34137
+ throw new Error('FFmpeg failed to initialize');
34138
+ }
34139
+ return ffmpegInstance;
34140
+ }));
34141
+ }
34142
+ isFFmpegLoading = true;
34143
+ ffmpegLoadPromise = function () {
34144
+ try {
34145
+ return Promise.resolve(_catch(function () {
34146
+ var ffmpeg = new FFmpeg();
34147
+ var baseURL = 'https://unpkg.com/@ffmpeg/core@0.12.6/dist/umd';
34148
+ var _load = ffmpeg.load;
34149
+ return Promise.resolve(toBlobURL(baseURL + "/ffmpeg-core.js", 'text/javascript')).then(function (_toBlobURL) {
34150
+ return Promise.resolve(toBlobURL(baseURL + "/ffmpeg-core.wasm", 'application/wasm')).then(function (_toBlobURL2) {
34151
+ return Promise.resolve(_load.call(ffmpeg, {
34152
+ coreURL: _toBlobURL,
34153
+ wasmURL: _toBlobURL2
34154
+ })).then(function () {
34155
+ ffmpegInstance = ffmpeg;
34156
+ isFFmpegLoading = false;
34157
+ });
34158
+ });
34159
+ });
34160
+ }, function (error) {
34161
+ isFFmpegLoading = false;
34162
+ ffmpegLoadPromise = null;
34163
+ ffmpegInstance = null;
34164
+ log.error('Failed to load FFmpeg:', error);
34165
+ throw error;
34166
+ }));
34167
+ } catch (e) {
34168
+ return Promise.reject(e);
34169
+ }
34170
+ }();
34171
+ return Promise.resolve(ffmpegLoadPromise).then(function () {
34172
+ if (!ffmpegInstance) {
34173
+ throw new Error('FFmpeg instance is null after initialization');
34174
+ }
34175
+ return ffmpegInstance;
34176
+ });
34177
+ } catch (e) {
34178
+ return Promise.reject(e);
34179
+ }
34180
+ };
34181
+ var convertMp3ToAac = function convertMp3ToAac(file, messageId) {
34182
+ try {
34183
+ return Promise.resolve(_catch(function () {
34184
+ var maxSize = 50 * 1024 * 1024;
34185
+ if (file.size > maxSize) {
34186
+ throw new Error("File size (" + (file.size / 1024 / 1024).toFixed(2) + "MB) exceeds maximum allowed size (50MB)");
34187
+ }
34188
+ if (file.size === 0) {
34189
+ throw new Error('File is empty');
34190
+ }
34191
+ return Promise.resolve(initFFmpeg()).then(function (ffmpeg) {
34192
+ function _temp8() {
34193
+ function _temp6() {
34194
+ return Promise.resolve(fetchFile(file)).then(function (inputData) {
34195
+ return Promise.resolve(ffmpeg.writeFile(messageId + "_input.mp3", inputData)).then(function () {
34196
+ return Promise.resolve(ffmpeg.exec(['-i', messageId + "_input.mp3", '-c:a', 'aac', '-b:a', '128k', '-movflags', '+faststart', messageId + "_output.m4a"])).then(function () {
34197
+ return Promise.resolve(ffmpeg.readFile(messageId + "_output.m4a")).then(function (data) {
34198
+ function _temp4() {
34199
+ function _temp2() {
34200
+ var dataArray;
34201
+ if (data instanceof Uint8Array) {
34202
+ dataArray = data;
34203
+ } else if (typeof data === 'string') {
34204
+ var binaryString = atob(data);
34205
+ var bytes = new Uint8Array(binaryString.length);
34206
+ for (var i = 0; i < binaryString.length; i++) {
34207
+ bytes[i] = binaryString.charCodeAt(i);
34208
+ }
34209
+ dataArray = bytes;
34210
+ } else {
34211
+ dataArray = new Uint8Array(data);
34212
+ }
34213
+ var arrayBuffer = dataArray.buffer.slice(dataArray.byteOffset, dataArray.byteOffset + dataArray.byteLength);
34214
+ var blob = new Blob([arrayBuffer], {
34215
+ type: 'audio/mp4'
34216
+ });
34217
+ var convertedFile = new File([blob], messageId + "_" + file.name.replace('.mp3', '.m4a'), {
34218
+ type: 'audio/mp4',
34219
+ lastModified: file.lastModified
34220
+ });
34221
+ return convertedFile;
34222
+ }
34223
+ var _temp = _catch(function () {
34224
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_output.m4a")).then(function () {});
34225
+ }, function () {});
34226
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
34227
+ }
34228
+ var _temp3 = _catch(function () {
34229
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_input.mp3")).then(function () {});
34230
+ }, function () {});
34231
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
34232
+ });
34233
+ });
34234
+ });
34235
+ });
34236
+ }
34237
+ var _temp5 = _catch(function () {
34238
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_output.m4a")).then(function () {});
34239
+ }, function () {});
34240
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
34241
+ }
34242
+ var _temp7 = _catch(function () {
34243
+ return Promise.resolve(ffmpeg.deleteFile(messageId + "_input.mp3")).then(function () {});
34244
+ }, function () {});
34245
+ return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7);
34246
+ });
34247
+ }, function (error) {
34248
+ log.error('Failed to convert MP3 to AAC:', error);
34249
+ throw error;
34250
+ }));
34251
+ } catch (e) {
34252
+ return Promise.reject(e);
34253
+ }
34254
+ };
34255
+ var convertAudioForSafari = function convertAudioForSafari(file, messageId) {
34256
+ try {
34257
+ var _exit = false;
34258
+ var _temp9 = function () {
34259
+ if (isSafari() && file.type === 'audio/mpeg' && file.name.endsWith('.mp3')) {
34260
+ return _catch(function () {
34261
+ return Promise.resolve(convertMp3ToAac(file, messageId)).then(function (_await$convertMp3ToAa) {
34262
+ _exit = true;
34263
+ return _await$convertMp3ToAa;
34264
+ });
34265
+ }, function (error) {
34266
+ log.warn('Audio conversion failed, using original file:', error);
34267
+ _exit = true;
34268
+ return file;
34269
+ });
34270
+ }
34271
+ }();
34272
+ return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(function (_result2) {
34273
+ return _exit ? _result2 : file;
34274
+ }) : _exit ? _temp9 : file);
34275
+ } catch (e) {
34276
+ return Promise.reject(e);
34277
+ }
34278
+ };
34279
+
34117
34280
  var _templateObject$v, _templateObject2$r, _templateObject3$l, _templateObject4$h, _templateObject5$e, _templateObject6$c, _templateObject7$b, _templateObject8$b;
34118
34281
  var AudioPlayer = function AudioPlayer(_ref) {
34119
- var _file$metadata, _file$metadata2, _file$metadata3;
34282
+ var _file$metadata5, _file$metadata6, _file$metadata7;
34120
34283
  var url = _ref.url,
34121
34284
  file = _ref.file,
34122
34285
  messagePlayed = _ref.messagePlayed,
@@ -34167,6 +34330,7 @@ var AudioPlayer = function AudioPlayer(_ref) {
34167
34330
  var wavesurfer = useRef(null);
34168
34331
  var wavesurferContainer = useRef(null);
34169
34332
  var intervalRef = useRef(null);
34333
+ var convertedUrlRef = useRef(null);
34170
34334
  var handleSetAudioRate = function handleSetAudioRate() {
34171
34335
  if (wavesurfer.current) {
34172
34336
  if (audioRate === 1) {
@@ -34250,84 +34414,131 @@ var AudioPlayer = function AudioPlayer(_ref) {
34250
34414
  }, [recording.initRecording]);
34251
34415
  useEffect(function () {
34252
34416
  if (url) {
34417
+ if (convertedUrlRef.current) {
34418
+ URL.revokeObjectURL(convertedUrlRef.current);
34419
+ convertedUrlRef.current = null;
34420
+ }
34253
34421
  if (url !== '_' && !isRendered && wavesurfer && wavesurfer.current) {
34254
34422
  wavesurfer.current.destroy();
34255
34423
  }
34256
34424
  var initWaveSurfer = function initWaveSurfer() {
34257
34425
  try {
34258
- try {
34259
- wavesurfer.current = WaveSurfer.create({
34260
- container: wavesurferContainer.current,
34261
- waveColor: 'transparent',
34262
- progressColor: 'transparent',
34263
- audioRate: audioRate,
34264
- barWidth: 1,
34265
- barHeight: 1,
34266
- hideScrollbar: true,
34267
- barRadius: 1.5,
34268
- cursorWidth: 0,
34269
- barGap: 2,
34270
- height: 20
34271
- });
34272
- var peaks;
34273
- if (file.metadata) {
34274
- if (file.metadata.dur) {
34275
- setDuration(file.metadata.dur);
34276
- setCurrentTime(formatAudioVideoTime(file.metadata.dur));
34426
+ var _exit = false;
34427
+ return Promise.resolve(_catch(function () {
34428
+ var _file$name;
34429
+ function _temp2(_result2) {
34430
+ if (_exit) return _result2;
34431
+ wavesurfer.current = WaveSurfer.create({
34432
+ container: wavesurferContainer.current,
34433
+ waveColor: 'transparent',
34434
+ progressColor: 'transparent',
34435
+ audioRate: audioRate,
34436
+ barWidth: 1,
34437
+ barHeight: 1,
34438
+ hideScrollbar: true,
34439
+ barRadius: 1.5,
34440
+ cursorWidth: 0,
34441
+ barGap: 2,
34442
+ height: 20
34443
+ });
34444
+ var peaks;
34445
+ if (file.metadata) {
34446
+ if (file.metadata.dur) {
34447
+ setDuration(file.metadata.dur);
34448
+ setCurrentTime(formatAudioVideoTime(file.metadata.dur));
34449
+ }
34450
+ if (file.metadata.tmb) {
34451
+ var maxVal = Array.isArray(file.metadata.tmb) && file.metadata.tmb.length > 0 ? file.metadata.tmb.reduce(function (acc, n) {
34452
+ return n > acc ? n : acc;
34453
+ }, -Infinity) : 0;
34454
+ var dec = maxVal / 100;
34455
+ peaks = file.metadata.tmb.map(function (peak) {
34456
+ return peak / dec / 100;
34457
+ });
34458
+ }
34277
34459
  }
34278
- if (file.metadata.tmb) {
34279
- var maxVal = Array.isArray(file.metadata.tmb) && file.metadata.tmb.length > 0 ? file.metadata.tmb.reduce(function (acc, n) {
34280
- return n > acc ? n : acc;
34281
- }, -Infinity) : 0;
34282
- var dec = maxVal / 100;
34283
- peaks = file.metadata.tmb.map(function (peak) {
34284
- return peak / dec / 100;
34285
- });
34460
+ wavesurfer.current.load(audioUrl, peaks);
34461
+ wavesurfer.current.on('ready', function () {
34462
+ var _file$metadata, _file$metadata2;
34463
+ var audioDuration = wavesurfer.current.getDuration();
34464
+ setDuration((file === null || file === void 0 ? void 0 : (_file$metadata = file.metadata) === null || _file$metadata === void 0 ? void 0 : _file$metadata.dur) || audioDuration);
34465
+ setCurrentTime(formatAudioVideoTime((file === null || file === void 0 ? void 0 : (_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.dur) || audioDuration));
34466
+ wavesurfer.current.drawBuffer = function (d) {
34467
+ log.info('filters --- ', d);
34468
+ };
34469
+ });
34470
+ wavesurfer.current.on('finish', function () {
34471
+ var _file$metadata3, _file$metadata4;
34472
+ setPlayAudio(false);
34473
+ wavesurfer.current.seekTo(0);
34474
+ var audioDuration = wavesurfer.current.getDuration();
34475
+ setDuration((file === null || file === void 0 ? void 0 : (_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.dur) || audioDuration);
34476
+ setCurrentTime(formatAudioVideoTime((file === null || file === void 0 ? void 0 : (_file$metadata4 = file.metadata) === null || _file$metadata4 === void 0 ? void 0 : _file$metadata4.dur) || audioDuration));
34477
+ setCurrentTimeSeconds(0);
34478
+ if (playingAudioId === file.id) {
34479
+ dispatch(setPlayingAudioIdAC(null));
34480
+ }
34481
+ clearInterval(intervalRef.current);
34482
+ if (onClose) {
34483
+ onClose();
34484
+ }
34485
+ });
34486
+ wavesurfer.current.on('pause', function () {
34487
+ setPlayAudio(false);
34488
+ if (playingAudioId === file.id) {
34489
+ dispatch(setPlayingAudioIdAC(null));
34490
+ }
34491
+ clearInterval(intervalRef.current);
34492
+ });
34493
+ wavesurfer.current.on('interaction', function () {
34494
+ var currentTime = wavesurfer.current.getCurrentTime();
34495
+ setCurrentTime(formatAudioVideoTime(currentTime));
34496
+ setCurrentTimeSeconds(currentTime);
34497
+ });
34498
+ if (url !== '_') {
34499
+ setIsRendered(true);
34286
34500
  }
34287
34501
  }
34288
- wavesurfer.current.load(url, peaks);
34289
- wavesurfer.current.on('ready', function () {
34290
- var audioDuration = wavesurfer.current.getDuration();
34291
- setDuration(audioDuration);
34292
- setCurrentTime(formatAudioVideoTime(audioDuration));
34293
- wavesurfer.current.drawBuffer = function (d) {
34294
- log.info('filters --- ', d);
34295
- };
34296
- });
34297
- wavesurfer.current.on('finish', function () {
34298
- setPlayAudio(false);
34299
- wavesurfer.current.seekTo(0);
34300
- var audioDuration = wavesurfer.current.getDuration();
34301
- setDuration(audioDuration);
34302
- setCurrentTime(formatAudioVideoTime(audioDuration));
34303
- setCurrentTimeSeconds(0);
34304
- if (playingAudioId === file.id) {
34305
- dispatch(setPlayingAudioIdAC(null));
34306
- }
34307
- clearInterval(intervalRef.current);
34308
- if (onClose) {
34309
- onClose();
34310
- }
34311
- });
34312
- wavesurfer.current.on('pause', function () {
34313
- setPlayAudio(false);
34314
- if (playingAudioId === file.id) {
34315
- dispatch(setPlayingAudioIdAC(null));
34502
+ var audioUrl = url;
34503
+ var needsConversion = isSafari() && url && url !== '_' && (url.endsWith('.mp3') || ((_file$name = file.name) === null || _file$name === void 0 ? void 0 : _file$name.endsWith('.mp3')) || file.type === 'audio/mpeg');
34504
+ var _temp = function () {
34505
+ if (needsConversion) {
34506
+ return _catch(function () {
34507
+ if (convertedUrlRef.current) {
34508
+ URL.revokeObjectURL(convertedUrlRef.current);
34509
+ convertedUrlRef.current = null;
34510
+ }
34511
+ var cacheKey = file.id || url;
34512
+ return Promise.resolve(fetch(url, {
34513
+ cache: 'no-store'
34514
+ })).then(function (response) {
34515
+ if (!response.ok) {
34516
+ throw new Error("Failed to fetch audio: " + response.statusText);
34517
+ }
34518
+ return Promise.resolve(response.blob()).then(function (blob) {
34519
+ var uniqueFileName = (file.id || Date.now()) + "_" + (file.name || 'audio.mp3');
34520
+ var audioFile = new File([blob], uniqueFileName, {
34521
+ type: blob.type || 'audio/mpeg',
34522
+ lastModified: Date.now()
34523
+ });
34524
+ return Promise.resolve(convertAudioForSafari(audioFile, file === null || file === void 0 ? void 0 : file.messageId)).then(function (convertedFile) {
34525
+ var convertedBlobUrl = URL.createObjectURL(convertedFile);
34526
+ audioUrl = convertedBlobUrl;
34527
+ convertedUrlRef.current = convertedBlobUrl;
34528
+ log.info("Converted audio for Safari: " + cacheKey + " -> " + convertedBlobUrl);
34529
+ });
34530
+ });
34531
+ });
34532
+ }, function (conversionError) {
34533
+ log.warn('Failed to convert audio for Safari, using original:', conversionError);
34534
+ audioUrl = url;
34535
+ });
34316
34536
  }
34317
- clearInterval(intervalRef.current);
34318
- });
34319
- wavesurfer.current.on('interaction', function () {
34320
- var currentTime = wavesurfer.current.getCurrentTime();
34321
- setCurrentTime(formatAudioVideoTime(currentTime));
34322
- setCurrentTimeSeconds(currentTime);
34323
- });
34324
- if (url !== '_') {
34325
- setIsRendered(true);
34326
- }
34327
- } catch (e) {
34537
+ }();
34538
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
34539
+ }, function (e) {
34328
34540
  log.error('Failed to init wavesurfer', e);
34329
- }
34330
- return Promise.resolve();
34541
+ }));
34331
34542
  } catch (e) {
34332
34543
  return Promise.reject(e);
34333
34544
  }
@@ -34336,8 +34547,16 @@ var AudioPlayer = function AudioPlayer(_ref) {
34336
34547
  }
34337
34548
  return function () {
34338
34549
  clearInterval(intervalRef.current);
34550
+ if (convertedUrlRef.current) {
34551
+ URL.revokeObjectURL(convertedUrlRef.current);
34552
+ convertedUrlRef.current = null;
34553
+ }
34554
+ if (wavesurfer.current) {
34555
+ wavesurfer.current.destroy();
34556
+ wavesurfer.current = null;
34557
+ }
34339
34558
  };
34340
- }, [url]);
34559
+ }, [url, file.id]);
34341
34560
  useEffect(function () {
34342
34561
  if (playAudio && playingAudioId && playingAudioId !== "player_" + file.id && wavesurfer.current) {
34343
34562
  setPlayAudio(false);
@@ -34355,8 +34574,8 @@ var AudioPlayer = function AudioPlayer(_ref) {
34355
34574
  iconColor: accentColor
34356
34575
  }))), /*#__PURE__*/React__default.createElement(WaveContainer, null, /*#__PURE__*/React__default.createElement(VisualizationWrapper, null, /*#__PURE__*/React__default.createElement(AudioVisualizationPlaceholder, {
34357
34576
  ref: wavesurferContainer,
34358
- hidden: !!((_file$metadata = file.metadata) !== null && _file$metadata !== void 0 && _file$metadata.tmb && Array.isArray(file.metadata.tmb))
34359
- }), ((_file$metadata2 = file.metadata) === null || _file$metadata2 === void 0 ? void 0 : _file$metadata2.tmb) && Array.isArray(file.metadata.tmb) && (/*#__PURE__*/React__default.createElement(AudioVisualization, {
34577
+ hidden: !!((_file$metadata5 = file.metadata) !== null && _file$metadata5 !== void 0 && _file$metadata5.tmb && Array.isArray(file.metadata.tmb))
34578
+ }), ((_file$metadata6 = file.metadata) === null || _file$metadata6 === void 0 ? void 0 : _file$metadata6.tmb) && Array.isArray(file.metadata.tmb) && (/*#__PURE__*/React__default.createElement(AudioVisualization, {
34360
34579
  tmb: file.metadata.tmb,
34361
34580
  duration: duration || file.metadata.dur || 0,
34362
34581
  currentTime: currentTimeSeconds,
@@ -34372,7 +34591,7 @@ var AudioPlayer = function AudioPlayer(_ref) {
34372
34591
  backgroundColor: backgroundSections
34373
34592
  }, audioRate, /*#__PURE__*/React__default.createElement("span", null, "X"))), /*#__PURE__*/React__default.createElement(Timer$1, {
34374
34593
  color: textSecondary
34375
- }, currentTime || formatAudioVideoTime(((_file$metadata3 = file.metadata) === null || _file$metadata3 === void 0 ? void 0 : _file$metadata3.dur) || 0)));
34594
+ }, currentTime || formatAudioVideoTime(((_file$metadata7 = file.metadata) === null || _file$metadata7 === void 0 ? void 0 : _file$metadata7.dur) || 0)));
34376
34595
  };
34377
34596
  var Container$f = styled.div(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["\n position: relative;\n display: flex;\n align-items: flex-start;\n width: 230px;\n padding: 8px 12px;\n ", "\n ", "\n"])), function (props) {
34378
34597
  return props.backgroundColor && "background-color: " + props.backgroundColor + ";";
@@ -35259,7 +35478,11 @@ var Attachment = function Attachment(_ref) {
35259
35478
  channelId: channelId,
35260
35479
  incoming: incoming,
35261
35480
  viewOnce: viewOnce,
35262
- setViewOnceVoiceModalOpen: viewOnce ? setViewOnceVoiceModalOpen : undefined
35481
+ setViewOnceVoiceModalOpen: viewOnce ? function () {
35482
+ if (connectionStatus === CONNECTION_STATUS.CONNECTED) {
35483
+ setViewOnceVoiceModalOpen(true);
35484
+ }
35485
+ } : undefined
35263
35486
  })) : attachment.type === attachmentTypes.link ? null : (
35264
35487
  /*#__PURE__*/
35265
35488
  React__default.createElement(AttachmentFile$1, {
@@ -45420,7 +45643,7 @@ var SendMessageInput = function SendMessageInput(_ref3) {
45420
45643
  if (activeChannel.id) {
45421
45644
  prevActiveChannelId = activeChannel.id;
45422
45645
  }
45423
- if (activeChannel.id && membersHasNext === undefined) {
45646
+ if (activeChannel.id && membersHasNext === undefined && !(activeChannel.type === DEFAULT_CHANNEL_TYPE.DIRECT && activeChannel.memberCount === 2)) {
45424
45647
  dispatch(getMembersAC(activeChannel.id));
45425
45648
  }
45426
45649
  setMentionedUsers([]);
@@ -49053,7 +49276,7 @@ var Members = function Members(_ref) {
49053
49276
  if (getFromContacts) {
49054
49277
  dispatch(getContactsAC());
49055
49278
  }
49056
- if (channel !== null && channel !== void 0 && channel.id) {
49279
+ if (channel !== null && channel !== void 0 && channel.id && !(channel.type === DEFAULT_CHANNEL_TYPE.DIRECT && channel.memberCount === 2)) {
49057
49280
  dispatch(getMembersAC(channel.id));
49058
49281
  }
49059
49282
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sceyt-chat-react-uikit",
3
- "version": "1.8.0-beta.5",
3
+ "version": "1.8.0-beta.7",
4
4
  "description": "Interactive React UI Components for Sceyt Chat.",
5
5
  "author": "Sceyt",
6
6
  "license": "MIT",