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.
- package/index.js +299 -76
- package/index.modern.js +299 -76
- 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$
|
|
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
|
-
|
|
34260
|
-
|
|
34261
|
-
|
|
34262
|
-
|
|
34263
|
-
|
|
34264
|
-
|
|
34265
|
-
|
|
34266
|
-
|
|
34267
|
-
|
|
34268
|
-
|
|
34269
|
-
|
|
34270
|
-
|
|
34271
|
-
|
|
34272
|
-
|
|
34273
|
-
|
|
34274
|
-
|
|
34275
|
-
|
|
34276
|
-
|
|
34277
|
-
|
|
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
|
-
|
|
34280
|
-
|
|
34281
|
-
|
|
34282
|
-
|
|
34283
|
-
|
|
34284
|
-
|
|
34285
|
-
|
|
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
|
-
|
|
34290
|
-
|
|
34291
|
-
|
|
34292
|
-
|
|
34293
|
-
|
|
34294
|
-
|
|
34295
|
-
|
|
34296
|
-
|
|
34297
|
-
|
|
34298
|
-
|
|
34299
|
-
|
|
34300
|
-
|
|
34301
|
-
|
|
34302
|
-
|
|
34303
|
-
|
|
34304
|
-
|
|
34305
|
-
|
|
34306
|
-
|
|
34307
|
-
|
|
34308
|
-
|
|
34309
|
-
|
|
34310
|
-
|
|
34311
|
-
|
|
34312
|
-
|
|
34313
|
-
|
|
34314
|
-
|
|
34315
|
-
|
|
34316
|
-
|
|
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
|
-
|
|
34319
|
-
|
|
34320
|
-
|
|
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$
|
|
34360
|
-
}), ((_file$
|
|
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$
|
|
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 ?
|
|
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$
|
|
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
|
-
|
|
34259
|
-
|
|
34260
|
-
|
|
34261
|
-
|
|
34262
|
-
|
|
34263
|
-
|
|
34264
|
-
|
|
34265
|
-
|
|
34266
|
-
|
|
34267
|
-
|
|
34268
|
-
|
|
34269
|
-
|
|
34270
|
-
|
|
34271
|
-
|
|
34272
|
-
|
|
34273
|
-
|
|
34274
|
-
|
|
34275
|
-
|
|
34276
|
-
|
|
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
|
-
|
|
34279
|
-
|
|
34280
|
-
|
|
34281
|
-
|
|
34282
|
-
|
|
34283
|
-
|
|
34284
|
-
|
|
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
|
-
|
|
34289
|
-
|
|
34290
|
-
|
|
34291
|
-
|
|
34292
|
-
|
|
34293
|
-
|
|
34294
|
-
|
|
34295
|
-
|
|
34296
|
-
|
|
34297
|
-
|
|
34298
|
-
|
|
34299
|
-
|
|
34300
|
-
|
|
34301
|
-
|
|
34302
|
-
|
|
34303
|
-
|
|
34304
|
-
|
|
34305
|
-
|
|
34306
|
-
|
|
34307
|
-
|
|
34308
|
-
|
|
34309
|
-
|
|
34310
|
-
|
|
34311
|
-
|
|
34312
|
-
|
|
34313
|
-
|
|
34314
|
-
|
|
34315
|
-
|
|
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
|
-
|
|
34318
|
-
|
|
34319
|
-
|
|
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$
|
|
34359
|
-
}), ((_file$
|
|
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$
|
|
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 ?
|
|
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
|
}
|