/* Metro module 13094; source: modules/local_message_caching/LocalMessageCacheManager.native.tsx; dependencies: [6, 7, 15, 17, 18, 99, 100, 5, 57, 3794, 1226, 1379, 4814, 661, 13095, 3, 672, 587, 3738, 3826, 7141, 7067, 694, 11420, 11170, 1962, 9597, 4816, 4561, 2] */ import Logger from '../debug/Logger.tsx'; /* Metro dependency 3 */ import Module00005 from '../../by-id/module-00005.js'; /* Metro dependency 5 */ import ClassCallCheck from '../../by-id/module-00006-ClassCallCheck.js'; /* Metro dependency 6 */ import CreateClass from '../../by-id/module-00007-CreateClass.js'; /* Metro dependency 7 */ import PossibleConstructorReturn from '../../by-id/module-00015-PossibleConstructorReturn.js'; /* Metro dependency 15 */ import Module00017 from '../../by-id/module-00017.js'; /* Metro dependency 17 */ import Inherits from '../../by-id/module-00018-Inherits.js'; /* Metro dependency 18 */ import Module00057 from '../../by-id/module-00057.js'; /* Metro dependency 57 */ import Module00099 from '../../by-id/module-00099.js'; /* Metro dependency 99 */ import Module00100 from '../../by-id/module-00100.js'; /* Metro dependency 100 */ import Dispatcher from '../../Dispatcher.tsx'; /* Metro dependency 694 */ import AuthenticationStore from '../../stores/AuthenticationStore.tsx'; /* Metro dependency 1226 */ import ChannelStore from '../../stores/ChannelStore.tsx'; /* Metro dependency 1379 */ import MessageRecord from '../../records/MessageRecord.tsx'; /* Metro dependency 3794 */ import MessageStore from '../../stores/MessageStore.tsx'; /* Metro dependency 4814 */ import MessageActionCreators from '../../actions/MessageActionCreators.tsx'; /* Metro dependency 7067 */ import CreateMessage from '../messages/createMessage.tsx'; /* Metro dependency 7141 */ import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as StorageModule from '../../external/discord_common/js/packages/storage/Storage.tsx'; /* Metro dependency 587 */ import * as ConstantsModule from '../../Constants.tsx'; /* Metro dependency 661 */ import * as MutexUtilsModule from '../../external/discord_common/js/shared/utils/MutexUtils.tsx'; /* Metro dependency 13095 */ function _fun100057(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#100057, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:6, offset: 0x021dcf1c, size: 693 bytes, params: 8, frame: 22 const env0_0 = require; const _arrayLikeToArray_100060 = 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 Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = Module00100; const env0_16 = (MutexUtilsModule).createLock(); let value5 = new (Logger)('LocalMessageCacheManager'); let Millis = (importDefault(672) /* metro dependency 672: Durations */).Millis; const MINUTE = Millis.MINUTE; const env0_18 = 5 * MINUTE; Millis = (importDefault(672) /* metro dependency 672: Durations */).Millis; const DAY = Millis.DAY; const env0_19 = 14 * DAY; const env0_31 = _fun100080(); const env0_32 = _fun100084(); const env0_33 = value('loadedChannels'); value = importDefault(4561) /* metro dependency 4561: LifecycleManager */; value = _fun100088(value); value = new value(); (FileImportTrackerModule).fileFinishedImporting('modules/local_message_caching/LocalMessageCacheManager.native.tsx'); exports.default = value; function _createForOfIteratorHelperLoose_100058(a0, a1) { // fn#100058, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:259, offset: 0x021dd1d1, 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 _fun100059; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_100060(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_100060(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_100060(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun100059; } 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 _fun100059() { // fn#100059, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:830, 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 _isNativeReflectConstruct_100061() { // fn#100061, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:1169, offset: 0x021dd345, size: 98 bytes, params: 1, frame: 18 var Boolean; var prototype; var valueOf; var call; var Reflect; var construct; var closure; var value; var error; try { Boolean = global.Boolean; prototype = Boolean.prototype; valueOf = prototype.valueOf; call = valueOf.call; Reflect = global.Reflect; construct = Reflect.construct; Boolean = global.Boolean; closure = function() { }; value = Reflect.apply(construct, Reflect, [Boolean, [], closure]); value = Reflect.apply(call, valueOf, [value]); var result = !value; } catch (error) { } return (_isNativeReflectConstruct_100061_isNativeReflectConstruct = function() { return !!result; })(); } function _getMessages() { // fn#100064, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:1544, offset: 0x021dd3a7, size: 57 bytes, params: 1, frame: 11 const Storage = (StorageModule).Storage; return Storage.get('LocalMessageCacheManagerMessageCacheKey') ?? ({}); } function _getMessage(a0) { // fn#100065, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:1618, offset: 0x021dd3e0, size: 22 bytes, params: 2, frame: 9 return _getMessages()[a0]; } function _writeMessage(a0, a1) { // fn#100066, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:1653, offset: 0x021dd3f6, size: 212 bytes, params: 3, frame: 20 var object; let binding = env0_17; const value2 = undefined; binding.verbose('_writeMessage', a1 == null ? value2 : a1.id, a1 == null ? value2 : a1.channel_id); const value3 = _getMessages(); if (a1 != null) { object = {}; copyDataProperties(object, a1, undefined); object['content'] = a1.content ?? ''; value3[a0] = object; binding = env0_17; binding.verbose('_writeMessage after write', value3[a0].id, value3[a0].channel_id); } else { delete value3[a0]; } const Storage = (StorageModule).Storage; Storage.set('LocalMessageCacheManagerMessageCacheKey', value3); return value3; } function _getKeyForFileId(a0) { // fn#100067, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:1943, offset: 0x021dd4ca, size: 121 bytes, params: 2, frame: 22 var r3; var id; var property; var value6; var file; var value7; const _getMessagesBinding = _getMessages; const value2 = undefined; const value3 = _getMessagesBinding(); const Object = global.Object; const value4 = Object.entries(value3); let length = value4.length; const value5 = 0; if (value5 < length) { r3 = value5; while (true) { property = value4[r3]; value6 = Module00057(property, 2); property = value6[value5]; file = value6[1].file; id = file == null ? value2 : file.id; if (id === a0) { return property; } value7 = typeof r3 === 'bigint' ? r3 + 1n : +r3 + 1; length = value4.length; if (value7 < length) { r3 = value7; continue; } break; } } return value2; } function cacheSendingMessage({key, message, file, sendMessageOptions}) { // fn#100068, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2111, offset: 0x021dd543, size: 146 bytes, params: 2, frame: 12 const env0_3 = message.content; const env0_4 = message.id; const env0_5 = message.channel_id; const env0_6 = message.tts; const env0_7 = message.nonce; const env0_8 = message.timestamp; const env0_9 = message.type; const env0_10 = message.flags; const env0_11 = message.state; return env0_16(_fun100069); function _fun100069() { // fn#100069, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2270, offset: 0x021dd5d5, size: 258 bytes, params: 1, frame: 18 var object; const value = environment.__proto__; const _getMessageBinding = _getMessage; const keyBinding = key; const value3 = undefined; const value4 = _getMessageBinding(keyBinding); const _writeMessageBinding = _writeMessage; const object2 = {}; object2.content = content; object2.type = type; let r4 = state ?? MessageStates.SENDING; object2.state = r4; object2.channel_id = channel_id; object2.tts = tts; object2.id = id; object2.nonce = nonce; object2.timestamp = typeof timestamp === 'string' ? timestamp : timestamp.toISOString(); object2.flags = flags; object2.file = file ?? (value4 == null ? value3 : value4.file); if (sendMessageOptions != null) { object = {}; copyDataProperties(object, sendMessageOptions ?? ({}), null); r4 = object; } else { r4 = value4 == null ? value3 : value4.sendMessageOptions; } object2.sendMessageOptions = r4; _writeMessageBinding(keyBinding, object2); return value3; } } function removeCachedMessage(a0) { // fn#100070, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2587, offset: 0x021dd6d7, size: 32 bytes, params: 2, frame: 11 const env0_0 = a0; return env0_16(_fun100071); function _fun100071() { // fn#100071, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2593, offset: 0x021dd6f7, size: 26 bytes, params: 1, frame: 13 return _writeMessage(env0_0, null); } } function removeCachedMessageWithMessageId(a0) { // fn#100072, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2654, offset: 0x021dd711, size: 32 bytes, params: 2, frame: 11 const env0_0 = a0; return env0_16(_fun100073); function _fun100073() { // fn#100073, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2660, offset: 0x021dd731, size: 129 bytes, params: 1, frame: 20 var r4; var r3; var property; var value6; var id; var value7; const binding = env0_0; const _getMessagesBinding = _getMessages; const value2 = undefined; const value3 = _getMessagesBinding(); const Object = global.Object; const value4 = Object.entries(value3); let length = value4.length; const value5 = 0; if (value5 < length) { r4 = value5; while (true) { property = value4[r4]; value6 = env1_10(property, 2); property = value6[value5]; id = value6[1].id; if (id === binding) { r3 = property; break; } value7 = typeof r4 === 'bigint' ? r4 + 1n : +r4 + 1; length = value4.length; if (value7 < length) { r4 = value7; continue; } r3 = value2; break; } } else { r3 = value2; } if (r3 != null) { _writeMessage(r3, null); } return value2; } } function updateCachedMessage(a0, a1) { // fn#100074, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2852, offset: 0x021dd7b2, size: 39 bytes, params: 3, frame: 11 const env0_0 = a0; const env0_1 = a1; return env0_16(_fun100075); function _fun100075() { // fn#100075, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2862, offset: 0x021dd7d9, size: 66 bytes, params: 1, frame: 14 var object; const value3 = _getMessage(env0_0); if (value3 != null) { object = {}; copyDataProperties(object, require, copyDataProperties(object, value3, value3)); _writeMessage(env0_0, object); } } } function getAllCachedMessages() { // fn#100076, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:2956, offset: 0x021dd81b, size: 20 bytes, params: 1, frame: 11 return env0_16(_getMessages); } function messageTimestampIsInInterval(a0, a1) { // fn#100077, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3005, offset: 0x021dd82f, size: 90 bytes, params: 3, frame: 17 if (a0 != null) { return (require(3826) /* metro dependency 3826: DateUtils */).isWithinInterval((importDefault(3738) /* metro dependency 3738 */)(), (importDefault(3738) /* metro dependency 3738 */)(a0), a1); } return false; } function createFailedMessage({channel_id, content, tts, state, timestamp, file}) { // fn#100078, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3127, offset: 0x021dd889, size: 210 bytes, params: 2, frame: 24 const defaultImport = CreateMessage; const SEND_FAILED = MessageStates.SEND_FAILED; const value2 = defaultImport({channelId: channel_id, content: content, tts: tts, state: SEND_FAILED}); value2.timestamp = timestamp; const defaultImport2 = MessageActionCreators; const receiveMessage = defaultImport2.receiveMessage; const SENDING = MessageStates.SENDING; Reflect.apply(receiveMessage, defaultImport2, [channel_id, value2, true, {isHydratingExpiredPendingMessage: state === SENDING}]); if (file != null) { (importDefault(694) /* metro dependency 694: Dispatcher */).wait(_fun100079); } function _fun100079() { // fn#100079, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3384, offset: 0x021dd95b, size: 55 bytes, params: 1, frame: 13 let value = environment.__proto__; value = importDefault(11420) /* metro dependency 11420: UploadActionCreators */; return value.restoreFailedUpload(env0_0.id, file); } } function _fun100080() { // fn#100080, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3430, offset: 0x021dd992, size: 36 bytes, params: 1, frame: 12 const env0_0 = Module00005(_fun100082); return _fun100083; function* _fun100082(a0) { // fn#100082, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3450, offset: 0x021dd9c1, size: 208 bytes, params: 2, frame: 21 if (false) { return undefined; } const channel_id = a0.channel_id; const file = a0.file; const sendMessageOptions = a0.sendMessageOptions; value = environment.__proto__.__proto__; let binding = env2_13; const channel = binding.getChannel(channel_id); if (channel == null) { return false; } const value4 = undefined; const r4 = (file == null ? value4 : file.items) ?? value4; binding = env2_0; const binding2 = env2_2; const value5 = binding(binding2[25]); let property = binding2[24]; yield value5(property, binding2.paths); const value6 = undefined; if (false) { return value6; } property = value6.default; binding = env2_11; const object = {}; copyDataProperties(object, a0, undefined); property(channel, new binding(object), r4, sendMessageOptions); return true; } function _fun100083() { // fn#100083, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3687, offset: 0x00c3945f, size: 30 bytes, params: 1, frame: 13 return env0_0.apply(this, arguments); } } function _fun100084() { // fn#100084, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3735, offset: 0x021dda91, size: 36 bytes, params: 1, frame: 12 const env0_0 = Module00005(_fun100086); return _fun100087; function* _fun100086(a0) { // fn#100086, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:3755, offset: 0x021ddac0, size: 460 bytes, params: 2, frame: 33 var r14; var propertyName; var propertyName2; var property; var channel_id; var getMessage; var id; var timestamp; var state; var SENDING; var info; var JSON; var stringify; var value5; var value6; var value7; var value8; if (true) { value = environment.__proto__.__proto__; yield env2_28(); var value3 = undefined; if (false) { return value3; } var binding = env2_17; var verbose = binding.verbose; var Object = global.Object; var length = Object.keys(value3).length; var HermesInternal = global.HermesInternal; Reflect.apply(verbose, binding, ['rehydrateFailedMessages with ' + length + ' messagess']); var properties = Object.keys(value3); var properties2 = 0; var properties3 = properties.length; if (properties !== undefined) { r14 = properties2; reducibleLoop4: while (true) { propertyName = properties[r14]; propertyName2 = r14 + 1; if (propertyName === undefined) { return undefined; } property = value3[propertyName]; channel_id = property.channel_id; if (channel_id !== a0) { r14 = propertyName2; continue reducibleLoop4; } env2_25(propertyName); binding = env2_14; getMessage = binding.getMessage; id = property.id; if (Reflect.apply(getMessage, binding, [a0, id]) != null) { r14 = propertyName2; continue reducibleLoop4; } timestamp = property.timestamp; state = property.state; binding = env2_29; if (binding(timestamp, env2_19)) { SENDING = env2_15.SENDING; if (state === SENDING) { binding = env2_29; reducibleJoin11: while (true) { if (binding(timestamp, env2_18)) { binding = env2_17; verbose = binding.verbose; JSON = global.JSON; stringify = JSON.stringify; value6 = Reflect.apply(stringify, JSON, [property]); HermesInternal = global.HermesInternal; concat = HermesInternal.concat; Reflect.apply(verbose, binding, ['sending message with data ' + value6]); yield env2_31(property); value7 = undefined; value8 = false; if (value8) { return value7; } r14 = propertyName2; continue reducibleLoop4; } break reducibleJoin11; } } binding = env2_17; info = binding.info; JSON = global.JSON; stringify = JSON.stringify; value5 = Reflect.apply(stringify, JSON, [property]); HermesInternal = global.HermesInternal; concat = HermesInternal.concat; Reflect.apply(info, binding, ['failed message with data ' + value5]); env2_30(property); r14 = propertyName2; continue reducibleLoop4; } binding = env2_17; verbose = binding.verbose; HermesInternal = global.HermesInternal; concat = HermesInternal.concat; Reflect.apply(verbose, binding, ['dropping stale message, timestamp ' + timestamp]); r14 = propertyName2; continue reducibleLoop4; } } } } function _fun100087() { // fn#100087, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4310, offset: 0x00c3945f, size: 30 bytes, params: 1, frame: 13 return env0_0.apply(this, arguments); } } function _fun100088(a0) { // fn#100088, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4380, offset: 0x021ddc8c, size: 97 bytes, params: 2, frame: 16 const LocalMessageCacheManager2 = LocalMessageCacheManager; Inherits(LocalMessageCacheManager2, a0); return CreateClass(LocalMessageCacheManager2, [{key: '_terminate', value: value_100112}, {key: '_initialize', value: value_100113}]); function LocalMessageCacheManager(a0) { // fn#100089, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4392, offset: 0x021ddced, size: 364 bytes, params: 2, frame: 21 var r0; var Reflect; let value = copyRestArgs(0, undefined); let binding = env1_3; binding(this, LocalMessageCacheManager); const items2 = []; arraySpread(items2, value, 0, items2); value = env1_6(LocalMessageCacheManager); binding = env1_5; if (_isNativeReflectConstruct_100061()) { Reflect = global.Reflect; value = Reflect.construct(value, items2, env1_6(this).constructor); r0 = value; } else { value = value.apply(this, items2); r0 = value; } value = binding(this, r0); const Object = global.Object; const defineProperty = Object.defineProperty; binding = env1_33; const Set = global.Set; const value4 = Object.create(Set.prototype, {constructor: {value: Set}}); const set = new Set(); Reflect.apply(defineProperty, Object, [value, binding, {writable: true, value: set instanceof Object ? set : value4}]); value.handlePostConnectionOpen = env1_9(_fun100091); value.handleMessageDelete = function({id}) { removeCachedMessageWithMessageId(id); }; value.handleLogout = handleLogout_100096; value.handleMessageCreate = handleMessageCreate_100098; value.handleLoadMessagesSuccess = handleLoadMessagesSuccess_100099; value.handleCacheLoaded = handleCacheLoaded; value.handleChannelLoaded = _fun100101(); value.handleFileUploadStart = handleFileUploadStart; value.handleUploadProgress = handleUploadProgress; value.handleUploadComplete = handleUploadComplete; value.handleRestoreFailedUpload = function({file, messageId}) { updateCachedMessage(messageId, {file: file}); }; value.handleTextMessageFailed = function({messageId}) { updateCachedMessage(messageId, {state: MessageStates.SEND_FAILED}); }; return value; function* _fun100091() { // fn#100091, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4735, offset: 0x021dde64, size: 406 bytes, params: 1, frame: 30 var r20; var environment; var r2; var r4; var r5; var r6; var r7; var r8; var r9; var r14; var r18; var r19; var r21; var r3; var property; var channel_id; var state; var Symbol; var iterator; var next; var done; var error; var value15; var value16; var value17; var value18; var value19; let value = Object.create(environment); if (false) { return undefined; } const value4 = undefined; var env0_0; yield env3_28(); const value6 = undefined; if (false) { return value6; } const generator = loop_100093; const value8 = global; const Object = value8.Object; const value9 = Object.values(value6); let length = value9.length; const value10 = 0; if (value10 < length) { r2 = value4; r4 = 'iterator.next() did not return an object'; r5 = 'throw'; r6 = 'iterator.throw() did not return an object'; r7 = 'iterator is not an object'; r8 = value10; r9 = value9; reducibleLoop4: while (true) { property = r9[r8]; channel_id = property.channel_id; state = property.state; env0_0 = state; value = Reflect.apply(generator, r2, [channel_id]); Symbol = value8.Symbol; iterator = Symbol.iterator; value = value[iterator](); ensureObject(value, r7, r20); next = value.next; r14 = value; r18 = value4; r19 = next; reduciblePort22: while (true) { exceptionLanding8: while (true) { reducibleLoop5: while (true) { value = Reflect.apply(r19, r14, [r18]); ensureObject(value, r4, r20); done = value.done; if (done) { r3 = value; break reduciblePort22; } try { generatorSetDelegated(value); } catch (error) { break exceptionLanding8; } yield value; reducibleLoop11: while (true) { try { value = undefined; value15 = false; } catch (error) { break exceptionLanding8; } if (value15) { value16 = getMethod(r14, 'return', r20); if (value16 === r2) { return value; } value = Reflect.apply(value16, r14, [value]); ensureObject(value, 'iterator.return() did not return an object', value16); done = value.done; if (done) { return value.value; } value17 = generatorSetDelegated(value); yield value; r20 = value17; continue reducibleLoop11; } r18 = value; continue reducibleLoop5; } continue reducibleLoop5; } break reduciblePort22; } exceptionRetry8: while (true) { value = getMethod(r14, r5, r20); if (value === r2) { value = 'return'; value18 = getMethod(r14, value, r20); reducibleJoin21: while (true) { if (value18 === r2) { r21 = value; break reducibleJoin21; } value = Reflect.apply(value18, r14, []); value19 = 'iterator.return() did not return an object'; ensureObject(value, value19, r20); r21 = value19; break reducibleJoin21; } throwTypeError('yield* delegate must have a .throw() method', r21); throw r2; } value = Reflect.apply(value, r14, [error]); ensureObject(value, r6, r20); done = value.done; reducibleJoin22: while (true) { if (done) { r3 = value; break reducibleJoin22; } generatorSetDelegated(value); yield value; reducibleLoop11: while (true) { try { value = undefined; value15 = false; } catch (error) { continue exceptionRetry8; } reducibleJoin13: while (true) { if (value15) { break reducibleJoin13; } r18 = value; value = Reflect.apply(r19, r14, [r18]); ensureObject(value, r4, r20); done = value.done; if (done) { r3 = value; break reducibleJoin22; } try { generatorSetDelegated(value); } catch (error) { continue exceptionRetry8; } yield value; continue reducibleLoop11; } value16 = getMethod(r14, 'return', r20); if (value16 === r2) { return value; } value = Reflect.apply(value16, r14, [value]); ensureObject(value, 'iterator.return() did not return an object', value16); done = value.done; if (done) { return value.value; } value17 = generatorSetDelegated(value); yield value; r20 = value17; continue reducibleLoop11; } } break reduciblePort22; } } r3.value; value = typeof r8 === 'bigint' ? r8 + 1n : +r8 + 1; length = r9.length; if (!(value < length)) { return r2; } r8 = value; continue reducibleLoop4; } } else { r2 = value4; } return r2; function* loop_100093(a0) { // fn#100093, original name: ?anon_0__loop, inferred name: loop_100093, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4792, offset: 0x021de005, size: 73 bytes, params: 2, frame: 14 var environment; if (true) { var env0_0 = a0; value = environment.__proto__; var binding = env1_0; value = environment.__proto__.__proto__.__proto__.__proto__.__proto__; var SENDING = env5_15.SENDING; if (binding === SENDING) { global.setTimeout(_fun100094, 0); } } function _fun100094() { // fn#100094, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:4832, offset: 0x021de04e, size: 51 bytes, params: 1, frame: 13 const value = environment.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__; env6_1(env6_2[26]).fetchMessages({channelId: env0_0}); } } } function LocalMessageCacheManagerHandleLogout() { // fn#100096, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5060, owner: LocalMessageCacheManager.handleLogout, offset: 0x021de099, size: 25 bytes, params: 1, frame: 11 env2_16(function() { var Storage = require(dependencyMap[17]).Storage; return Storage.remove('LocalMessageCacheManagerMessageCacheKey'); }); } function LocalMessageCacheManagerHandleMessageCreate({message, sendMessageOptions}) { // fn#100098, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5125, owner: LocalMessageCacheManager.handleMessageCreate, offset: 0x021de0e4, size: 192 bytes, params: 2, frame: 17 var r5; var binding; var binding2; var binding3; var property; const id = message.author?.id; const authenticationStoreBinding = AuthenticationStore; const getId = authenticationStoreBinding.getId; if (id === Reflect.apply(getId, authenticationStoreBinding, [])) { r5 = message.nonce ?? message.id; if (message.state === MessageStates.SENDING) { binding = env2_8; binding2 = env0_0; binding3 = env2_33; property = binding(binding2, binding3)[binding3]; property.add(message.channel_id); cacheSendingMessage({key: r5, message: message, sendMessageOptions: sendMessageOptions}); } else if (message.state === MessageStates.SEND_FAILED) { binding = env2_8; binding2 = env0_0; binding3 = env2_33; property = binding(binding2, binding3)[binding3]; property.add(message.channel_id); cacheSendingMessage({key: r5, message: message, sendMessageOptions: sendMessageOptions}); } else { removeCachedMessage(r5); } } } function LocalMessageCacheManagerHandleLoadMessagesSuccess({channelId}) { // fn#100099, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5438, owner: LocalMessageCacheManager.handleLoadMessagesSuccess, offset: 0x021de1a4, size: 30 bytes, params: 2, frame: 11 env0_0.handleChannelLoaded(channelId); } function handleCacheLoaded({privateChannels, initialGuildChannels}) { // fn#100100, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5502, owner: LocalMessageCacheManager.handleCacheLoaded, offset: 0x021de1c2, size: 128 bytes, params: 2, frame: 18 var r4; var r6; var value4; var done; var value5; var id; var binding; var handleChannelLoaded; var value6; const items2 = [privateChannels, initialGuildChannels]; let length = items2.length; let value = 0; if (value < length) { r4 = value; reducibleLoop1: while (true) { value = _createForOfIteratorHelperLoose_100058(items2[r4]); value4 = value(); done = value4.done; if (!done) { r6 = value4; reducibleLoop2: while (true) { value5 = r6.value; id = value5.id; binding = env0_0; handleChannelLoaded = binding.handleChannelLoaded; Reflect.apply(handleChannelLoaded, binding, [id]); value6 = value(); done = value6.done; if (done) { break reducibleLoop2; } r6 = value6; continue reducibleLoop2; } } value = typeof r4 === 'bigint' ? r4 + 1n : +r4 + 1; length = items2.length; if (value < length) { r4 = value; continue reducibleLoop1; } break reducibleLoop1; } } } function _fun100101() { // fn#100101, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5716, offset: 0x021de242, size: 36 bytes, params: 1, frame: 12 const env0_0 = env2_9(_fun100103); return _fun100104; function* _fun100103(a0) { // fn#100103, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5736, offset: 0x021de271, size: 91 bytes, params: 2, frame: 16 if (true) { value = environment.__proto__.__proto__.__proto__.__proto__; var binding = env4_8; var binding2 = env4_33; var property = binding(LocalMessageCacheManager, binding2)[binding2]; if (property.has(a0)) { return undefined; } property.add(a0); yield env4_32(a0); } } function _fun100104(a0) { // fn#100104, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5807, offset: 0x00c3945f, size: 30 bytes, params: 2, frame: 13 return env0_0.apply(this, arguments); } } function handleFileUploadStart({message, file}) { // fn#100105, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:5878, owner: LocalMessageCacheManager.handleFileUploadStart, offset: 0x021de2cc, size: 68 bytes, params: 2, frame: 13 var r4; var value; if (message != null) { r4 = message.nonce ?? message.id; value = environment.__proto__.__proto__; cacheSendingMessage({key: r4, message: message, file: file}); } } function handleUploadProgress({file}) { // fn#100106, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:6021, owner: LocalMessageCacheManager.handleUploadProgress, offset: 0x021de310, size: 38 bytes, params: 2, frame: 11 env2_16(function() { var value3 = _getKeyForFileId(file.id); if (value3 != null) { updateCachedMessage(value3, {file: file}); } }); } function handleUploadComplete({aborted, file}) { // fn#100108, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:6139, owner: LocalMessageCacheManager.handleUploadComplete, offset: 0x021de36d, size: 51 bytes, params: 2, frame: 13 var environment; var value; if (aborted) { value = environment.__proto__.__proto__; env2_16(function() { var value3 = _getKeyForFileId(file.id); if (value3 != null) { _writeMessage(value3, null); } }); } } } function value_100112() { // fn#100112, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:6516, offset: 0x021de41b, size: 368 bytes, params: 1, frame: 18 let value = environment.__proto__; value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('LOGOUT', this.handleLogout); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('MESSAGE_CREATE', this.handleMessageCreate); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('MESSAGE_SEND_FAILED', this.handleTextMessageFailed); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('UPLOAD_START', this.handleFileUploadStart); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('MESSAGE_DELETE', this.handleMessageDelete); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('UPLOAD_RESTORE_FAILED_UPLOAD', this.handleRestoreFailedUpload); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('UPLOAD_COMPLETE', this.handleUploadComplete); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('UPLOAD_PROGRESS', this.handleUploadProgress); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('LOAD_MESSAGES_SUCCESS', this.handleLoadMessagesSuccess); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('CACHE_LOADED', this.handleCacheLoaded); value = importDefault(694) /* metro dependency 694: Dispatcher */; value.unsubscribe('POST_CONNECTION_OPEN', this.handlePostConnectionOpen); } function value_100113() { // fn#100113, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:7307, offset: 0x021de58b, size: 353 bytes, params: 1, frame: 20 env1_17.verbose('cache manager initialize'); const defaultImport = Dispatcher; defaultImport.subscribe('LOGOUT', this.handleLogout); const defaultImport2 = defaultImport; defaultImport2.subscribe('MESSAGE_CREATE', this.handleMessageCreate); const defaultImport3 = defaultImport; defaultImport3.subscribe('MESSAGE_SEND_FAILED', this.handleTextMessageFailed); const defaultImport4 = defaultImport; defaultImport4.subscribe('UPLOAD_START', this.handleFileUploadStart); const defaultImport5 = defaultImport; defaultImport5.subscribe('MESSAGE_DELETE', this.handleMessageDelete); const defaultImport6 = defaultImport; defaultImport6.subscribe('UPLOAD_RESTORE_FAILED_UPLOAD', this.handleRestoreFailedUpload); const defaultImport7 = defaultImport; defaultImport7.subscribe('UPLOAD_COMPLETE', this.handleUploadComplete); const defaultImport8 = defaultImport; defaultImport8.subscribe('UPLOAD_PROGRESS', this.handleUploadProgress); const defaultImport9 = defaultImport; defaultImport9.subscribe('POST_CONNECTION_OPEN', this.handlePostConnectionOpen); env1_9(_fun100115)(); function* _fun100115() { // fn#100115, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13284:7969, offset: 0x021de6f7, size: 435 bytes, params: 1, frame: 34 var r14; var r6; var channel_id; var value8; var get; var value9; var ready; var cached; var handleChannelLoaded; var value10; var value11; var value12; var binding2; var subscribe; if (true) { value = environment.__proto__.__proto__.__proto__; yield env3_28(); var value3 = undefined; if (false) { return value3; } var binding = env3_17; var verbose = binding.verbose; var Object = global.Object; var length = Object.keys(value3).length; var HermesInternal = global.HermesInternal; Reflect.apply(verbose, binding, ['initialized with ' + length + ' messages in local cache']); Object = global.Object; var value5 = Object.values(value3); length = value5.length; var value6 = 0; if (value6 < length) { r14 = value6; reducibleLoop4: while (true) { channel_id = value5[r14].channel_id; binding = env3_1; value8 = binding(env3_2[27]); get = value8.get; value9 = Reflect.apply(get, value8, [channel_id]); reducibleJoin6: while (true) { if (value9 != null) { r6 = value9; break reducibleJoin6; } r6 = {'ready': false, 'cached': false}; break reducibleJoin6; } ready = r6.ready; cached = r6.cached; binding = env3_17; verbose = binding.verbose; HermesInternal = global.HermesInternal; concat = HermesInternal.concat; Reflect.apply(verbose, binding, ['rehydrating cached messages ' + channel_id + ' {ready: ' + ready + ', cached: ' + cached + '}']); if (ready) { binding = env3_17; verbose = binding.verbose; Reflect.apply(verbose, binding, ['manually invoking handleChannelLoaded']); handleChannelLoaded = LocalMessageCacheManager.handleChannelLoaded; yield Reflect.apply(handleChannelLoaded, LocalMessageCacheManager, [channel_id]); value10 = undefined; value11 = false; reducibleJoin9: while (true) { if (value11) { return value10; } break reducibleJoin9; } } value12 = typeof r14 === 'bigint' ? r14 + 1n : +r14 + 1; length = value5.length; if (!(value12 < length)) { binding = env3_1; binding2 = env3_2; value = binding(binding2[22]); subscribe = value.subscribe; Reflect.apply(subscribe, value, ['LOAD_MESSAGES_SUCCESS', LocalMessageCacheManager.handleLoadMessagesSuccess]); value = binding(binding2[22]); subscribe = value.subscribe; Reflect.apply(subscribe, value, ['CACHE_LOADED', LocalMessageCacheManager.handleCacheLoaded]); return undefined; } r14 = value12; continue reducibleLoop4; } } binding = env3_1; binding2 = env3_2; value = binding(binding2[22]); value.subscribe('LOAD_MESSAGES_SUCCESS', LocalMessageCacheManager.handleLoadMessagesSuccess); value = binding(binding2[22]); value.subscribe('CACHE_LOADED', LocalMessageCacheManager.handleCacheLoaded); } } } } } global.__d(_fun100057, 13094, [6, 7, 15, 17, 18, 99, 100, 5, 57, 3794, 1226, 1379, 4814, 661, 13095, 3, 672, 587, 3738, 3826, 7141, 7067, 694, 11420, 11170, 1962, 9597, 4816, 4561, 2]) /* metro module 13094, dependencies: [6, 7, 15, 17, 18, 99, 100, 5, 57, 3794, 1226, 1379, 4814, 661, 13095, 3, 672, 587, 3738, 3826, 7141, 7067, 694, 11420, 11170, 1962, 9597, 4816, 4561, 2] */;