/* Metro module 9835; source: modules/messages/native/MessagesUtils.tsx; dependencies: [57, 5, 7729, 4833, 1379, 1945, 4798, 4814, 4401, 3784, 4605, 1878, 8178, 661, 4631, 4627, 1909, 4841, 7151, 6664, 3773, 3857, 1244, 9836, 9837, 1900, 4081, 4082, 8919, 7153, 7155, 4863, 6797, 4800, 21, 3856, 9849, 14, 22, 477, 1583, 683, 9850, 7067, 6531, 4044, 9484, 9854, 2] */ import Module00005 from '../../../by-id/module-00005.js'; /* Metro dependency 5 */ import TTITracker from '../../tti_analytics/TTITracker.tsx'; /* Metro dependency 14 */ import Module00022 from '../../../by-id/module-00022.js'; /* Metro dependency 22 */ import Module00057 from '../../../by-id/module-00057.js'; /* Metro dependency 57 */ import AnalyticsUtils from '../../../utils/AnalyticsUtils.tsx'; /* Metro dependency 683 */ import ChannelStore from '../../../stores/ChannelStore.tsx'; /* Metro dependency 1379 */ import UserStore from '../../../stores/UserStore.tsx'; /* Metro dependency 1878 */ import GuildMemberStore from '../../../stores/GuildMemberStore.tsx'; /* Metro dependency 1945 */ import PermissionStore from '../../../stores/PermissionStore.tsx'; /* Metro dependency 3784 */ import HapticFeedbackTypes from '../../haptics/HapticFeedbackTypes.tsx'; /* Metro dependency 4082 */ import NetworkStore from '../../../stores/NetworkStore.tsx'; /* Metro dependency 4401 */ import ReadStateStore from '../../../stores/ReadStateStore.tsx'; /* Metro dependency 4605 */ import GuildVerificationStore from '../../../stores/GuildVerificationStore.tsx'; /* Metro dependency 4798 */ import MessageStore from '../../../stores/MessageStore.tsx'; /* Metro dependency 4814 */ import ReferencedMessageStore from '../../replies/ReferencedMessageStore.tsx'; /* Metro dependency 4833 */ import ThreadActionCreators from '../../threads/ThreadActionCreators.tsx'; /* Metro dependency 7153 */ import NativeChatUtils from '../../chat/native/NativeChatUtils.tsx'; /* Metro dependency 9850 */ import * as FileImportTrackerModule from '../../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as PlatformUtilsModule from '../../../utils/PlatformUtils.tsx'; /* Metro dependency 477 */ import * as ToastUtilsModule from '../../toast/native/ToastUtils.tsx'; /* Metro dependency 3856 */ import * as ClientModule from '../../../flow/Client.tsx'; /* Metro dependency 4044 */ import * as HapticUtilsNativeModule from '../../haptics/HapticUtils.native.tsx'; /* Metro dependency 4081 */ import * as ExplicitMediaRedactionModelsModule from '../../explicit_media_redaction/ExplicitMediaRedactionModels.tsx'; /* Metro dependency 4841 */ import * as TrackingModule from '../../forums/tracking/Tracking.tsx'; /* Metro dependency 7155 */ import * as UseChatBottomManagerUIStoreModule from '../../chat_input/native/useChatBottomManagerUIStore.tsx'; /* Metro dependency 7729 */ import * as RowGeneratorConstantsModule from './renderer/RowGeneratorConstants.tsx'; /* Metro dependency 8178 */ function _fun77013(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#77013, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:6, offset: 0x01ded2ec, size: 925 bytes, params: 8, frame: 23 const env0_0 = require; const _arrayLikeToArray_77016 = 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 getVisibleMessages2 = getVisibleMessages; const recordTimings2 = recordTimings; const getMessage_770202 = getMessage_77020; const maybeRescrollToMessageId2 = maybeRescrollToMessageId; let Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = RowGeneratorConstantsModule; const env0_15 = value.RowType; const env0_16 = value.Changeset; value = require(661) /* metro dependency 661: Constants */; const env0_17 = value.AnalyticEvents; const env0_18 = value.MessageEmbedTypes; const env0_19 = value.MessageTypes; const env0_20 = value.Permissions; const env0_21 = value.MAX_MESSAGES_PER_CHANNEL; (FileImportTrackerModule).fileFinishedImporting('modules/messages/native/MessagesUtils.tsx'); exports.getLongPressSelectedMedia = getLongPressSelectedMedia; exports.toObscuredMedia = toObscuredMedia; exports.handleAddOrRemoveReaction = handleAddOrRemoveReaction; exports.handleToggleFollowForumPost = handleToggleFollowForumPost; exports.handleCopyLinkForumPost = handleCopyLinkForumPost; exports.findMessageIndex = findMessageIndex; exports.getVisibleMessages = getVisibleMessages2; exports.shouldJumpToOriginalPost = shouldJumpToOriginalPost; exports.startOrCancelChannelLatestMessagesLoad = function(a0) { if (a0.jumpTargetId != null) { a0.tracker.cancel(); } else if (a0.oldestUnreadMessageId != null) { a0.tracker.cancel(); } else if (a0.shouldJumpToOriginalPost) { a0.tracker.cancel(); } else { a0.tracker.start({channelId: a0.channelId}); } }; exports.recordTimings = recordTimings2; exports.findMessageIndexInRows = findMessageIndexInRows; exports.getMessage = getMessage_770202; exports.isLoadingAtTop = isLoadingAtTop; exports.handleTapTableView = handleTapTableView; exports.handleMediaPlayFinishedAnalytics = handleMediaPlayFinishedAnalytics; exports.scrollToBottom = scrollToBottom; exports.scrollToTop = scrollToTop_77044; exports.scrollToRelativeOffset = scrollToRelativeOffset; exports.scrollToTopMessage = scrollToTopMessage; exports.canAddNewReactions = canAddNewReactions; exports.loadMoreBefore = loadMoreBefore; exports.loadMoreAfter = loadMoreAfter; exports.clearRows = clearRows; exports.handleFirstLayout = function(a0, a1, a2, a3, a4) { var object = {firstVisibleMessageRowIndex: a1, lastVisibleMessageRowIndex: a2, firstVisibleMessagePercentVisible: a3, lastVisibleMessagePercentVisible: a4}; object.source = require(dependencyMap[44]).QuestsVisibleMessagesChangedSource.FIRST_LAYOUT; a0(object); }; exports.handleMessageVisibilityChanged = function(a0, a1, a2, a3, a4) { var object = {firstVisibleMessageRowIndex: a1, lastVisibleMessageRowIndex: a2, firstVisibleMessagePercentVisible: a3, lastVisibleMessagePercentVisible: a4}; object.source = require(dependencyMap[44]).QuestsVisibleMessagesChangedSource.VISIBILITY_CHANGED; a0(object); }; exports.handleLongPressSticker = function(a0, a1, a2) { var value = a0; var Set = global.Set; var value3 = new Set([value]); var value5 = null; if (value5 != a1) { value3.add(a1); } var r0 = a1 === value ? value5 : value; a2({forceRender: true, updateMessageIds: value3}); return r0; }; exports.handleTapNavBar = function() { return _handleTapNavBar.apply(this, arguments); }; exports.jumpToPresent = jumpToPresent_77055; exports.scrollToNewMessages = scrollToNewMessages; exports.syncMessageDisplay = syncMessageDisplay; exports.getChatRef = function(a0) { return a0; }; exports.maybeRescrollToMessageId = maybeRescrollToMessageId2; exports.scrollToMessageIdWithRescroll = scrollToMessageIdWithRescroll; exports.handleVisibleMessagesChange = handleVisibleMessagesChange; exports.getVoiceStateChannelSummaryFromVoiceStates = function(a0) { var Object = global.Object; var value = Object.entries(a0); value = value.filter(_fun77064); value = value.map(_fun77065); value = value.sort(); return value.join('|'); }; exports.getVoiceChannelIdChangedAuthorIds = getVoiceChannelIdChangedAuthorIds; function _createForOfIteratorHelperLoose_77014(a0, a1) { // fn#77014, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:412, offset: 0x01ded689, 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 _fun77015; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_77016(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_77016(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_77016(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun77015; } 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 _fun77015() { // fn#77015, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:983, 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 getVisibleMessages({firstVisibleMessageRowIndex, lastVisibleMessageRowIndex, firstVisibleMessagePercentVisible, lastVisibleMessagePercentVisible, chatManager, channelId}) { // fn#77017, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:1322, offset: 0x01ded7fd, size: 350 bytes, params: 2, frame: 33 var r4; var id; var r21; var r19; var _rows; var _messages; var items2; var value; var value2; var value3; var property; var type; var MESSAGE; var message; var value4; var value5; var messageStoreBinding; var getMessage; var value6; var push; var state; var value7; if (firstVisibleMessageRowIndex != null) { reducibleJoin21: while (true) { if (lastVisibleMessageRowIndex == null) { break reducibleJoin21; } if (firstVisibleMessageRowIndex < 0) { break reducibleJoin21; } if (lastVisibleMessageRowIndex < 0) { break reducibleJoin21; } _rows = chatManager._rows; if (_rows == null) { break reducibleJoin21; } _messages = chatManager._messages; if (_messages != null) { items2 = []; value = environment; value2 = 1; value3 = undefined; if (firstVisibleMessageRowIndex >= lastVisibleMessageRowIndex) { r4 = firstVisibleMessageRowIndex; reducibleLoop7: while (true) { _rows = chatManager._rows; property = _rows[r4]; reducibleJoin19: while (true) { if (property == null) { break reducibleJoin19; } type = property.type; MESSAGE = RowType.MESSAGE; if (type !== MESSAGE) { break reducibleJoin19; } message = property.message; reducibleJoin11: while (true) { if (message == null) { id = value3; break reducibleJoin11; } id = message.id; break reducibleJoin11; } if (id == null) { break reducibleJoin19; } reducibleJoin17: while (true) { reducibleJoin16: while (true) { if (r4 !== firstVisibleMessageRowIndex) { value4 = r4 === lastVisibleMessageRowIndex; if (value4) { value5 = lastVisibleMessagePercentVisible != null; r21 = value5; break reducibleJoin16; } r21 = value4; break reducibleJoin16; } if (firstVisibleMessagePercentVisible != null) { r19 = firstVisibleMessagePercentVisible; break reducibleJoin17; } value4 = r4 === lastVisibleMessageRowIndex; if (value4) { value5 = lastVisibleMessagePercentVisible != null; r21 = value5; break reducibleJoin16; } r21 = value4; break reducibleJoin16; } if (r21) { r19 = lastVisibleMessagePercentVisible; break reducibleJoin17; } r19 = value2; break reducibleJoin17; } message = property.message; id = message.id; messageStoreBinding = MessageStore; getMessage = messageStoreBinding.getMessage; value6 = Reflect.apply(getMessage, messageStoreBinding, [channelId, id]); if (value6 == null) { break reducibleJoin19; } push = items2.push; state = value6.state; Reflect.apply(push, items2, [{message: value6, percentVisible: r19, state: state}]); break reducibleJoin19; } value7 = typeof r4 === 'bigint' ? r4 - 1n : +r4 - 1; if (value7 >= lastVisibleMessageRowIndex) { r4 = value7; continue reducibleLoop7; } break reducibleLoop7; } } return items2; } break reducibleJoin21; } } return []; } function recordTimings(a0, a1) { // fn#77018, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:1859, offset: 0x01ded95b, size: 107 bytes, params: 3, frame: 19 TTITracker.recordMessageRender(a0, a1.map(function(a0) { return a0.id; }), a1.hasFetched || a1.ready && !a1.cached, a1.hasMoreAfter); } function getMessage_77020(a0, a1) { // fn#77020, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:1984, offset: 0x01ded9c6, size: 68 bytes, params: 3, frame: 14 const env0_0 = a1; return Module00022.find(a0.toArray(), _fun77021); function _fun77021({id, nonce}) { // fn#77021, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2043, offset: 0x01da3f3d, size: 38 bytes, params: 2, frame: 4 return id === require || nonce === require; } } function _handleTapNavBar() { // fn#77022, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2076, offset: 0x01deda0a, size: 50 bytes, params: 1, frame: 14 return Module00005(_fun77024).apply(this, arguments); function* _fun77024({channel, useReducedMotion, isNearTop, messages, findMessageIndex, scrollToTop, chatRef}) { // fn#77024, original name: ?anon_0_, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2131, offset: 0x01deda47, size: 395 bytes, params: 2, frame: 24 var environment; var binding; var value3; var castChannelIdAsMessageId; var id; var value5; var messageIndex; var object; var setTimeout; var value6; var fetchMessages; let value = undefined; if (false) { return value; } if (channel.isForumPost()) { if (isNearTop) { return undefined; } value = environment.__proto__.__proto__; binding = env2_26; value3 = env2_1(env2_2[34]); castChannelIdAsMessageId = value3.castChannelIdAsMessageId; id = channel.id; if (binding(messages, Reflect.apply(castChannelIdAsMessageId, value3, [id])) == null) { value6 = env2_1(env2_2[43]); fetchMessages = value6.fetchMessages; object = {}; id = channel.id; object.channelId = id; id = channel.id; object.jump = {messageId: id, flash: false}; object.limit = env2_21; yield Reflect.apply(fetchMessages, value6, [object]); if (false) { return undefined; } global.setTimeout(function() { return scrollToTop(!useReducedMotion); }, 50); return undefined; } binding = env2_1; value5 = binding(env2_2[34]); castChannelIdAsMessageId = value5.castChannelIdAsMessageId; id = channel.id; messageIndex = findMessageIndex(Reflect.apply(castChannelIdAsMessageId, value5, [id])); if (messageIndex == null) { return undefined; } binding = env2_1; value = binding(env2_2[42]); value.scrollTo(chatRef.current, messageIndex, {animated: !useReducedMotion}); setTimeout = global.setTimeout; value = 10 * messageIndex; setTimeout(_fun77026, value); } function _fun77026() { // fn#77026, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2585, offset: 0x01d67cdf, size: 23 bytes, params: 1, frame: 11 return scrollToTop(!useReducedMotion); } } } function maybeRescrollToMessageId(a0, {chatRef, findMessageIndex, updateRows, updateRowsEnabled, jumpType}) { // fn#77027, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2645, offset: 0x01dedbd2, size: 145 bytes, params: 3, frame: 16 var INSTANT; const env0_0 = a0; const env0_4 = updateRowsEnabled !== undefined && updateRowsEnabled; if (jumpType === undefined) { INSTANT = (require(4044) /* metro dependency 4044: Client */).JumpTypes.INSTANT; } if (a0 != null) { global.setTimeout(_fun77028, 50); } function _fun77028() { // fn#77028, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:2851, offset: 0x01dedc63, size: 233 bytes, params: 1, frame: 20 var r1; var updateRowsBinding; var binding; var value3; const JumpTypes = (ClientModule).JumpTypes; var value4; var value5; var defaultImport; const messageIndex = findMessageIndex(env0_0); if (messageIndex != null) { if (chatRef.current != null) { if (env0_4) { updateRowsBinding = updateRows; binding = env0_0; value3 = environment.__proto__; value4 = true; updateRowsBinding({scrollToMessageId: binding, jumpTargetId: binding, jumpType: UseChatBottomManagerUIStoreModule.updateShouldShowJumpToPresentButton, focusTargetId: binding, overrideScrollJumpType: JumpTypes.INSTANT, isRescrolling: value4}); r1 = value4; } else { r1 = false; } if (!r1) { value5 = environment.__proto__; defaultImport = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; defaultImport.scrollTo(chatRef.current, messageIndex, {animated: UseChatBottomManagerUIStoreModule.updateShouldShowJumpToPresentButton === JumpTypes.ANIMATED}); } } } } } function parseVoiceStateChannelIdSummary(a0) { // fn#77029, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:3135, offset: 0x01dedd4c, size: 183 bytes, params: 2, frame: 25 var r2; var r1; var value7; var value8; var value9; var property; var property2; var set; var value10; const Map = global.Map; const map = new Map(); if (a0 != null) { var value2 = ''; if (value2 === a0) { return map; } var value5 = _createForOfIteratorHelperLoose_77014(a0.split('|')); var value6 = value5(); var done = value6.done; if (!done) { r2 = value6; while (true) { value7 = r2.value; value8 = value7.split(':'); value9 = Module00057(value8, 2); property = value9[0]; property2 = value9[1]; if (property != null) { set = map.set; if (property2 != null) { r1 = property2; continue; } r1 = value2; continue; Reflect.apply(set, map, [property, r1]); } value10 = value5(); done = value10.done; if (done) { break; } r2 = value10; continue; } } } return map; } function getLongPressSelectedMedia(a0, a1, a2, a3, a4) { // fn#77030, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:3489, offset: 0x01dede03, size: 954 bytes, params: 6, frame: 24 var url; var r9; var r0; var r3; var r6; var r5; var property; var media; var object; var getLongPressSelectedMediaGetEmbedMedia2; var video; var image; var contentMessage; var value6; var moduleValue; var moduleValue2; var moduleValue3; var content_type; let value = a0; let type = value.type; const THREAD_STARTER_MESSAGE = MessageTypes.THREAD_STARTER_MESSAGE; const r1 = type !== THREAD_STARTER_MESSAGE || value.messageReference == null ? value : ReferencedMessageStore.getMessageByReference(value.messageReference).message ?? value; if (a2 === 'attachment') { property = r1.attachments[a1]; value = null; if (value != property) { r3 = property; } else { contentMessage = r1.getContentMessage(); r3 = value == contentMessage ? undefined : contentMessage.attachments[a1]; } if (value == r3) { r0 = value; } else { object = {sourceType: 'attachment', source: r3}; value6 = undefined; moduleValue = require(4631) /* metro dependency 4631: MediaFormatTesters */; if (moduleValue.isVideoFile(r3.filename)) { r5 = 'video'; } else { moduleValue2 = require(4631) /* metro dependency 4631: MediaFormatTesters */; if (moduleValue2.isAudioFile(r3.filename)) { r6 = 'audio'; } else { moduleValue3 = require(4631) /* metro dependency 4631: MediaFormatTesters */; r6 = moduleValue3.isImageFile(r3.filename) ? 'image' : 'file'; } r5 = r6; } object.mediaType = r5; object.mediaUrl = r3.url; content_type = r3.content_type; object.contentType = value != content_type ? content_type : value6; r0 = object; } return r0; } if (a2 === 'embed') { property = r1.embeds[a1]; if (property == null) { return null; } getLongPressSelectedMediaGetEmbedMedia2 = getLongPressSelectedMediaGetEmbedMedia; type = property.type; if (type !== MessageEmbedTypes.IMAGE) { type = property.type; if (type !== MessageEmbedTypes.GIFV) { if (property.type !== MessageEmbedTypes.RICH) { return null; } image = property.image; value = undefined; url = image == null ? value : image.url; if (url != null) { image = property.image; url = image.url; image = property.image; return getLongPressSelectedMediaGetEmbedMedia2('image', url, image.contentType); } video = property.video; url = video == null ? value : video.url; if (url != null) { video = property.video; url = video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', url, video.contentType); } return null; } video = property.video; value = undefined; url = video == null ? value : video.url; if (url != null) { video = property.video; r9 = video.proxyURL == null ? property.video.url : property.video.proxyURL !== '' ? property.video.proxyURL : property.video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', r9, video.contentType); } type = property.type; if (type !== MessageEmbedTypes.RICH) { return null; } image = property.image; value = undefined; url = image == null ? value : image.url; if (url != null) { image = property.image; url = image.url; image = property.image; return getLongPressSelectedMediaGetEmbedMedia2('image', url, image.contentType); } video = property.video; url = video == null ? value : video.url; if (url != null) { video = property.video; url = video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', url, video.contentType); } return null; } url = property.url; if (url != null) { return getLongPressSelectedMediaGetEmbedMedia2('image', property.url); } type = property.type; if (type !== MessageEmbedTypes.GIFV) { if (property.type !== MessageEmbedTypes.RICH) { return null; } image = property.image; value = undefined; url = image == null ? value : image.url; if (url != null) { image = property.image; url = image.url; image = property.image; return getLongPressSelectedMediaGetEmbedMedia2('image', url, image.contentType); } video = property.video; url = video == null ? value : video.url; if (url != null) { video = property.video; url = video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', url, video.contentType); } return null; } video = property.video; value = undefined; url = video == null ? value : video.url; if (url != null) { video = property.video; r9 = video.proxyURL == null ? property.video.url : property.video.proxyURL !== '' ? property.video.proxyURL : property.video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', r9, video.contentType); } type = property.type; if (type !== MessageEmbedTypes.RICH) { return null; } image = property.image; value = undefined; url = image == null ? value : image.url; if (url != null) { image = property.image; url = image.url; image = property.image; return getLongPressSelectedMediaGetEmbedMedia2('image', url, image.contentType); } video = property.video; url = video == null ? value : video.url; if (url != null) { video = property.video; url = video.url; video = property.video; return getLongPressSelectedMediaGetEmbedMedia2('video', url, video.contentType); } } else if (a2 === 'component') { if (a3 == null) { return null; } value = require(4627) /* metro dependency 4627: InteractionComponentUtils */; value = value.flattenComponents(r1.components); value = value.get(a3); if (value == null) { return null; } if (value.type === (require(1909) /* metro dependency 1909: Server */).ComponentType.MEDIA_GALLERY) { if (a4 == null) { return null; } property = value.items[a4]; if (property == null) { return null; } media = property.media; object = {sourceType: 'component', source: value}; value = require(4631) /* metro dependency 4631: MediaFormatTesters */; value = value.isVideoContentType(media.contentType); object.mediaType = value ? 'video' : 'image'; object.mediaUrl = media.url; return object; } return null; } return null; function getLongPressSelectedMediaGetEmbedMedia(a0, a1, a2) { // fn#77031, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:4128, owner: getLongPressSelectedMedia.getEmbedMedia, offset: 0x01dee1bd, size: 48 bytes, params: 4, frame: 2 return {sourceType: 'embed', source: env0_0, mediaType: a0, mediaUrl: a1, contentType: a2}; } } function toObscuredMedia(a0) { // fn#77032, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:5130, offset: 0x01dee1ed, size: 149 bytes, params: 2, frame: 14 const ObscuredMediaTypes = (ExplicitMediaRedactionModelsModule).ObscuredMediaTypes; return a0.sourceType === 'attachment' ? {type: ObscuredMediaTypes.Attachment, media: a0.source} : a0.sourceType !== 'embed' ? null : {type: ObscuredMediaTypes.Embed, media: a0.source}; } function handleAddOrRemoveReaction(a0, a1, a2) { // fn#77033, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:5369, offset: 0x01dee282, size: 910 bytes, params: 4, frame: 28 var r12; var object; var moduleValue2; var open; var isForumPost2; var intl; var string; var t; let value = a3; const value2 = a4; const value3 = undefined; const r7 = value !== value3 ? value : false; const r5 = value2 !== value3 ? value2 : (require(7151) /* metro dependency 7151: ReactionActionCreators */).ReactionLocations.MESSAGE; value = a1.getGuildId(); const currentUser = UserStore.getCurrentUser(); const value6 = null; const id = value6 == currentUser ? value3 : currentUser.id; const r10 = value6 != value && GuildVerificationStore.canChatInGuild(value); const r2 = value6 != value && (require(6664) /* metro dependency 6664: useShowMemberVerificationGate */).shouldShowMembershipVerificationGate(value); if (value6 != value) { if (value6 != id) { value = GuildMemberStore.getMember(value, id); r12 = value; } else { r12 = value6; } } else { r12 = value6; } value = require(3773) /* metro dependency 3773: CommunicationDisabledUtils */; value = value.isMemberCommunicationDisabled(r12); if (a1.isArchivedLockedThread()) { value = importDefault(3857) /* metro dependency 3857: ToastActionCreators */; open = value.open; object = {key: 'ARCHIVED_POST_REACTIONS_DISABLED_TOAST'}; isForumPost2 = a1.isForumPost(); intl = (require(1244) /* metro dependency 1244: indexNative */).intl; string = intl.string; t = (require(1244) /* metro dependency 1244: indexNative */).t; object.content = isForumPost2 ? Reflect.apply(string, intl, [t.EJQrFq]) : Reflect.apply(string, intl, [t.X2L3Oa]); object.icon = importDefault(9836) /* metro dependency 9836 */; Reflect.apply(open, value, [object]); } else { if (value6 != a2) { if (r7) { if (!a2.me_burst !== true) { if (a2.me === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r7) { if (a2.me_burst === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } moduleValue2 = require(1900) /* metro dependency 1900: PremiumTypeUtils */; if (moduleValue2.isPremium(currentUser)) { if (a2.me === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r7) { if (a2.me_burst === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(9837) /* metro dependency 9837: ReactionUtils */; return value.handleOutOfSuperReactions(); } if (a2.me === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r7) { if (a2.me_burst === true) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.removeReaction({channelId: a1.id, messageId: a0, emoji: a2.emoji, location: r5, options: {burst: r7}}); return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (r2) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } if (a1.isPrivate()) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r10) { if (value) { if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(7151) /* metro dependency 7151: ReactionActionCreators */; value.addReaction(a1.id, a0, a2.emoji, r5, {burst: r7}); if (!r7) { value = require(4081) /* metro dependency 4081: HapticUtilsNative */; value.triggerHapticFeedback((importDefault(4082) /* metro dependency 4082: HapticFeedbackTypes */).IMPACT_LIGHT); } return value3; } if (r2) { value = a1.getGuildId(); if (value6 == value) { return value3; } return (require(8919) /* metro dependency 8919: MemberVerificationModalActionCreators */).openMemberVerificationModal(value); } return value3; } value = require(9837) /* metro dependency 9837: ReactionUtils */; value.handleAddNewReactions(a1, a0, r5, {burst: r7}); } return value3; } function handleToggleFollowForumPost(a0, a1) { // fn#77034, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:6541, offset: 0x01dee610, size: 119 bytes, params: 3, frame: 16 const triggerHapticFeedback = HapticUtilsNativeModule.triggerHapticFeedback; const IMPACT_LIGHT = (HapticFeedbackTypes).IMPACT_LIGHT; Reflect.apply(triggerHapticFeedback, HapticUtilsNativeModule, [IMPACT_LIGHT]); if (a1) { ThreadActionCreators.leaveThread(a0, 'iOS Forum Toolbar'); } else { ThreadActionCreators.joinThread(a0, 'iOS Forum Toolbar'); } } function handleCopyLinkForumPost(a0, a1, a2) { // fn#77035, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:6814, offset: 0x01dee687, size: 419 bytes, params: 4, frame: 22 var moduleValue2; var moduleValue4; var copy; var moduleValue5; var moduleValue6; var moduleValue7; const channelStoreBinding = ChannelStore; const channel = channelStoreBinding.getChannel(a1); const value3 = undefined; const channel2 = channelStoreBinding.getChannel(channel == null ? value3 : channel.parent_id); const r3 = channel2 == null ? value3 : channel2.isMediaChannel(); const r9 = r3 != null && r3; (TrackingModule).trackForumPostLinkCopied({postId: a1, location: a2}); if (r9) { moduleValue2 = require(4863) /* metro dependency 4863: AppAnalyticsUtils */; moduleValue2.trackWithMetadata(AnalyticEvents.MEDIA_POST_SHARE_PROMPT_CLICKED, {media_post_id: a1}); } const triggerHapticFeedback = HapticUtilsNativeModule.triggerHapticFeedback; const IMPACT_LIGHT = (HapticFeedbackTypes).IMPACT_LIGHT; Reflect.apply(triggerHapticFeedback, HapticUtilsNativeModule, [IMPACT_LIGHT]); if (channel == null) { moduleValue6 = require(6797) /* metro dependency 6797: ClipboardUtilsNative */; copy = moduleValue6.copy; moduleValue7 = require(4800) /* metro dependency 4800: ChannelUtils */; Reflect.apply(copy, moduleValue6, [moduleValue7.getChannelPermalink(a0, a1, r9 !== true ? value3 : (importDefault(21) /* metro dependency 21: SnowflakeUtils */).castChannelIdAsMessageId(a1))]); } else { moduleValue4 = require(6797) /* metro dependency 6797: ClipboardUtilsNative */; copy = moduleValue4.copy; moduleValue5 = require(4800) /* metro dependency 4800: ChannelUtils */; Reflect.apply(copy, moduleValue4, [moduleValue5.getChannelLinkToCopy(channel, channel2)]); } (ToastUtilsModule).presentLinkCopied(); return value3; } function findMessageIndex(a0, a1) { // fn#77036, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:7380, offset: 0x01dee82a, size: 55 bytes, params: 3, frame: 13 if (a1 != null) { return (require(9849) /* metro dependency 9849: computeScrollData */).findMessageRowIndex(a0, a1); } } function shouldJumpToOriginalPost(a0, a1, a2, a3) { // fn#77037, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:7534, offset: 0x01dee861, size: 79 bytes, params: 5, frame: 12 var r0; let value = a0.isForumPost(); if (value) { value = importDefault(21) /* metro dependency 21: SnowflakeUtils */; value = value.castChannelIdAsMessageId(a1); value = value === a2.jumpTargetId; r0 = value; } else { r0 = value; } r0 = r0 && !a3; return r0; } function findMessageIndexInRows(a0, a1) { // fn#77039, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:7951, offset: 0x01dee903, size: 55 bytes, params: 3, frame: 13 if (a0 != null) { return (require(9849) /* metro dependency 9849: computeScrollData */).findMessageRowIndex(a1, a0); } } function isLoadingAtTop(a0, a1) { // fn#77040, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:8085, offset: 0x01dee93a, size: 102 bytes, params: 3, frame: 15 var r2; var value2; var value3; var done; var value4; var changeType; var INSERT; var value5; if (a1) { value2 = _createForOfIteratorHelperLoose_77014(a0); value3 = value2(); done = value3.done; if (done) { return false; } r2 = value3; loopExit3: while (true) { value4 = r2.value; changeType = value4.changeType; INSERT = Changeset.INSERT; if (changeType === INSERT) { break loopExit3; } value5 = value2(); done = value5.done; if (done) { return false; } r2 = value5; continue; } return value4.index <= 1; } return false; } function handleTapTableView(a0, a1) { // fn#77041, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:8283, offset: 0x01dee9a0, size: 106 bytes, params: 3, frame: 13 var current; if ((require(477) /* metro dependency 477: PlatformUtils */).isIOS() && a1 !== (require(1583) /* metro dependency 1583: KeyboardTypes */).KeyboardTypes.SYSTEM) { current = a0.current; if (current != null) { current.closeCustomKeyboard(); } } } function handleMediaPlayFinishedAnalytics(a0) { // fn#77042, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:8461, offset: 0x01deea0a, size: 305 bytes, params: 2, frame: 20 const defaultImport = AnalyticsUtils; const track = defaultImport.track; const MEDIA_PLAY_FINISHED = AnalyticEvents.MEDIA_PLAY_FINISHED; const object = {}; object.play_time_sec = a0.playWallTimeMs / 1000; object.play_wall_time_ms = a0.playWallTimeMs; const Math = global.Math; object.first_play_waiting_ms = Math.min(a0.firstPlayWaitingMs, 600000); object.stall_count = a0.stallCount; object.stall_ms = a0.stallMs; object.seek_count = a0.seekCount; const value2 = null; object.seek_waiting_ms = value2; object.media_source = a0.mediaSource; let mimeType = a0.mimeType; if (value2 != mimeType) { mimeType = a0.mimeType; mimeType = mimeType === '' ? value2 : a0.mimeType; } else { mimeType = value2; } object.mime_type = mimeType; object.file_size = value2; object.file_duration_sec = a0.fileDurationSec; const networkStoreBinding = NetworkStore; object.connection_type = networkStoreBinding.getType(); object.effective_connection_speed = networkStoreBinding.getEffectiveConnectionSpeed(); object.service_provider = networkStoreBinding.getServiceProvider(); Reflect.apply(track, defaultImport, [MEDIA_PLAY_FINISHED, object]); } function scrollToBottom({current}, a1, a2) { // fn#77043, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9045, offset: 0x01deeb3b, size: 104 bytes, params: 4, frame: 15 let value = a3; let r4 = !(value !== undefined) || value; const object = {}; const Date = global.Date; object.eventTimestamp = Date.now(); object.isAtBottom = true; a2(object); value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; const scrollToBottom = value.scrollToBottom; r4 = r4 && !a1; Reflect.apply(scrollToBottom, value, [current, r4]); } function scrollToTop_77044({current}, a1) { // fn#77044, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9183, offset: 0x01deeba3, size: 65 bytes, params: 3, frame: 15 let value = a2; let r4 = !(value !== undefined) || value; value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; const scrollToTop = value.scrollToTop; r4 = r4 && !a1; Reflect.apply(scrollToTop, value, [current, r4]); } function scrollToRelativeOffset({current}, a1, a2) { // fn#77045, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9279, offset: 0x01deebe4, size: 69 bytes, params: 4, frame: 16 let value = a3; let r5 = !(value !== undefined) || value; value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; const scrollToRelativeOffset = value.scrollToRelativeOffset; r5 = r5 && !a1; Reflect.apply(scrollToRelativeOffset, value, [current, a2, r5]); } function scrollToTopMessage(a0, a1) { // fn#77046, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9397, offset: 0x01deec29, size: 85 bytes, params: 3, frame: 14 var defaultImport; const previousRows = a1.getPreviousRows(); if (previousRows.length > 0) { defaultImport = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; defaultImport.scrollTo(a0.current, previousRows.length - 1); } } function canAddNewReactions(a0, a1) { // fn#77047, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9531, offset: 0x01deec7e, size: 53 bytes, params: 3, frame: 14 let r0 = a1 && PermissionStore.can(Permissions.ADD_REACTIONS, a0); r0 = !r0 ? a0.isPrivate() : r0; return r0; } function loadMoreBefore(a0, a1, a2) { // fn#77048, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9633, offset: 0x01deecb3, size: 120 bytes, params: 4, frame: 16 var defaultImport; var fetchMessages; var value4; const value = undefined; a2(true); if (a1.hasMoreBefore && !a1.loadingMore) { defaultImport = importDefault(7067) /* metro dependency 7067: MessageActionCreators */; fetchMessages = defaultImport.fetchMessages; value4 = a1.first(); Reflect.apply(fetchMessages, defaultImport, [{channelId: a0, before: value4 == null ? value : value4.id, limit: MAX_MESSAGES_PER_CHANNEL}]); } return value; } function loadMoreAfter(a0, a1, a2) { // fn#77049, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9812, offset: 0x01deed2b, size: 120 bytes, params: 4, frame: 16 var defaultImport; var fetchMessages; var value4; const value = undefined; a2(true); if (a1.hasMoreAfter && !a1.loadingMore) { defaultImport = importDefault(7067) /* metro dependency 7067: MessageActionCreators */; fetchMessages = defaultImport.fetchMessages; value4 = a1.last(); Reflect.apply(fetchMessages, defaultImport, [{channelId: a0, after: value4 == null ? value : value4.id, limit: MAX_MESSAGES_PER_CHANNEL}]); } return value; } function clearRows({current}, a1, a2, a3, a4) { // fn#77050, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:9983, offset: 0x01deeda3, size: 110 bytes, params: 6, frame: 16 a4({'animated': false, 'hasHandledScroll': false, 'isNearBottom': false, 'isAtBottom': false, 'isNearTop': false, 'decelerating': false, 'dragging': false, 'hasMoreMessagesAfterForLastUpdate': false, 'pendingUpdatesQueue': null, '_loaded': false, 'animatingStickerMessageId': null, pendingUpdatesQueue: []}); a1.clear(); updateShouldShowJumpToPresentButton(a2, a3, false); (NativeChatUtils).clearRows(current); } function jumpToPresent_77055(a0, a1, a2) { // fn#77055, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:11106, offset: 0x01deef1b, size: 180 bytes, params: 4, frame: 15 const jumpReturnTargetId = a0.jumpReturnTargetId; if (jumpReturnTargetId == null) { if (!a0.loadingMore) { if (a0.hasMoreAfter) { (importDefault(7067) /* metro dependency 7067: MessageActionCreators */).fetchMessages({channelId: a1.id, limit: MAX_MESSAGES_PER_CHANNEL, jump: {present: true}}); } else { a2(); } } } else { (importDefault(7067) /* metro dependency 7067: MessageActionCreators */).jumpToMessage({channelId: a1.id, messageId: jumpReturnTargetId, flash: true}); } } function scrollToNewMessages({channel}) { // fn#77056, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:11360, offset: 0x01deefcf, size: 110 bytes, params: 2, frame: 15 const readStateStoreBinding = ReadStateStore; (importDefault(7067) /* metro dependency 7067: MessageActionCreators */).jumpToMessage({channelId: channel.id, messageId: readStateStoreBinding.ackMessageId(channel.id) ?? channel.id, offset: 1, context: 'Mark As Read'}); } function syncMessageDisplay({messages, isMessagesReady, oldestUnreadMessageId, channelId, updateRows, scrollToMessageId}) { // fn#77057, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:11552, offset: 0x01def03d, size: 273 bytes, params: 2, frame: 21 var object; var jumpTargetId; const JumpTypes = (ClientModule).JumpTypes; if (isMessagesReady) { object = {}; jumpTargetId = messages.jumpTargetId; object.scrollToMessageId = jumpTargetId; jumpTargetId = messages.jumpTargetId; object.jumpTargetId = jumpTargetId; object.jumpType = JumpTypes.INSTANT; object.focusTargetId = messages.focusTargetId; updateRows(object); jumpTargetId = messages.jumpTargetId; if (jumpTargetId != null) { object = {}; jumpTargetId = messages.jumpTargetId; object.scrollToMessageId = jumpTargetId; jumpTargetId = messages.jumpTargetId; object.jumpTargetId = jumpTargetId; object.jumpType = JumpTypes.INSTANT; scrollToMessageId(object); } else if (oldestUnreadMessageId != null) { global.setTimeout(function() { var scrollToMessageIdBinding = scrollToMessageId; var object = {}; object.scrollToMessageId = oldestUnreadMessageId; object.jumpTargetId = messages.jumpTargetId; object.jumpType = require(dependencyMap[45]).JumpTypes.INSTANT; return scrollToMessageIdBinding(object); }, 50); } } else { updateRows({}); } recordTimings(channelId, messages); } function scrollToMessageIdWithRescroll({scrollToMessageId, jumpTargetId, jumpType, scrollPosition, minimizeScrolling, isRescrolling, useReducedMotion, chatRef, findMessageIndex, updateRows}) { // fn#77060, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:12237, offset: 0x01def1a0, size: 462 bytes, params: 2, frame: 26 const JumpTypes = (ClientModule).JumpTypes; var messageIndex; let value = null; const r8 = jumpTargetId === undefined ? value : jumpTargetId; const r12 = jumpType !== undefined ? jumpType : JumpTypes.ANIMATED; const r7 = scrollPosition !== undefined ? scrollPosition : (require(9850) /* metro dependency 9850: NativeChatUtils */).ChatScrollPosition.TOP; const r4 = minimizeScrolling !== undefined && minimizeScrolling; const r11 = isRescrolling !== undefined && isRescrolling; const r3 = useReducedMotion || r12 === JumpTypes.INSTANT; const value8 = !r3; if (PlatformUtilsModule.isIOS()) { if (r11) { messageIndex = findMessageIndex(scrollToMessageId); if (value != messageIndex) { if (r4) { global.setTimeout(_fun77061, 5); } else { value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; value.scrollTo(chatRef.current, messageIndex, {animated: value8, highlight: r8 === scrollToMessageId, position: r7}); } } } else { maybeRescrollToMessageId(scrollToMessageId, {chatRef: chatRef, findMessageIndex: findMessageIndex, updateRows: updateRows, updateRowsEnabled: true, jumpType: r3 ? JumpTypes.INSTANT : JumpTypes.ANIMATED}); } } else { messageIndex = findMessageIndex(scrollToMessageId); if (value != messageIndex) { if (r4) { global.setTimeout(_fun77061, 5); } else { value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; value.scrollTo(chatRef.current, messageIndex, {animated: value8, highlight: r8 === scrollToMessageId, position: r7}); } } } function _fun77061() { // fn#77061, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:12708, offset: 0x01def36e, size: 84 bytes, params: 1, frame: 18 let value = environment.__proto__; value = importDefault(9850) /* metro dependency 9850: NativeChatUtils */; value.scrollIntoView(chatRef.current, Module00005, {animated: result, highlight: env0_1 === scrollToMessageId}); } } function handleVisibleMessagesChange({firstVisibleMessageRowIndex, firstVisibleMessagePercentVisible, lastVisibleMessageRowIndex, lastVisibleMessagePercentVisible, source, chatManager, shouldTrackAnnouncementMessageViews, shouldTrackOfficialMessageViews, shouldTrackRichPresenceInviteEmbedViews, shouldTrackVoiceInviteEmbedViews, guildId, channelId, channel}) { // fn#77062, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:13054, offset: 0x01def3c2, size: 351 bytes, params: 2, frame: 27 var value; var visibleMessages; if (firstVisibleMessageRowIndex != null) { if (lastVisibleMessageRowIndex != null) { if (firstVisibleMessagePercentVisible != null) { if (lastVisibleMessagePercentVisible != null) { visibleMessages = getVisibleMessages({firstVisibleMessageRowIndex: firstVisibleMessageRowIndex, lastVisibleMessageRowIndex: lastVisibleMessageRowIndex, firstVisibleMessagePercentVisible: firstVisibleMessagePercentVisible, lastVisibleMessagePercentVisible: lastVisibleMessagePercentVisible, chatManager: chatManager, channelId: channelId}); if (!(visibleMessages.length <= 0)) { value = require(9484) /* metro dependency 9484: QuestActionCreators */; value.questsVisibleMobileMessagesChanged({visibleMessages: visibleMessages, source: source}); value = require(9854) /* metro dependency 9854: MessageImpressionAnalyticsHelpers */; value.handleAnnouncementMessageViewTracking(visibleMessages, shouldTrackAnnouncementMessageViews, guildId, channel); value = require(9854) /* metro dependency 9854: MessageImpressionAnalyticsHelpers */; value.handleOfficialMessageViewTracking(visibleMessages, shouldTrackOfficialMessageViews, guildId, channel); value = require(9854) /* metro dependency 9854: MessageImpressionAnalyticsHelpers */; value.handleRichPresenceInviteEmbedViewTracking(visibleMessages, shouldTrackRichPresenceInviteEmbedViews, guildId, channel); value = require(9854) /* metro dependency 9854: MessageImpressionAnalyticsHelpers */; value.handleVoiceInviteEmbedViewTracking(visibleMessages, shouldTrackVoiceInviteEmbedViews, guildId, channel); } } } } } } function getVoiceStateChannelSummaryFromVoiceStates(a0) { // fn#77063, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:14014, offset: 0x01def521, size: 84 bytes, params: 2, frame: 12 const Object = global.Object; let value = Object.entries(a0); value = value.filter(function(a0) { var r0; var r1; var r2; var item3; var value3; var iterator = a0[Symbol.iterator](); var iterator2 = iterator.next; var item2 = Reflect.apply(iterator2, iterator, []); var item = item2.value; item2 = item2.done ? undefined : iterator; var value = undefined; var value2 = item2 === value; if (value2) { r0 = value; r1 = item2; r2 = value2; } else { item3 = Reflect.apply(iterator2, item2, []); item = item3.value; item3 = item3.done ? undefined : item2; value3 = item3 === value; if (value3) { r0 = value; r1 = item3; r2 = value3; } else { r0 = item; r1 = item3; r2 = value3; } } if (!r2) { r1.return(); } return r0.discoverable !== false; }); value = value.map(function(a0) { var r0; var r1; var r2; var item3; var value3; var iterator = a0[Symbol.iterator](); var iterator2 = iterator.next; var item2 = Reflect.apply(iterator2, iterator, []); var item = item2.value; item2 = item2.done ? undefined : iterator; var value = undefined; var value2 = item2 === value; var r4 = value2 ? value : item; if (value2) { r0 = value; r1 = item2; r2 = value2; } else { item3 = Reflect.apply(iterator2, item2, []); item = item3.value; item3 = item3.done ? undefined : item2; value3 = item3 === value; if (value3) { r0 = value; r1 = item3; r2 = value3; } else { r0 = item; r1 = item3; r2 = value3; } } if (!r2) { r1.return(); } var channelId = r0.channelId; value = ''; return value + r4 + ':' + (channelId ?? value); }); value = value.sort(); return value.join('|'); } function getVoiceChannelIdChangedAuthorIds(a0, a1) { // fn#77066, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:14255, offset: 0x01def62b, size: 197 bytes, params: 3, frame: 19 var r2; var value5; var get; var value6; var value7; const parseVoiceStateChannelIdSummaryBinding = parseVoiceStateChannelIdSummary; const voiceStateChannelIdSummary = parseVoiceStateChannelIdSummaryBinding(a0); const voiceStateChannelIdSummary2 = parseVoiceStateChannelIdSummaryBinding(a1); let Set = global.Set; let set = new Set(); const _createForOfIteratorHelperLoose_77014Binding = _createForOfIteratorHelperLoose_77014; Set = global.Set; let value = voiceStateChannelIdSummary.keys(); const items2 = []; value = arraySpread(items2, value, 0, undefined); arraySpread(items2, voiceStateChannelIdSummary2.keys(), value, undefined); set = new Set(items2); set = _createForOfIteratorHelperLoose_77014Binding(set); const value4 = set(); let done = value4.done; if (!done) { r2 = value4; while (true) { value5 = r2.value; value6 = voiceStateChannelIdSummary.get(value5); get = voiceStateChannelIdSummary2.get; if (value6 !== Reflect.apply(get, voiceStateChannelIdSummary2, [value5])) { set.add(value5); } value7 = set(); done = value7.done; if (done) { break; } r2 = value7; continue; } } return set; } } function _fun77064(a0) { // fn#77064, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:14102, offset: 0x01def575, size: 69 bytes, params: 2, frame: 6 var r0; var r1; var r2; var item3; var value3; const iterator = a0[Symbol.iterator](); const iterator2 = iterator.next; let item2 = Reflect.apply(iterator2, iterator, []); let item = item2.value; item2 = item2.done ? undefined : iterator; const value = undefined; const value2 = item2 === value; if (value2) { r0 = value; r1 = item2; r2 = value2; } else { item3 = Reflect.apply(iterator2, item2, []); item = item3.value; item3 = item3.done ? undefined : item2; value3 = item3 === value; if (value3) { r0 = value; r1 = item3; r2 = value3; } else { r0 = item; r1 = item3; r2 = value3; } } if (!r2) { r1.return(); } return r0.discoverable !== false; } function _fun77065(a0) { // fn#77065, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10021:14138, offset: 0x01def5ba, size: 113 bytes, params: 2, frame: 17 var r0; var r1; var r2; var item3; var value3; const iterator = a0[Symbol.iterator](); const iterator2 = iterator.next; let item2 = Reflect.apply(iterator2, iterator, []); let item = item2.value; item2 = item2.done ? undefined : iterator; let value = undefined; const value2 = item2 === value; const r4 = value2 ? value : item; if (value2) { r0 = value; r1 = item2; r2 = value2; } else { item3 = Reflect.apply(iterator2, item2, []); item = item3.value; item3 = item3.done ? undefined : item2; value3 = item3 === value; if (value3) { r0 = value; r1 = item3; r2 = value3; } else { r0 = item; r1 = item3; r2 = value3; } } if (!r2) { r1.return(); } const channelId = r0.channelId; value = ''; return value + r4 + ':' + (channelId ?? value); } global.__d(_fun77013, 9835, [57, 5, 7729, 4833, 1379, 1945, 4798, 4814, 4401, 3784, 4605, 1878, 8178, 661, 4631, 4627, 1909, 4841, 7151, 6664, 3773, 3857, 1244, 9836, 9837, 1900, 4081, 4082, 8919, 7153, 7155, 4863, 6797, 4800, 21, 3856, 9849, 14, 22, 477, 1583, 683, 9850, 7067, 6531, 4044, 9484, 9854, 2]) /* metro module 9835, dependencies: [57, 5, 7729, 4833, 1379, 1945, 4798, 4814, 4401, 3784, 4605, 1878, 8178, 661, 4631, 4627, 1909, 4841, 7151, 6664, 3773, 3857, 1244, 9836, 9837, 1900, 4081, 4082, 8919, 7153, 7155, 4863, 6797, 4800, 21, 3856, 9849, 14, 22, 477, 1583, 683, 9850, 7067, 6531, 4044, 9484, 9854, 2] */;