Files
discord-decomp/sources/modules/voice_messages/native/VoiceMessageUtils.tsx
T
2026-07-27 16:20:00 +03:00

572 lines
19 KiB
TypeScript

/* Metro module 11778; source: modules/voice_messages/native/VoiceMessageUtils.tsx; dependencies: [5, 4259, 11527, 11528, 661, 3, 11779, 206, 22, 4406, 683, 4081, 477, 2] */
function _fun90221(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#90221, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:6, offset: 0x02030f70, size: 528 bytes, params: 8, frame: 21
const env0_0 = require;
const closure = generateBase64EncodedWaveform;
const closure2 = function() {
return _stopAndCacheAudioRecording.apply(this, arguments);
};
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_3 = importDefault(5) /* metro dependency 5 */;
const mediaEngineStore = importDefault(4259) /* metro dependency 4259: MediaEngineStore */;
let value = require(11527) /* metro dependency 11527: VoiceMessagesUIStore */;
const env0_5 = value.addVoiceMessageWave;
const env0_6 = value.resetVoiceMessageState;
const env0_7 = value.setSavedVoiceMessageUploadData;
const env0_8 = value.setVoiceMessageRecordingId;
const env0_9 = value.setVoiceMessageRecordingState;
const env0_10 = value.setVoiceMessageStartTimeMillis;
const env0_11 = value.useVoiceMessagesUIStore;
const env0_12 = value.VoiceMessageRecordingStatus;
value = require(11528) /* metro dependency 11528: VoiceMessageConstants */;
const env0_13 = value.WAVEFORM_WAVE_MAX_VALUE;
const env0_14 = value.VOICE_RECORDING_MIN_DB;
const env0_15 = value.VOICE_RECORDING_MAX_DB;
const env0_16 = value.WAVEFORM_MAX_SAMPLES;
const env0_17 = value.VOICE_RECORDING_MAX_DURATION_MILLIS;
const env0_18 = (require(661) /* metro dependency 661: Constants */).AnalyticEvents;
value = importDefault(3) /* metro dependency 3: Logger */;
value = new value('VoiceMessages');
const env0_21 = (importDefault(22) /* metro dependency 22 */).throttle(_fun90239, 100);
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/voice_messages/native/VoiceMessageUtils.tsx');
exports.generateBase64EncodedWaveform = closure;
exports.startAudioRecording = function() {
return _startAudioRecording.apply(this, arguments);
};
exports.endAudioRecording = function() {
return _endAudioRecording.apply(this, arguments);
};
exports.stopAndCacheAudioRecording = closure2;
exports.emitVoiceMessageRecorded = emitVoiceMessageRecorded;
exports.triggerHaptic = function() {
var moduleValue = require(dependencyMap[11]);
var triggerHapticFeedback = moduleValue.triggerHapticFeedback;
var isAndroid = require(dependencyMap[12]).isAndroid();
var HapticFeedbackTypes = require(dependencyMap[11]).HapticFeedbackTypes;
Reflect.apply(triggerHapticFeedback, moduleValue,
[isAndroid ? HapticFeedbackTypes.IMPACT_LIGHT : HapticFeedbackTypes.IMPACT_MEDIUM]);
};
}
function generateBase64EncodedWaveform(a0) { // fn#90222, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:595, offset: 0x02031180, size: 135 bytes, params: 2, frame: 16
var r3;
let value = a0;
if (value.length <= WAVEFORM_MAX_SAMPLES) {
r3 = value;
} else {
value = (importDefault(11779) /* metro dependency 11779: downsampleWaveform */)(value, WAVEFORM_MAX_SAMPLES);
r3 = value;
}
value = r3.map(function(a0) {
var Math = global.Math;
return Math.min(a0, WAVEFORM_WAVE_MAX_VALUE);
});
const defaultImport = importDefault(206) /* metro dependency 206 */;
const fromByteArray = defaultImport.fromByteArray;
const Uint8Array = global.Uint8Array;
const value3 = Object.create(Uint8Array.prototype, {constructor: {value: Uint8Array}});
const uint8Array = new Uint8Array(value);
return Reflect.apply(fromByteArray, defaultImport, [uint8Array instanceof Object ? uint8Array : value3]);
}
function _startAudioRecording() { // fn#90224, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:990, offset: 0x02031226, size: 50 bytes, params: 1, frame: 14
return env0_3(_fun90226).apply(this, arguments);
}
function resetAudioRecording() { // fn#90227, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:1657, offset: 0x020313f8, size: 77 bytes, params: 1, frame: 15
const mediaEngine = MediaEngineStore.getMediaEngine();
const removeListener = mediaEngine.removeListener;
const MediaEngineEvent = (require(4406) /* metro dependency 4406: mediaEngine */).MediaEngineEvent;
const VoiceActivity = MediaEngineEvent.VoiceActivity;
Reflect.apply(removeListener, mediaEngine, [VoiceActivity, env0_21]);
resetVoiceMessageState();
}
function stopAndGetAudioRecording() { // fn#90228, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:1768, offset: 0x02031445, size: 114 bytes, params: 1, frame: 14
setVoiceMessageRecordingId(null);
setVoiceMessageRecordingState(null);
const generateBase64EncodedWaveformBinding = generateBase64EncodedWaveform;
const getState = useVoiceMessagesUIStore.getState;
const waveform = Reflect.apply(getState, useVoiceMessagesUIStore, []).waveform;
const env0_0 = generateBase64EncodedWaveformBinding(waveform.map(function(a0) {
var iterator = a0[Symbol.iterator]();
var item2 = iterator.next();
var item = item2.value;
item2 = item2.done ? undefined : iterator;
var value = undefined;
var value2 = item2 === value;
var r0 = value2 ? value : item;
if (!value2) {
item2.return();
}
return r0;
}));
const Promise = global.Promise;
let value = Object.create(Promise.prototype, {constructor: {value: Promise}});
const promise = new Promise(_fun90230);
return promise instanceof Object ? promise : value;
}
function _endAudioRecording() { // fn#90232, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:2023, offset: 0x0203151f, size: 50 bytes, params: 1, frame: 14
return env0_3(_fun90234).apply(this, arguments);
}
function _stopAndCacheAudioRecording() { // fn#90236, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:2517, offset: 0x02031602, size: 50 bytes, params: 1, frame: 14
return env0_3(_fun90238).apply(this, arguments);
}
function _fun90239(a0) { // fn#90239, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:808, offset: 0x020316ad, size: 134 bytes, params: 2, frame: 16
const state = useVoiceMessagesUIStore.getState();
if (state.startTimeMillis != null) {
addVoiceMessageWave(WAVEFORM_WAVE_MAX_VALUE * ((a0 - VOICE_RECORDING_MIN_DB) / (VOICE_RECORDING_MAX_DB - VOICE_RECORDING_MIN_DB)));
if (state.savedVoiceMessageUploadData == null && global.performance.now() - state.startTimeMillis >= VOICE_RECORDING_MAX_DURATION_MILLIS) {
stopAndCacheAudioRecording();
}
}
}
function emitVoiceMessageRecorded(a0, a1, a2) { // fn#90242, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:3190, offset: 0x02031733, size: 123 bytes, params: 4, frame: 17
var defaultImport;
var track;
var VOICE_MESSAGE_RECORDED;
var object2;
if (a2 != null) {
defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */;
track = defaultImport.track;
VOICE_MESSAGE_RECORDED = AnalyticEvents.VOICE_MESSAGE_RECORDED;
object2 = {recording_start_timestamp: a2};
object2.recording_stop_timestamp = global.Date.now();
object2.duration_secs = a1;
object2.result = a0;
object2.initialize_secs = env0_19;
Reflect.apply(track, defaultImport, [VOICE_MESSAGE_RECORDED, object2]);
}
}
function* _fun90226(a0) { // fn#90226, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:1053, offset: 0x02031263, size: 405 bytes, params: 2, frame: 21
var performance;
var now;
var value4;
var value5;
var startLocalAudioRecording;
var object3;
var getEchoCancellation;
var value6;
var getNoiseSuppression;
var value7;
var object4;
var getAutomaticGainControl;
var value8;
var getNoiseCancellation;
var value9;
var value10;
var value11;
var value12;
var value13;
var value14;
var log;
var binding2;
var getState;
var value15;
var recordingId;
var value16;
var binding3;
var STARTED;
var Date;
var value17;
var error;
if (true) {
value = environment.__proto__.__proto__;
var binding = env2_9;
var REQUESTED = env2_12.REQUESTED;
binding(REQUESTED);
env2_8(a0);
var mediaEngine = env2_4.getMediaEngine();
var on = mediaEngine.on;
var MediaEngineEvent = env2_0(env2_2[9]).MediaEngineEvent;
var VoiceActivity = MediaEngineEvent.VoiceActivity;
Reflect.apply(on, mediaEngine, [VoiceActivity, env2_21]);
try {
performance = global.performance;
} catch (error) {
env2_24();
throw error;
}
try {
now = performance.now;
} catch (error) {
env2_24();
throw error;
}
try {
value4 = Reflect.apply(now, performance, []);
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_4;
} catch (error) {
env2_24();
throw error;
}
try {
getMediaEngine = binding.getMediaEngine;
} catch (error) {
env2_24();
throw error;
}
try {
value5 = Reflect.apply(getMediaEngine, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
startLocalAudioRecording = value5.startLocalAudioRecording;
} catch (error) {
env2_24();
throw error;
}
try {
object3 = {};
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_4;
} catch (error) {
env2_24();
throw error;
}
try {
getEchoCancellation = binding.getEchoCancellation;
} catch (error) {
env2_24();
throw error;
}
try {
value6 = Reflect.apply(getEchoCancellation, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
object3.echoCancellation = value6;
} catch (error) {
env2_24();
throw error;
}
try {
object3.echoCancellationPreEcho = false;
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_4;
} catch (error) {
env2_24();
throw error;
}
try {
getNoiseSuppression = binding.getNoiseSuppression;
} catch (error) {
env2_24();
throw error;
}
try {
value7 = Reflect.apply(getNoiseSuppression, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
object3.noiseSuppression = value7;
} catch (error) {
env2_24();
throw error;
}
try {
object4 = {};
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_4;
} catch (error) {
env2_24();
throw error;
}
try {
getAutomaticGainControl = binding.getAutomaticGainControl;
} catch (error) {
env2_24();
throw error;
}
try {
value8 = Reflect.apply(getAutomaticGainControl, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
object4.enabled = value8;
} catch (error) {
env2_24();
throw error;
}
try {
object3.automaticGainControlConfig = object4;
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_4;
} catch (error) {
env2_24();
throw error;
}
try {
getNoiseCancellation = binding.getNoiseCancellation;
} catch (error) {
env2_24();
throw error;
}
try {
value9 = Reflect.apply(getNoiseCancellation, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
object3.noiseCancellation = value9;
} catch (error) {
env2_24();
throw error;
}
try {
value10 = Reflect.apply(startLocalAudioRecording, value5, [object3]);
} catch (error) {
env2_24();
throw error;
}
yield value10;
try {
value11 = undefined;
value12 = false;
} catch (error) {
env2_24();
throw error;
}
if (value12) {
return value11;
}
try {
performance = global.performance;
} catch (error) {
env2_24();
throw error;
}
try {
now = performance.now;
} catch (error) {
env2_24();
throw error;
}
try {
value13 = Reflect.apply(now, performance, []);
} catch (error) {
env2_24();
throw error;
}
try {
value14 = value13 - value4;
} catch (error) {
env2_24();
throw error;
}
try {
env2_19 = value14;
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_20;
} catch (error) {
env2_24();
throw error;
}
try {
log = binding.log;
} catch (error) {
env2_24();
throw error;
}
try {
binding2 = env2_19;
} catch (error) {
env2_24();
throw error;
}
try {
Reflect.apply(log, binding, ['Voice message audio startup latency:', binding2]);
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_11;
} catch (error) {
env2_24();
throw error;
}
try {
getState = binding.getState;
} catch (error) {
env2_24();
throw error;
}
try {
value15 = Reflect.apply(getState, binding, []);
} catch (error) {
env2_24();
throw error;
}
try {
recordingId = value15.recordingId;
} catch (error) {
env2_24();
throw error;
}
try {
value16 = recordingId !== a0;
} catch (error) {
env2_24();
throw error;
}
if (!value16) {
try {
binding = env2_9;
} catch (error) {
env2_24();
throw error;
}
try {
binding3 = env2_12;
} catch (error) {
env2_24();
throw error;
}
try {
STARTED = binding3.STARTED;
} catch (error) {
env2_24();
throw error;
}
try {
binding(STARTED);
} catch (error) {
env2_24();
throw error;
}
try {
binding = env2_10;
} catch (error) {
env2_24();
throw error;
}
try {
Date = global.Date;
} catch (error) {
env2_24();
throw error;
}
try {
now = Date.now;
} catch (error) {
env2_24();
throw error;
}
try {
value17 = Reflect.apply(now, Date, []);
} catch (error) {
env2_24();
throw error;
}
try {
binding(value17);
} catch (error) {
env2_24();
throw error;
}
}
}
}
function _fun90230(a0) { // fn#90230, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:1915, offset: 0x020314b7, size: 48 bytes, params: 2, frame: 11
var environment;
const env0_0 = a0;
const value = environment.__proto__;
MediaEngineStore.getMediaEngine().stopLocalAudioRecording(_fun90231);
}
function* _fun90234() { // fn#90234, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:2082, offset: 0x0203155c, size: 166 bytes, params: 1, frame: 14
var r4;
var startTimeMillis;
if (false) {
return undefined;
}
value = environment.__proto__.__proto__;
let binding = env2_11;
const state = binding.getState();
const savedVoiceMessageUploadData = state.savedVoiceMessageUploadData;
if (savedVoiceMessageUploadData == null && state.recordingStatus === env2_12.REQUESTED) {
env2_25();
r4 = {'filename': '', 'durationSecs': 0, 'waveform': ''};
} else {
r4 = savedVoiceMessageUploadData;
}
if (r4 != null) {
binding = env2_11;
startTimeMillis = binding.getState().startTimeMillis;
} else {
yield env2_25();
var value6 = undefined;
if (false) {
return value6;
}
r4 = value6;
binding = env2_11;
startTimeMillis = binding.getState().startTimeMillis;
}
env2_24();
return {data: r4, startTimeMillis: startTimeMillis};
}
function* _fun90238() { // fn#90238, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:2594, offset: 0x0203163f, size: 110 bytes, params: 1, frame: 18
if (true) {
value = environment.__proto__.__proto__;
yield env2_25();
var value3 = undefined;
if (false) {
return value3;
}
var mediaEngine = env2_4.getMediaEngine();
var removeListener = mediaEngine.removeListener;
var MediaEngineEvent = env2_0(env2_2[9]).MediaEngineEvent;
var VoiceActivity = MediaEngineEvent.VoiceActivity;
Reflect.apply(removeListener, mediaEngine, [VoiceActivity, env2_21]);
env2_7(value3);
}
}
function _fun90231(a0, a1) { // fn#90231, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11964:1963, offset: 0x020314e7, size: 56 bytes, params: 3, frame: 12
env0_0({filename: a0, durationSecs: a1 / 1000, waveform: env1_0});
}