/* Metro module 9854; source: modules/messages/native/MessageImpressionAnalyticsHelpers.tsx; dependencies: [31, 4097, 4300, 661, 7082, 4118, 9855, 6858, 4101, 4116, 9856, 9857, 4098, 2] */ function _fun77223(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#77223, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:6, offset: 0x01df5df5, size: 373 bytes, params: 8, frame: 19 const env0_0 = require; const _arrayLikeToArray_77226 = 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}); const env0_3 = importAll(31) /* metro dependency 31 */; const inviteStore = importDefault(4097) /* metro dependency 4097: InviteStore */; const sortedVoiceStateStore = importDefault(4300) /* metro dependency 4300: SortedVoiceStateStore */; const constantsModule = require(661) /* metro dependency 661: Constants */; const env0_6 = constantsModule.ChannelTypes; const env0_7 = constantsModule.GuildFeatures; const env0_8 = constantsModule.InviteStates; const env0_9 = constantsModule.MessageFlags; const env0_10 = (require(7082) /* metro dependency 7082: MessageEmbedConstants */).LinkType; const env0_11 = (require(4118) /* metro dependency 4118: Constants */).InviteTypes; (require(2) /* metro dependency 2 */).fileFinishedImporting('modules/messages/native/MessageImpressionAnalyticsHelpers.tsx'); exports.useShouldTrackAnnouncementMessageViews = useShouldTrackAnnouncementMessageViews; exports.useShouldTrackRichPresenceInviteEmbedViews = useShouldTrackRichPresenceInviteEmbedViews; exports.handleAnnouncementMessageViewTracking = handleAnnouncementMessageViewTracking; exports.handleRichPresenceInviteEmbedViewTracking = handleRichPresenceInviteEmbedViewTracking; exports.useShouldTrackOfficialMessageViews = useShouldTrackOfficialMessageViews; exports.handleOfficialMessageViewTracking = handleOfficialMessageViewTracking; exports.useShouldTrackVoiceInviteEmbedViews = useShouldTrackVoiceInviteEmbedViews; exports.handleVoiceInviteEmbedViewTracking = handleVoiceInviteEmbedViewTracking; } function _createForOfIteratorHelperLoose_77224(a0, a1) { // fn#77224, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:254, offset: 0x01df5f6a, 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 _fun77225; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_77226(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_77226(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_77226(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun77225; } 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 getVoiceInviteEmbedRenderInfo(a0) { // fn#77227, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:1164, offset: 0x01df60de, size: 340 bytes, params: 2, frame: 17 var r2; var r0; var moduleValue3; var enabled; let state = a0.state; var value; const RESOLVING = InviteStates.RESOLVING; if (state === RESOLVING) { return null; } state = a0.state; const EXPIRED = InviteStates.EXPIRED; if (state === EXPIRED) { return null; } state = a0.state; const BANNED = InviteStates.BANNED; if (state === BANNED) { return null; } state = a0.state; const ERROR = InviteStates.ERROR; if (state === ERROR) { return null; } const value2 = undefined; const inviteType = (require(4116) /* metro dependency 4116: InviteTypeUtils */).getInviteType(a0); const GUILD = InviteTypes.GUILD; if (inviteType !== GUILD) { return null; } const guildInviteExtendedType = (require(4116) /* metro dependency 4116: InviteTypeUtils */).getGuildInviteExtendedType(a0); const GuildInviteExtendedType = (require(4116) /* metro dependency 4116: InviteTypeUtils */).GuildInviteExtendedType; const VOICE_CHANNEL = GuildInviteExtendedType.VOICE_CHANNEL; if (guildInviteExtendedType !== VOICE_CHANNEL) { return null; } const guild = a0.guild; const value5 = null; const id = value5 == guild ? value2 : guild.id; if (value5 == id) { r0 = value5; } else { moduleValue3 = require(9856) /* metro dependency 9856: VoiceChannelListInviteExperiment */; enabled = moduleValue3.getVoiceChannelListInviteExperiment({guildId: id, location: 'mobile_invite_embed_impression'}).enabled; if (enabled) { value = require(9857) /* metro dependency 9857: VoiceChannelListInviteEmbed */; value = value.canShowVoiceChannelListInviteEmbed(a0); r2 = value; } else { r2 = enabled; } r0 = {treatmentRendered: r2}; } return r0; } function useShouldTrackAnnouncementMessageViews({guild, channel, messages, isMessagesReady}) { // fn#77228, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:1836, offset: 0x01df6232, size: 169 bytes, params: 2, frame: 18 const r1 = guild == null || guild.features == null ? undefined : guild.features.has(GuildFeatures.COMMUNITY); const r6 = r1 != null && r1; return r6.useMemo(_fun77229, [channel.type, channel.guild_id, r6, isMessagesReady, messages]); } function useShouldTrackRichPresenceInviteEmbedViews({messages, isMessagesReady}) { // fn#77231, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2270, offset: 0x01df6372, size: 64 bytes, params: 2, frame: 15 return env0_3.useMemo(_fun77232, [messages, isMessagesReady]); } function handleAnnouncementMessageViewTracking(a0, a1, a2, a3) { // fn#77234, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2507, offset: 0x01df6406, size: 122 bytes, params: 5, frame: 16 var defaultImport; const env0_0 = a2; const env0_1 = a3; if (a1) { if (a2 != null) { a0.forEach(_fun77235); defaultImport = importDefault(9855) /* metro dependency 9855: MessageViewTrackingManager */; defaultImport.handleMessageListVisibilityChange([], (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.ANNOUNCEMENT); } } } function handleRichPresenceInviteEmbedViewTracking(a0, a1, a2, a3) { // fn#77236, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:3287, offset: 0x01df65d2, size: 116 bytes, params: 5, frame: 16 var defaultImport; const env0_0 = a2; const env0_1 = a3; if (a1) { a0.forEach(_fun77237); defaultImport = importDefault(9855) /* metro dependency 9855: MessageViewTrackingManager */; defaultImport.handleMessageListVisibilityChange([], (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.APP_EMBED); } } function useShouldTrackOfficialMessageViews({guild, messages, isMessagesReady}) { // fn#77238, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:3771, offset: 0x01df6713, size: 145 bytes, params: 2, frame: 19 let value = undefined; value = (require(6858) /* metro dependency 6858: GuildOfficialMessageUtils */).useIsGuildOfficialMessagesEnabled((guild == null ? value : guild.id) ?? null, 'useShouldTrackOfficialMessageViews'); return env0_3.useMemo(_fun77239, [value, isMessagesReady, messages]); } function handleOfficialMessageViewTracking(a0, a1, a2, a3) { // fn#77241, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4101, offset: 0x01df67ec, size: 122 bytes, params: 5, frame: 16 var defaultImport; const env0_0 = a2; const env0_1 = a3; if (a1) { if (a2 != null) { a0.forEach(_fun77242); defaultImport = importDefault(9855) /* metro dependency 9855: MessageViewTrackingManager */; defaultImport.handleMessageListVisibilityChange([], (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.OFFICIAL_MESSAGE); } } } function useShouldTrackVoiceInviteEmbedViews({messages, isMessagesReady}) { // fn#77243, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4505, offset: 0x01df68ff, size: 64 bytes, params: 2, frame: 15 return env0_3.useMemo(_fun77244, [messages, isMessagesReady]); } function handleVoiceInviteEmbedViewTracking(a0, a1, a2, a3) { // fn#77247, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4730, offset: 0x01df69b5, size: 116 bytes, params: 5, frame: 16 var defaultImport; const env0_0 = a2; const env0_1 = a3; if (a1) { a0.forEach(_fun77248); defaultImport = importDefault(9855) /* metro dependency 9855: MessageViewTrackingManager */; defaultImport.handleMessageListVisibilityChange([], (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.VOICE_INVITE_EMBED); } } function _fun77229() { // fn#77229, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2031, offset: 0x01df62db, size: 75 bytes, params: 1, frame: 13 const type = channel.type; const GUILD_ANNOUNCEMENT = ChannelTypes.GUILD_ANNOUNCEMENT; let r0 = type === GUILD_ANNOUNCEMENT && env0_3; r0 = !r0 ? isMessagesReady && messages.some(_fun77230) : r0; return r0; } function _fun77232() { // fn#77232, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2372, offset: 0x01df63b2, size: 36 bytes, params: 1, frame: 12 return isMessagesReady && messages.some(function(a0) { return a0.activity != null && a0.activity.party_id != null && a0.application != null; }); } function _fun77235({message}) { // fn#77235, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2598, offset: 0x01df6480, size: 338 bytes, params: 2, frame: 19 const MessageViewTrackingType = (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType; const r2 = message.messageReference?.guild_id != null && message.webhookId != null && message.hasFlag(MessageFlags.IS_CROSSPOST); const hasFlag = message.hasFlag; const EPHEMERAL = MessageFlags.EPHEMERAL; if (!Reflect.apply(hasFlag, message, [EPHEMERAL])) { if (importAll.type === ChannelTypes.GUILD_ANNOUNCEMENT) { env0_2.push({type: MessageViewTrackingType.ANNOUNCEMENT, messageId: r2 && message.messageReference != null ? message.messageReference.message_id : message.id, channelId: importAll.id, guildId: importDefault, sourceChannelId: r2 && message.messageReference != null ? message.messageReference.channel_id : importAll.id, sourceGuildId: r2 && message.messageReference?.guild_id != null ? message.messageReference.guild_id : importDefault}); } else if (r2) { env0_2.push({type: MessageViewTrackingType.ANNOUNCEMENT, messageId: r2 && message.messageReference != null ? message.messageReference.message_id : message.id, channelId: importAll.id, guildId: importDefault, sourceChannelId: r2 && message.messageReference != null ? message.messageReference.channel_id : importAll.id, sourceGuildId: r2 && message.messageReference?.guild_id != null ? message.messageReference.guild_id : importDefault}); } } } function _fun77237({message}) { // fn#77237, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:3373, offset: 0x01df6646, size: 205 bytes, params: 2, frame: 17 var binding; var push; var object2; var id; const hasFlag = message.hasFlag; const EPHEMERAL = MessageFlags.EPHEMERAL; let r0 = Reflect.apply(hasFlag, message, [EPHEMERAL]) || message.activity == null; r0 = !r0 ? message.activity.party_id == null : r0; r0 = !r0 ? message.application == null : r0; if (!r0) { binding = env0_2; push = binding.push; object2 = {}; object2.type = (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.APP_EMBED; id = message.id; object2.messageId = id; id = importAll.id; object2.channelId = id; object2.guildId = importDefault; id = message.application.id; object2.applicationId = id; object2.linkType = LinkType.RICH_PRESENCE_INVITE; Reflect.apply(push, binding, [object2]); } } function _fun77239() { // fn#77239, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:3999, offset: 0x01df67a4, size: 43 bytes, params: 1, frame: 12 return env0_2 && isMessagesReady && messages.some(function(a0) { return a0.hasFlag(MessageFlags.IS_GUILD_OFFICIAL); }); } function _fun77242({message}) { // fn#77242, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4188, offset: 0x01df6866, size: 153 bytes, params: 2, frame: 16 var binding; var push; var object2; var id; const hasFlag = message.hasFlag; const EPHEMERAL = MessageFlags.EPHEMERAL; if (!Reflect.apply(hasFlag, message, [EPHEMERAL]) && message.hasFlag(MessageFlags.IS_GUILD_OFFICIAL)) { binding = env0_2; push = binding.push; object2 = {}; object2.type = (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType.OFFICIAL_MESSAGE; id = message.id; object2.messageId = id; id = importAll.id; object2.channelId = id; object2.guildId = importDefault; Reflect.apply(push, binding, [object2]); } } function _fun77244() { // fn#77244, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4600, offset: 0x01df693f, size: 36 bytes, params: 1, frame: 12 return isMessagesReady && messages.some(function({codedLinks}) { return codedLinks.some(_fun77246); }); } function _fun77248({message}) { // fn#77248, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4809, offset: 0x01df6a29, size: 637 bytes, params: 2, frame: 55 var r11; var id; var r32; var r31; var r0; var r43; var _createForOfIteratorHelperLoose_77224Binding; var codedLinks; var value2; var value3; var value4; var done; var value6; var value7; var type; var CodedLinkType; var INVITE; var getInvite; var code; var value8; var voiceInviteEmbedRenderInfo; var channel; var guild; var value10; var value11; var voiceStatesForChannelAlt; var value13; var binding; var push; var object2; var MessageViewTrackingType; var VOICE_INVITE_EMBED; var moduleValue; var getInviteInstanceId; var value14; var treatmentRendered; var value15; const hasFlag = message.hasFlag; const EPHEMERAL = MessageFlags.EPHEMERAL; if (!Reflect.apply(hasFlag, message, [EPHEMERAL])) { _createForOfIteratorHelperLoose_77224Binding = _createForOfIteratorHelperLoose_77224; codedLinks = message.codedLinks; value2 = undefined; value3 = _createForOfIteratorHelperLoose_77224Binding(codedLinks); value4 = value3(); done = value4.done; value6 = null; if (!done) { r11 = value4; while (true) { value7 = r11.value; type = value7.type; CodedLinkType = (require(4101) /* metro dependency 4101: CodedLink */).CodedLinkType; INVITE = CodedLinkType.INVITE; if (type === INVITE) { getInvite = InviteStore.getInvite; code = value7.code; value8 = Reflect.apply(getInvite, InviteStore, [code]); if (value6 == value8) { break; } voiceInviteEmbedRenderInfo = getVoiceInviteEmbedRenderInfo(value8); if (value6 == voiceInviteEmbedRenderInfo) { break; } channel = value8.channel; if (value6 == channel) { id = value2; continue; } id = channel.id; if (value6 != id) { r32 = id; continue; } r32 = value6; continue; guild = value8.guild; if (value6 == guild) { id = value2; continue; } id = guild.id; if (value6 != id) { r31 = id; continue; } r31 = value6; continue; value10 = value6 != r32; if (!value10) { r0 = value10; continue; } value11 = value6 != r31; r0 = value11; if (!r0) { continue; } voiceStatesForChannelAlt = SortedVoiceStateStore.getVoiceStatesForChannelAlt(r32, r31); value13 = voiceStatesForChannelAlt.some(function(a0) { return a0.voiceState.selfStream; }); r0 = value13; binding = env0_2; push = binding.push; object2 = {}; MessageViewTrackingType = (require(9855) /* metro dependency 9855: MessageViewTrackingManager */).MessageViewTrackingType; VOICE_INVITE_EMBED = MessageViewTrackingType.VOICE_INVITE_EMBED; object2.type = VOICE_INVITE_EMBED; id = message.id; object2.messageId = id; id = importAll.id; object2.channelId = id; object2.guildId = importDefault; code = value7.code; object2.inviteCode = code; object2.inviteGuildId = r31; object2.inviteChannelId = r32; moduleValue = require(4098) /* metro dependency 4098: InviteCodeUtils */; getInviteInstanceId = moduleValue.getInviteInstanceId; code = value7.code; id = message.id; value14 = Reflect.apply(getInviteInstanceId, moduleValue, [code, id]); if (value6 != value14) { r43 = value14; continue; } r43 = value6; continue; object2.inviteInstanceId = r43; treatmentRendered = voiceInviteEmbedRenderInfo.treatmentRendered; object2.treatmentRendered = treatmentRendered; object2.hasActiveStream = r0; Reflect.apply(push, binding, [object2]); break; } value15 = value3(); done = value15.done; if (done) { break; } r11 = value15; continue; } } } } function _fun77230(a0) { // fn#77230, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:2088, offset: 0x01df6326, size: 76 bytes, params: 2, frame: 13 var hasFlag; let value = a0.messageReference != null; let r0 = value && a0.webhookId != null; if (r0) { hasFlag = a0.hasFlag; value = environment.__proto__.__proto__; value = Reflect.apply(hasFlag, a0, [MessageFlags.IS_CROSSPOST]); r0 = value; } if (r0) { value = environment.__proto__; value = channel.guild_id != null; r0 = value; } return r0; } function _fun77245({codedLinks}) { // fn#77245, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:10040:4615, offset: 0x01df6963, size: 31 bytes, params: 2, frame: 11 return codedLinks.some(function({type}) { return type === require(dependencyMap[8]).CodedLinkType.INVITE; }); }