/* Metro module 9275; source: modules/rtc/SecureFramesUtils.tsx; dependencies: [57, 5, 1226, 4259, 4294, 4395, 1878, 9276, 9277, 661, 1948, 9278, 9284, 9260, 9279, 1244, 3995, 3738, 672, 44, 206, 507, 1216, 4647, 4617, 2] */ import Module00005 from '../../by-id/module-00005.js'; /* Metro dependency 5 */ import Module00057 from '../../by-id/module-00057.js'; /* Metro dependency 57 */ import Module00206 from '../../by-id/module-00206.js'; /* Metro dependency 206 */ import AuthenticationStore from '../../stores/AuthenticationStore.tsx'; /* Metro dependency 1226 */ import UserStore from '../../stores/UserStore.tsx'; /* Metro dependency 1878 */ import Module03738 from '../../by-id/module-03738.js'; /* Metro dependency 3738 */ import UserUtils from '../../utils/UserUtils.tsx'; /* Metro dependency 3995 */ import MediaEngineStore from '../../stores/MediaEngineStore.tsx'; /* Metro dependency 4259 */ import RTCConnectionStore from '../../stores/RTCConnectionStore.tsx'; /* Metro dependency 4294 */ import StreamRTCConnectionStore from '../../stores/StreamRTCConnectionStore.tsx'; /* Metro dependency 4395 */ import AlertActionCreators from '../../actions/AlertActionCreators.tsx'; /* Metro dependency 4647 */ import SecureFramesPersistedStore from './SecureFramesPersistedStore.tsx'; /* Metro dependency 9276 */ import SecureFramesActionCreators from './SecureFramesActionCreators.tsx'; /* Metro dependency 9278 */ import SecureFramesPlatformUtilsNative from './SecureFramesPlatformUtils.native.tsx'; /* Metro dependency 9279 */ import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as IndexNativeModule from '../../intl/index.native.tsx'; /* Metro dependency 1244 */ import * as SecureFramesConstantsModule from './SecureFramesConstants.tsx'; /* Metro dependency 9277 */ import * as SecureFramesTrackingModule from './SecureFramesTracking.tsx'; /* Metro dependency 9284 */ function _fun72497(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#72497, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:6, offset: 0x01d47cec, size: 669 bytes, params: 8, frame: 24 const env0_0 = require; const _arrayLikeToArray_72500 = function(a0, a1) { var r0; var r1; var r2; var value3; var length; var value5; var value = undefined; var value2 = value == null; reducibleJoin2: while (true) { if (value2) { r0 = value2; break reducibleJoin2; } value3 = value > a0.length; r0 = value3; break reducibleJoin2; } reducibleJoin4: while (true) { if (r0) { length = a0.length; r1 = length; break reducibleJoin4; } r1 = value; break reducibleJoin4; } value = (0, global.Array)(r1); var value4 = 0; if (value4 < r1) { r2 = value4; reducibleLoop5: while (true) { value[r2] = a0[r2]; value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; if (value5 < r1) { r2 = value5; continue reducibleLoop5; } break reducibleLoop5; } } return value; }; const closure = function() { return importDefault(dependencyMap[10]).getArticleURL(HelpdeskArticles.END_TO_END_ENCRYPTION); }; const closure2 = function() { return _getCurrentUserSigningKey.apply(this, arguments); }; const closure3 = function() { return _isPublicKeyMatch.apply(this, arguments); }; const uploadCurrentUserPublicKey = function() { return _uploadCurrentUserPublicKey.apply(this, arguments); }; const getIsSecureFramesKeyInconsistent2 = getIsSecureFramesKeyInconsistent; const showSecureFramesKeyInconsistentAlert2 = showSecureFramesKeyInconsistentAlert; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = SecureFramesConstantsModule; const env0_11 = value.AnalyticsSecureFramesUserVerification; const env0_12 = value.SECURE_FRAMES_PUBLIC_KEY_VERSION; value = require(661) /* metro dependency 661: Constants */; const env0_13 = value.LinkingTypes; const env0_14 = value.Routes; const env0_15 = value.Endpoints; const env0_16 = value.HelpdeskArticles; (FileImportTrackerModule).fileFinishedImporting('modules/rtc/SecureFramesUtils.tsx'); exports.getSecureFramesHelpdeskArticle = closure; exports.getSecureFramesPersistentCodesHelpdeskArticle = function() { return importDefault(dependencyMap[10]).getArticleURL(HelpdeskArticles.END_TO_END_ENCRYPTION); }; exports.getSecureFramesVerifiedDevicesHelpdeskArticle = function() { return importDefault(dependencyMap[10]).getArticleURL(HelpdeskArticles.END_TO_END_ENCRYPTION); }; exports.addVerification = addVerification; exports.deleteVerification = deleteVerification; exports.deletePersistentVerification = deletePersistentVerification; exports.deleteUserPersistentVerifications = deleteUserPersistentVerifications; exports.getSecureFramesUserVerifiedTimestamp = getSecureFramesUserVerifiedTimestamp; exports.getUserVerificationDeeplink = getUserVerificationDeeplink; exports.getUserVerifyStateText = getUserVerifyStateText; exports.getUserVerificationFooterText = getUserVerificationFooterText; exports.getCurrentUserSigningKey = closure2; exports.isPublicKeyMatch = closure3; exports.ensureCurrentUserPublicKey = function() { return _ensureCurrentUserPublicKey.apply(this, arguments); }; exports.isCurrentUserPublicKeyMatch = function() { return _isCurrentUserPublicKeyMatch.apply(this, arguments); }; exports.getIsSecureFramesKeyInconsistent = getIsSecureFramesKeyInconsistent2; exports.showSecureFramesKeyInconsistentAlert = showSecureFramesKeyInconsistentAlert2; exports.validateSecureFramesKeyConsistent = validateSecureFramesKeyConsistent; function _createForOfIteratorHelperLoose_72498(a0, a1) { // fn#72498, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:353, offset: 0x01d47f89, size: 372 bytes, params: 3, frame: 20 var r6; var r9; var r5; var value3; var regexp; const env0_0 = a0; const Symbol = global.Symbol; let value = typeof Symbol !== 'undefined'; let r1 = value && a0[global.Symbol.iterator]; r1 = !r1 ? a0['@@iterator'] : r1; if (r1) { value = r1.call(a0); return value.next.bind(value); } const Array = global.Array; if (Array.isArray(a0)) { if (r1) { } return _fun72499; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_72500(a0, value); r5 = value; } else { value3 = ({}).toString.call(a0).slice(8, -1); r6 = value3 === 'Object' && a0.constructor; r9 = r6 ? a0.constructor.name : value3; if (r9 === 'Map') { r6 = global.Array.from(a0); } else if (r9 === 'Set') { r6 = global.Array.from(a0); } else if (r9 === 'Arguments') { value = _arrayLikeToArray_72500(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_72500(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun72499; } const TypeError = global.TypeError; throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'); function _fun72499() { // fn#72499, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:924, offset: 0x00c39d73, size: 69 bytes, params: 1, frame: 5 return env0_1 >= env0_0.length ? {done: true} : {done: false, value: env0_0[typeof env0_1 === 'bigint' ? env0_1 : +env0_1]}; } } function _getCurrentUserSigningKey() { // fn#72503, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:1452, offset: 0x01d4812d, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun72505).apply(this, arguments); function* _fun72505(a0) { // fn#72505, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:1525, offset: 0x01d4816a, size: 102 bytes, params: 2, frame: 16 if (true) { value = environment.__proto__.__proto__; var binding = env2_5; var staticAuthSessionId = binding.getStaticAuthSessionId(); env2_1(env2_2[19])(staticAuthSessionId != null, '[getCurrentUserPublicKey] session id should not be null'); binding = env2_6; var getMLSSigningKey = binding.getMLSSigningKey; yield Reflect.apply(getMLSSigningKey, binding, [staticAuthSessionId, a0]); } } } function toBase64DataUri(a0) { // fn#72506, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:1711, offset: 0x01d481d0, size: 91 bytes, params: 2, frame: 14 var value; const fromByteArray = (Module00206).fromByteArray; const Uint8Array = global.Uint8Array; const value2 = Object.create(Uint8Array.prototype, {constructor: {value: Uint8Array}}); const uint8Array = new Uint8Array(a0); value = Reflect.apply(fromByteArray, value, [uint8Array instanceof Object ? uint8Array : value2]); return 'data:application/octet-stream;base64,' + value; } function _isPublicKeyMatch() { // fn#72508, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:1905, offset: 0x01d4822b, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun72510).apply(this, arguments); function* _fun72510(a0, a1, a2) { // fn#72510, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:1962, offset: 0x01d48268, size: 184 bytes, params: 4, frame: 19 var binding; var binding2; var property; var value3; var HTTP; var post; var object; var VOICE_MATCH_PUBLIC_KEY; var value4; var object2; var value5; var value6; var value7; var value8; var body; var is_match; var error; if (false) { return undefined; } value = environment.__proto__.__proto__; try { binding = env2_0; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding2 = env2_2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { property = binding2[21]; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value3 = binding(property); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { HTTP = value3.HTTP; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { post = HTTP.post; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object = {}; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding = env2_15; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { VOICE_MATCH_PUBLIC_KEY = binding.VOICE_MATCH_PUBLIC_KEY; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value4 = Reflect.apply(VOICE_MATCH_PUBLIC_KEY, binding, [a0]); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.url = value4; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2 = {}; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding = env2_22; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value5 = binding(a1); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2.public_key = value5; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2.key_version = a2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.body = object2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.rejectWithError = false; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value6 = Reflect.apply(post, HTTP, [object]); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } yield value6; try { value7 = undefined; value8 = false; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } if (value8) { return value7; } try { body = value7.body; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { is_match = body.is_match; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } return is_match; } } function _uploadCurrentUserPublicKey() { // fn#72512, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2305, offset: 0x01d48320, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun72514).apply(this, arguments); function* _fun72514(a0) { // fn#72514, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2382, offset: 0x01d4835d, size: 246 bytes, params: 2, frame: 20 var binding; var binding2; var property; var value5; var HTTP; var put; var object; var VOICE_PUBLIC_KEYS; var value6; var object2; var value7; var value8; var value9; var value10; var value11; var binding3; var value12; var addUploadedKeyVersion; var error; if (true) { value = environment.__proto__.__proto__; yield env2_20(a0); var value3 = undefined; if (false) { return value3; } var key = value3.key; var signature = value3.signature; try { binding = env2_0; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding2 = env2_2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { property = binding2[21]; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value5 = binding(property); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { HTTP = value5.HTTP; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { put = HTTP.put; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object = {}; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding = env2_15; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { VOICE_PUBLIC_KEYS = binding.VOICE_PUBLIC_KEYS; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value6 = Reflect.apply(VOICE_PUBLIC_KEYS, binding, []); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.url = value6; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2 = {}; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding = env2_22; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value7 = binding(key); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2.public_key = value7; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value8 = binding(signature); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2.signature = value8; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object2.key_version = a0; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.body = object2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { object.rejectWithError = false; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value9 = Reflect.apply(put, HTTP, [object]); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } yield value9; try { value10 = undefined; value11 = false; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } if (value11) { return value10; } try { binding = env2_1; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { binding3 = env2_2; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { property = binding3[11]; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { value12 = binding(property); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { addUploadedKeyVersion = value12.addUploadedKeyVersion; } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } try { Reflect.apply(addUploadedKeyVersion, value12, [a0]); } catch (error) { binding = env2_1; value = binding(env2_2[22]); value.captureException(error); throw error; } } } } function isKeyVersionUploaded(a0) { // fn#72515, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2723, offset: 0x01d48453, size: 34 bytes, params: 2, frame: 11 return SecureFramesPersistedStore.getUploadedKeyVersionsCached().includes(a0); } function _ensureCurrentUserPublicKey() { // fn#72516, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2808, offset: 0x01d48475, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun72518).apply(this, arguments); function* _fun72518(a0) { // fn#72518, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2885, offset: 0x01d484b2, size: 55 bytes, params: 2, frame: 13 if (true) { value = environment.__proto__.__proto__; if (env2_27(a0)) { return undefined; } yield env2_25(a0); } } } function _isCurrentUserPublicKeyMatch() { // fn#72519, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:2987, offset: 0x01d484e9, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun72521).apply(this, arguments); function* _fun72521(a0) { // fn#72521, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:3066, offset: 0x01d48526, size: 162 bytes, params: 2, frame: 18 var id; var value5; var value7; if (false) { return undefined; } value = environment.__proto__.__proto__; if (env2_27(a0)) { id = env2_5.getId(); yield env2_20(a0); value5 = undefined; if (false) { return value5; } yield env2_23(id, value5.key, a0); value7 = undefined; if (false) { return value7; } if (!value7) { env2_0(env2_2[12]).trackE2EEPublicKeyMismatch(a0); } return value7; } yield env2_25(a0); if (false) { return undefined; } return true; } } function getIsSecureFramesKeyInconsistent(a0, a1) { // fn#72522, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:3321, offset: 0x01d485c8, size: 309 bytes, params: 3, frame: 27 var r4; var r14; var getSecureFramesRosterMapEntry; var Uint8Array; var prototype; var value5; var uint8Array; var value6; var value7; var value8; var done; var value9; var streamRTCConnectionStoreBinding; var value10; var value11; var value12; var length; var value13; var value14; const value2 = Module00057(a1, 2); const value3 = 0; let property = value2[value3]; const property2 = value2[1]; let isUserConnected = property.isUserConnected; if (Reflect.apply(isUserConnected, property, [a0])) { if (property.getSecureFramesRosterMapEntry(a0) == null) { return false; } Uint8Array = global.Uint8Array; prototype = Uint8Array.prototype; value5 = Object.create(prototype, {constructor: {value: Uint8Array}}); uint8Array = new Uint8Array(); value6 = uint8Array instanceof Object ? uint8Array : value5; value7 = _createForOfIteratorHelperLoose_72498(property2.getAllActiveStreamKeys()); value8 = value7(); done = value8.done; if (!done) { r4 = value8; reducibleLoop4: while (true) { value9 = r4.value; isUserConnected = property2.isUserConnected; if (Reflect.apply(isUserConnected, property2, [value9, a0])) { streamRTCConnectionStoreBinding = StreamRTCConnectionStore; getSecureFramesRosterMapEntry = streamRTCConnectionStoreBinding.getSecureFramesRosterMapEntry; value10 = Reflect.apply(getSecureFramesRosterMapEntry, streamRTCConnectionStoreBinding, [value9, a0]); if (value10 == null) { return true; } Uint8Array = global.Uint8Array; prototype = Uint8Array.prototype; value11 = Object.create(prototype, {constructor: {value: Uint8Array}}); uint8Array = new Uint8Array(); value12 = uint8Array instanceof Object ? uint8Array : value11; length = value6.length; if (value3 < length) { r14 = value3; reducibleLoop7: while (true) { property = value6[r14]; if (property !== value12[r14]) { return true; } value13 = typeof r14 === 'bigint' ? r14 + 1n : +r14 + 1; length = value6.length; if (value13 < length) { r14 = value13; continue reducibleLoop7; } break reducibleLoop7; } } } value14 = value7(); done = value14.done; if (done) { return false; } r4 = value14; continue reducibleLoop4; } } } return false; } function showSecureFramesKeyInconsistentAlert({userId, channelId, nickname}) { // fn#72523, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:3783, offset: 0x01d486fd, size: 229 bytes, params: 2, frame: 20 const trackE2EEUserVerificationFailed = SecureFramesTrackingModule.trackE2EEUserVerificationFailed; const OTHER_USER_INCONSISTENT_KEYS = AnalyticsSecureFramesUserVerification.OTHER_USER_INCONSISTENT_KEYS; Reflect.apply(trackE2EEUserVerificationFailed, SecureFramesTrackingModule, [{userId: userId, channelId: channelId, keyVersion: SECURE_FRAMES_PUBLIC_KEY_VERSION, reason: OTHER_USER_INCONSISTENT_KEYS}]); const show = AlertActionCreators.show; const intl = (IndexNativeModule).intl; const string = intl.string; const t = (IndexNativeModule).t; const format = intl.format; const WY6IKb = t.WY6IKb; Reflect.apply(show, AlertActionCreators, [{title: Reflect.apply(string, intl, [t.mznLyR]), body: Reflect.apply(format, intl, [WY6IKb, {username: nickname}])}]); } function addVerification(a0, a1, a2, a3, a4) { // fn#72526, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:4586, offset: 0x01d487e2, size: 117 bytes, params: 6, frame: 15 const defaultImport = SecureFramesActionCreators; if (a2) { defaultImport.createSecureFramesVerifiedKey(a0, a1); } else { defaultImport.createSecureFramesTransientKey(a0, a1); } (SecureFramesTrackingModule).trackE2EEUserVerified({channelId: a3, userId: a0, analyticsLocation: a4}); } function deleteVerification(a0, a1, a2) { // fn#72527, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:4814, offset: 0x01d48857, size: 143 bytes, params: 4, frame: 18 var moduleValue; var serializeKey; var Uint8Array; var value2; var uint8Array; if (a2) { moduleValue = require(9260) /* metro dependency 9260: libdave */; serializeKey = moduleValue.serializeKey; Uint8Array = global.Uint8Array; value2 = Object.create(Uint8Array.prototype, {constructor: {value: Uint8Array}}); uint8Array = new Uint8Array(a1); (importDefault(9278) /* metro dependency 9278: SecureFramesActionCreators */).deleteSecureFramesVerifiedKey(a0, Reflect.apply(serializeKey, moduleValue, [uint8Array instanceof Object ? uint8Array : value2])); } else { (importDefault(9278) /* metro dependency 9278: SecureFramesActionCreators */).deleteSecureFramesTransientKey(a0); } } function deletePersistentVerification(a0, a1) { // fn#72528, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:5030, offset: 0x01d488e6, size: 176 bytes, params: 3, frame: 19 const env0_0 = a0; const env0_1 = a1; const defaultImport = SecureFramesPlatformUtilsNative; const openSecureFramesUpdateConfirmation = defaultImport.openSecureFramesUpdateConfirmation; const object = {}; const intl = (IndexNativeModule).intl; const string = intl.string; const t = (IndexNativeModule).t; object.title = Reflect.apply(string, intl, [t.hdL152]); object.subtitle = intl.string(t['8VGYKg']); object.onConfirm = onConfirm_72529; Reflect.apply(openSecureFramesUpdateConfirmation, defaultImport, [object]); function deletePersistentVerificationOnConfirm() { // fn#72529, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:5231, owner: deletePersistentVerification.onConfirm, offset: 0x01d48996, size: 76 bytes, params: 1, frame: 16 const value = environment.__proto__; const defaultImport = SecureFramesActionCreators; defaultImport.deleteSecureFramesVerifiedKey(env0_0, require); (SecureFramesTrackingModule).trackE2EESettingsDeviceDelete(); } } function deleteUserPersistentVerifications(a0) { // fn#72530, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:5364, offset: 0x01d489e2, size: 215 bytes, params: 2, frame: 22 const env0_0 = a0; const name = (UserUtils).getName(UserStore.getUser(a0)); const defaultImport2 = SecureFramesPlatformUtilsNative; const openSecureFramesUpdateConfirmation = defaultImport2.openSecureFramesUpdateConfirmation; const intl = (IndexNativeModule).intl; const formatToPlainString = intl.formatToPlainString; const t = (IndexNativeModule).t; const K6NGBy = t.K6NGBy; const string = intl.string; const F1BQK3 = t.F1BQK3; Reflect.apply(openSecureFramesUpdateConfirmation, defaultImport2, [{title: Reflect.apply(formatToPlainString, intl, [K6NGBy, {username: name}]), subtitle: Reflect.apply(string, intl, [F1BQK3]), onConfirm: onConfirm_72531}]); function deleteUserPersistentVerificationsOnConfirm() { // fn#72531, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:5633, owner: deleteUserPersistentVerifications.onConfirm, offset: 0x01d48ab9, size: 71 bytes, params: 1, frame: 14 const value = environment.__proto__; (SecureFramesActionCreators).deleteSecureFramesUserVerifiedKeys(env0_0); (SecureFramesTrackingModule).trackE2EESettingsUserDelete(); } } function getSecureFramesUserVerifiedTimestamp(a0) { // fn#72532, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:5770, offset: 0x01d48b00, size: 1036 bytes, params: 2, frame: 21 const intl = (IndexNativeModule).intl; const t = (IndexNativeModule).t; var Math; const value4 = (Module03738)().diff((Module03738)(a0), 's'); let Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; let DAYS_30 = Seconds.DAYS_30; if (value4 > 12 * DAYS_30) { Math = global.Math; return intl.formatToPlainString(t.F1wqkD, {count: Math.round(value4 / (12 * (importDefault(672) /* metro dependency 672: Durations */).Seconds.DAYS_30))}); } Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; DAYS_30 = Seconds.DAYS_30; if (value4 > DAYS_30) { Math = global.Math; return intl.formatToPlainString(t['iT+b+2'], {count: Math.round(value4 / (importDefault(672) /* metro dependency 672: Durations */).Seconds.DAYS_30)}); } Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; let DAY = Seconds.DAY; if (value4 > 7 * DAY) { Math = global.Math; return intl.formatToPlainString(t.dLurKZ, {count: Math.round(value4 / (7 * (importDefault(672) /* metro dependency 672: Durations */).Seconds.DAY))}); } Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; DAY = Seconds.DAY; if (value4 > DAY) { Math = global.Math; return intl.formatToPlainString(t.LE8a2H, {count: Math.round(value4 / (importDefault(672) /* metro dependency 672: Durations */).Seconds.DAY)}); } Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; const HOUR = Seconds.HOUR; if (value4 > HOUR) { Math = global.Math; return intl.formatToPlainString(t.KULxVS, {count: Math.round(value4 / (importDefault(672) /* metro dependency 672: Durations */).Seconds.HOUR)}); } Seconds = (importDefault(672) /* metro dependency 672: Durations */).Seconds; const MINUTE = Seconds.MINUTE; if (value4 > MINUTE) { Math = global.Math; return intl.formatToPlainString(t.ws6rWq, {count: Math.round(value4 / (importDefault(672) /* metro dependency 672: Durations */).Seconds.MINUTE)}); } return intl.formatToPlainString(t['/w0Qpw'], {count: value4}); } function getUserVerificationDeeplink(a0, a1) { // fn#72533, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:6864, offset: 0x01d48f0c, size: 115 bytes, params: 3, frame: 25 const FEATURE = Routes.FEATURE; const DAVE_PROTOCOL_VERIFICATION = LinkingTypes.DAVE_PROTOCOL_VERIFICATION; return '' + global.location.protocol + '//' + global.location.host + Reflect.apply(FEATURE, Routes, [DAVE_PROTOCOL_VERIFICATION]) + '?userId=' + a0 + '&fingerprint=' + global.encodeURIComponent(a1); } function getUserVerifyStateText(a0, a1) { // fn#72534, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:7079, offset: 0x01d48f7f, size: 1004 bytes, params: 3, frame: 18 const intl = (IndexNativeModule).intl; const t = (IndexNativeModule).t; var items2; const OTHER_USER_DISCONNECTED = AnalyticsSecureFramesUserVerification.OTHER_USER_DISCONNECTED; if (OTHER_USER_DISCONNECTED === a0) { return [intl.string(t.ZBHDM9), intl.format(t['+rIdOd'], {username: a1})]; } const CURRENT_USER_DISCONNECTED = AnalyticsSecureFramesUserVerification.CURRENT_USER_DISCONNECTED; if (CURRENT_USER_DISCONNECTED === a0) { items2 = [intl.string(t['5ICxE6'])]; items2[1] = intl.string(t['v1eXp/']); return items2; } const UNABLE_TO_VERIFY = AnalyticsSecureFramesUserVerification.UNABLE_TO_VERIFY; if (UNABLE_TO_VERIFY === a0) { items2 = [intl.string(t['+no/a7'])]; items2[1] = intl.format(t.Mft7iJ, {username: a1}); return items2; } const FINGERPRINT_MISMATCH = AnalyticsSecureFramesUserVerification.FINGERPRINT_MISMATCH; if (FINGERPRINT_MISMATCH === a0) { return [intl.string(t.HTJ76H), intl.format(t.tc6aAc, {username: a1})]; } const OTHER_USER_ALREADY_VERIFIED = AnalyticsSecureFramesUserVerification.OTHER_USER_ALREADY_VERIFIED; if (OTHER_USER_ALREADY_VERIFIED === a0) { items2 = [intl.string(t['9lw+J+'])]; items2[1] = intl.format(t.TvBS1w, {username: a1}); return items2; } const MATCH = AnalyticsSecureFramesUserVerification.MATCH; if (MATCH === a0) { items2 = [intl.string(t['xyE+Dn'])]; items2[1] = intl.format(t.znsPl5, {username: a1}); return items2; } const OTHER_USER_INCONSISTENT_KEYS = AnalyticsSecureFramesUserVerification.OTHER_USER_INCONSISTENT_KEYS; if (OTHER_USER_INCONSISTENT_KEYS === a0) { return [intl.string(t.im1uUi), intl.format(t.WY6IKb, {username: a1})]; } } function getUserVerificationFooterText({isCurrentUserKeyPersistent, isOtherUserKeyPersistent, otherUserNickname}) { // fn#72535, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:8101, offset: 0x01d4936b, size: 263 bytes, params: 2, frame: 19 var r0; const intl = (IndexNativeModule).intl; var format; const t = (IndexNativeModule).t; var property; var object; var qT5z87; if (isCurrentUserKeyPersistent) { if (isOtherUserKeyPersistent) { format = intl.format; property = t['FJN+kh']; object = {}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [property, object]); } else { format = intl.format; if (isCurrentUserKeyPersistent) { property = t['p/9PGp']; object = {username: otherUserNickname}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [property, object]); } else if (isOtherUserKeyPersistent) { qT5z87 = t.qT5z87; object = {}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [qT5z87, object]); } else { property = t['6JLy+i']; object = {}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [property, object]); } } } else { format = intl.format; if (isCurrentUserKeyPersistent) { property = t['p/9PGp']; object = {username: otherUserNickname}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [property, object]); } else if (isOtherUserKeyPersistent) { qT5z87 = t.qT5z87; object = {}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [qT5z87, object]); } else { property = t['6JLy+i']; object = {}; object.helpArticle = getSecureFramesHelpdeskArticle(); r0 = Reflect.apply(format, intl, [property, object]); } } return r0; } function validateSecureFramesKeyConsistent({userId, guildId, channelId}) { // fn#72538, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:9461:9140, offset: 0x01d49472, size: 136 bytes, params: 2, frame: 19 var user; var showSecureFramesKeyInconsistentAlertBinding; const getIsSecureFramesKeyInconsistentBinding = getIsSecureFramesKeyInconsistent; let object = [RTCConnectionStore]; object[1] = StreamRTCConnectionStore; if (getIsSecureFramesKeyInconsistentBinding(userId, object)) { user = UserStore.getUser(userId); showSecureFramesKeyInconsistentAlertBinding = showSecureFramesKeyInconsistentAlert; object = {userId: userId, channelId: channelId}; object.nickname = (importDefault(4617) /* metro dependency 4617: NicknameUtils */).getName(guildId, channelId, user); showSecureFramesKeyInconsistentAlertBinding(object); return false; } return true; } } global.__d(_fun72497, 9275, [57, 5, 1226, 4259, 4294, 4395, 1878, 9276, 9277, 661, 1948, 9278, 9284, 9260, 9279, 1244, 3995, 3738, 672, 44, 206, 507, 1216, 4647, 4617, 2]) /* metro module 9275, dependencies: [57, 5, 1226, 4259, 4294, 4395, 1878, 9276, 9277, 661, 1948, 9278, 9284, 9260, 9279, 1244, 3995, 3738, 672, 44, 206, 507, 1216, 4647, 4617, 2] */;