/* Metro module 8515; source: modules/user_profile/UserProfileAnalyticsUtils.tsx; dependencies: [7670, 5221, 4492, 5109, 1945, 4396, 3793, 1878, 5189, 8516, 661, 482, 1423, 8490, 683, 4863, 8517, 2] */ import AnalyticsUtils from '../../utils/AnalyticsUtils.tsx'; /* Metro dependency 683 */ import UserStore from '../../stores/UserStore.tsx'; /* Metro dependency 1878 */ import GuildMemberStore from '../../stores/GuildMemberStore.tsx'; /* Metro dependency 1945 */ import RelationshipStore from '../../stores/RelationshipStore.tsx'; /* Metro dependency 3793 */ import PresenceStore from '../../stores/PresenceStore.tsx'; /* Metro dependency 4396 */ import ApplicationStreamingStore from '../../stores/ApplicationStreamingStore.tsx'; /* Metro dependency 4492 */ import AuthorizedAppsStore from '../../stores/AuthorizedAppsStore.tsx'; /* Metro dependency 5109 */ import UserProfileStore from './UserProfileStore.tsx'; /* Metro dependency 5189 */ import UserAffinitiesV2Store from '../user_affinities/UserAffinitiesV2Store.tsx'; /* Metro dependency 5221 */ import BadgeDirectoryStore from '../badges/BadgeDirectoryStore.tsx'; /* Metro dependency 7670 */ import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as ConstantsModule from '../../external/discord_common/js/shared/Constants.tsx'; /* Metro dependency 482 */ import * as ConstantsModule2 from '../../Constants.tsx'; /* Metro dependency 661 */ import * as AppAnalyticsUtilsModule from '../app_analytics/AppAnalyticsUtils.tsx'; /* Metro dependency 4863 */ import * as AuthorizedAppsStoreModule from '../../stores/AuthorizedAppsStore.tsx'; /* Metro dependency 5109 */ import * as ConstantsModule3 from './Constants.tsx'; /* Metro dependency 8516 */ import * as UserProfilePerformanceAnalyticsExperimentModule from './experiments/UserProfilePerformanceAnalyticsExperiment.tsx'; /* Metro dependency 8517 */ function _fun67485(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#67485, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:6, offset: 0x01c25102, size: 535 bytes, params: 8, frame: 19 const env0_0 = require; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); const constantsModule = ConstantsModule2; const env0_14 = constantsModule.ActivityTypes; const env0_15 = constantsModule.AnalyticEvents; const getActivityType2 = getActivityType; const getTrackUserRelationshipProperties2 = getTrackUserRelationshipProperties; const trackUserProfileAction2 = trackUserProfileAction; (FileImportTrackerModule).fileFinishedImporting('modules/user_profile/UserProfileAnalyticsUtils.tsx'); exports.getActivityType = getActivityType2; exports.getTrackUserRelationshipProperties = getTrackUserRelationshipProperties2; exports.trackUserProfileAction = trackUserProfileAction2; exports.maybeTrackUserProfileUiViewed = maybeTrackUserProfileUiViewed; exports.trackUserProfileActivityJoined = trackUserProfileActivityJoined; exports.trackUserProfileActivityAction = trackUserProfileActivityAction; exports.trackUserProfileBadgeAction = trackUserProfileBadgeAction; exports.trackDmProfileToggled = trackDmProfileToggled; exports.trackUserProfileEditAction = trackUserProfileEditAction; exports.trackUserProfileEditSaved = trackUserProfileEditSaved; exports.trackUserProfileWishlistAction = trackUserProfileWishlistAction; function getProfileProperties({user, userProfile, guildMember, guildMemberProfile}) { // fn#67486, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:336, offset: 0x01c25319, size: 581 bytes, params: 2, frame: 19 var moduleValue; var moduleValue2; const r3 = userProfile ?? guildMemberProfile; const items2 = []; let Boolean = global.Boolean; if (Boolean(guildMember?.nick)) { items2.push(TrackUserProfileProperties.NICKNAME); } Boolean = global.Boolean; if (Boolean(r3?.pronouns)) { items2.push(TrackUserProfileProperties.PRONOUNS); } Boolean = global.Boolean; if (Boolean(user?.avatar)) { moduleValue = require(1423) /* metro dependency 1423: AvatarUtils */; items2.push(moduleValue.isAnimatedIconHash(user?.avatar) ? TrackUserProfileProperties.ANIMATED_AVATAR : TrackUserProfileProperties.AVATAR); } Boolean = global.Boolean; if (Boolean(r3?.banner)) { moduleValue2 = require(1423) /* metro dependency 1423: AvatarUtils */; items2.push(moduleValue2.isAnimatedIconHash(r3?.banner) ? TrackUserProfileProperties.ANIMATED_BANNER : TrackUserProfileProperties.BANNER); } Boolean = global.Boolean; if (Boolean(r3?.bio)) { items2.push(TrackUserProfileProperties.BIO); } if (r3?.themeColors != null && r3.themeColors.find(function(a0) { return a0 !== null; }) !== undefined) { items2.push(TrackUserProfileProperties.THEME); } if (user?.avatarDecoration != null) { items2.push(TrackUserProfileProperties.AVATAR_DECORATION); } if (r3?.profileEffect != null) { items2.push(TrackUserProfileProperties.PROFILE_EFFECT); } return items2; } function getUserStatus(a0) { // fn#67488, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:1096, offset: 0x01c2555e, size: 128 bytes, params: 2, frame: 14 const presenceStoreBinding = PresenceStore; const status = presenceStoreBinding.getStatus(a0); const isMobileOnline2 = presenceStoreBinding.isMobileOnline(a0); const ONLINE = StatusTypes.ONLINE; return status !== ONLINE ? status !== StatusTypes.ONLINE ? status : '' + status + '-desktop' : isMobileOnline2 ? '' + status + '-mobile' : status !== StatusTypes.ONLINE ? status : '' + status + '-desktop'; } function getActivityType(a0) { // fn#67489, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:1227, offset: 0x01c255de, size: 81 bytes, params: 2, frame: 15 var r1; var r0; var value2; var Object; var value4; var value5; const value = a0; if (value == null) { r0 = value; } else { value2 = 'VOICE'; if (value2 === value) { r1 = value2; } else { Object = global.Object; value4 = Object.keys(ActivityTypes); Object = global.Object; value5 = Object.values(ActivityTypes); r1 = value4[value5.indexOf(value)]; } r0 = r1; } return r0; } function getTrackUserProfileProperties({layout, userId, guildId, sessionId, sourceSessionId, showGuildProfile}) { // fn#67490, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:1334, offset: 0x01c2562f, size: 572 bytes, params: 2, frame: 24 var r6; var badges; const value = undefined; showGuildProfile = showGuildProfile === value || showGuildProfile; const user = UserStore.getUser(userId); if (user == null) { return {}; } const displayProfile = (require(8490) /* metro dependency 8490: useDisplayProfile */).getDisplayProfile(user == null ? value : user.id, showGuildProfile ? guildId : value); const r9 = showGuildProfile && guildId != null ? GuildMemberStore.getMember(guildId, user == null ? value : user.id) : null; const object = {profile_layout: layout, profile_session_id: sessionId, source_profile_session_id: sourceSessionId}; object.profile_properties = getProfileProperties({user: user, userProfile: displayProfile == null ? value : displayProfile._userProfile}); object.guild_profile_properties = getProfileProperties({guildMember: r9, guildMemberProfile: displayProfile == null ? value : displayProfile._guildMemberProfile}); const presenceStoreBinding = PresenceStore; const getActivities = presenceStoreBinding.getActivities; object.profile_activity_types = Reflect.apply(getActivities, presenceStoreBinding, [user.id]).map(function(a0) { return a0.type; }).filter(function(a0) { return a0 !== undefined; }); if (displayProfile == null) { r6 = value; } else { badges = displayProfile.getBadges(); r6 = badges == null ? value : badges.map(function(a0) { return a0.id; }).filter(_fun67494); } r6 = r6 ?? []; object.profile_badges = r6; const avatarDecoration = user.avatarDecoration; object.avatar_decoration_sku_id = avatarDecoration == null ? value : avatarDecoration.skuId; object.profile_effect_sku_id = displayProfile == null || displayProfile.profileEffect == null ? value : displayProfile.profileEffect.skuId; object.user_status = getUserStatus(user.id); object.is_guild_profile = (displayProfile == null ? value : displayProfile.guildId) != null; object.is_bot_profile = user.bot; const r2 = displayProfile == null ? value : displayProfile.private; object.is_private_to_viewer = r2 != null && r2; return object; } function getTrackUserRelationshipProperties({userId}) { // fn#67495, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:2424, offset: 0x01c2586b, size: 182 bytes, params: 2, frame: 15 if (userId == null) { return {}; } const userAffinity = UserAffinitiesV2Store.getUserAffinity(userId); const object = {related_user_id: userId}; const relationshipStoreBinding = RelationshipStore; object.relationship_type = relationshipStoreBinding.getRelationshipType(userId); object.related_since = relationshipStoreBinding.getSince(userId); const userProfileStoreBinding = UserProfileStore; object.num_mutual_friends = userProfileStoreBinding.getMutualFriendsCount(userId); object.num_mutual_guilds = userProfileStoreBinding.getMutualGuilds(userId)?.length; object.communication_probability = userAffinity?.communicationProbability; object.communication_rank = userAffinity?.communicationRank; return object; } function getTrackUserProfileApplicationProperties(a0) { // fn#67496, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:2864, offset: 0x01c25921, size: 83 bytes, params: 2, frame: 15 const value = null; return {application_id: a0, application_linked: value != a0 ? AuthorizedAppsStore.getFetchStateForApplication(a0) !== FetchState.FETCHED ? value : value != AuthorizedAppsStore.getNewestTokenForApplication(a0) : value}; } function trackUserProfileAction(a0) { // fn#67497, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:3029, offset: 0x01c25974, size: 273 bytes, params: 2, frame: 30 const guildId = a0.guildId; const channelId = a0.channelId; const messageId = a0.messageId; const roleId = a0.roleId; const widgetType = a0.widgetType; const analyticsLocations = a0.analyticsLocations; const action = a0.action; const section = a0.section; const applicationId = a0.applicationId; const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_ACTION = AnalyticEvents.USER_PROFILE_ACTION; const object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserRelationshipProperties(a0), guildId); copyDataProperties(object, getTrackUserProfileApplicationProperties(applicationId), guildId); object['location_stack'] = analyticsLocations; object['profile_action'] = action; object['profile_section'] = section; object['source_message_id'] = messageId; object['source_role_id'] = roleId; object['widget_type'] = widgetType; Reflect.apply(track, defaultImport, [USER_PROFILE_ACTION, object]); } function maybeTrackUserProfileUiViewed(a0) { // fn#67498, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:3804, offset: 0x01c25a85, size: 380 bytes, params: 2, frame: 30 var r1; var guildId; var channelId; var analyticsLocations; var profileUi; var viewStartedAt; var fetchStartedAt; var timeToInteractiveMs; var timeToLoadMs; var timeToFetchMs; var value2; var defaultImport; var track; var USER_PROFILE_UI_VIEWED; var object; var moduleValue2; var moduleValue3; if (UserProfilePerformanceAnalyticsExperimentModule.isUserProfilePerformanceAnalyticsEnabled('UserProfileAnalyticsUtils')) { guildId = a0.guildId; channelId = a0.channelId; analyticsLocations = a0.analyticsLocations; profileUi = a0.profileUi; viewStartedAt = a0.viewStartedAt; fetchStartedAt = a0.fetchStartedAt; timeToInteractiveMs = a0.timeToInteractiveMs; timeToLoadMs = a0.timeToLoadMs; timeToFetchMs = a0.timeToFetchMs; value2 = 0; r1 = timeToInteractiveMs ?? value2; r1 = r1 <= value2 || (timeToLoadMs ?? value2) <= value2; r1 = !r1 ? (timeToFetchMs ?? value2) <= value2 : r1; if (!r1) { defaultImport = importDefault(683) /* metro dependency 683: AnalyticsUtils */; track = defaultImport.track; USER_PROFILE_UI_VIEWED = AnalyticEvents.USER_PROFILE_UI_VIEWED; object = {}; moduleValue2 = require(4863) /* metro dependency 4863: AppAnalyticsUtils */; copyDataProperties(object, moduleValue2.collectGuildAnalyticsMetadata(guildId), guildId); moduleValue3 = require(4863) /* metro dependency 4863: AppAnalyticsUtils */; copyDataProperties(object, moduleValue3.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserRelationshipProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['profile_ui'] = profileUi; object['view_started_at'] = viewStartedAt; object['fetch_started_at'] = fetchStartedAt; object['time_to_interactive_ms'] = timeToInteractiveMs; object['time_to_load_ms'] = timeToLoadMs; object['time_to_fetch_ms'] = timeToFetchMs; Reflect.apply(track, defaultImport, [USER_PROFILE_UI_VIEWED, object]); } } } function trackUserProfileActivityJoined(a0) { // fn#67499, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:4490, offset: 0x01c25c01, size: 288 bytes, params: 2, frame: 30 const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const activityType = a0.activityType; const activityName = a0.activityName; const activityPlatform = a0.activityPlatform; const activitySessionId = a0.activitySessionId; const applicationId = a0.applicationId; const voiceChannelId = a0.voiceChannelId; const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_ACTIVITY_JOINED = AnalyticEvents.USER_PROFILE_ACTIVITY_JOINED; const object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserRelationshipProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['activity_type'] = voiceChannelId != null ? 'VOICE' : getActivityType(activityType); object['activity_name'] = activityName; object['activity_platform'] = activityPlatform; object['activity_session_id'] = activitySessionId; object['application_id'] = applicationId; object['voice_channel_id'] = voiceChannelId; Reflect.apply(track, defaultImport, [USER_PROFILE_ACTIVITY_JOINED, object]); } function trackUserProfileActivityAction(a0) { // fn#67500, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:5079, offset: 0x01c25d21, size: 531 bytes, params: 2, frame: 32 const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const action = a0.action; const display = a0.display; const activity = a0.activity; const stream = a0.stream; const entry = a0.entry; const outbox = a0.outbox; const voiceChannelId = a0.voiceChannelId; const value2 = undefined; const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_ACTIVITY_ACTION = AnalyticEvents.USER_PROFILE_ACTIVITY_ACTION; const object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserRelationshipProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['activity_action'] = action; object['activity_display'] = display; object['activity_type'] = getActivityType(stream != null ? ActivityTypes.STREAMING : activity == null ? value2 : activity.type); object['activity_name'] = activity == null ? value2 : activity.name; object['activity_platform'] = activity == null ? value2 : activity.platform; object['activity_session_id'] = activity == null ? value2 : activity.session_id; object['activity_application_id'] = activity == null ? value2 : activity.application_id; object['item_id'] = entry == null ? value2 : entry.id; object['author_id_v2'] = entry == null ? value2 : entry.author_id; object['item_ids'] = outbox == null ? value2 : outbox.entries.map(function(a0) { return a0.id; }); object['author_ids_v2'] = outbox == null ? value2 : outbox.entries.map(function(a0) { return a0.author_id; }); object['voice_channel_id'] = voiceChannelId; Reflect.apply(track, defaultImport, [USER_PROFILE_ACTIVITY_ACTION, object]); return value2; } function trackUserProfileBadgeAction(a0) { // fn#67503, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:5994, offset: 0x01c25f3f, size: 292 bytes, params: 2, frame: 28 var r7; var badgeById; const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const badgeId = a0.badgeId; const badgeAction = a0.badgeAction; const position = a0.position; const userId = a0.userId; const value = undefined; if (badgeId != null) { if (userId != null) { badgeById = BadgeDirectoryStore.getBadgeById(badgeId, userId); r7 = badgeById == null ? value : badgeById.current_tier; } else { r7 = value; } } else { r7 = value; } const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_BADGE_ACTION = AnalyticEvents.USER_PROFILE_BADGE_ACTION; const object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserRelationshipProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['badge_action'] = badgeAction; object['badge_id'] = badgeId; object['badge_tier'] = r7; object['position'] = position; Reflect.apply(track, defaultImport, [USER_PROFILE_BADGE_ACTION, object]); return value; } function trackDmProfileToggled({displayProfile, isProfileOpen}) { // fn#67504, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:6496, offset: 0x01c26063, size: 317 bytes, params: 2, frame: 23 const userId = displayProfile?.userId; const r12 = userId != null ? PresenceStore.findActivity(userId, _fun67505) : null; const defaultImport = AnalyticsUtils; const track = defaultImport.track; const DM_PROFILE_TOGGLED = AnalyticEvents.DM_PROFILE_TOGGLED; const object = {is_profile_open: isProfileOpen}; const Boolean = global.Boolean; object.has_images = Boolean((r12 == null || r12.assets == null ? undefined : r12.assets.large_image) ?? (r12 == null || r12.assets == null ? undefined : r12.assets.small_image)); object.is_friend = RelationshipStore.isFriend(userId); object.viewed_profile_user_id = userId; object.profile_has_nitro_customization = displayProfile?.hasPremiumCustomization(); object.profile_has_theme_color_customized = displayProfile?.hasThemeColors(); object.profile_has_theme_animation = displayProfile?.popoutAnimationParticleType != null; Reflect.apply(track, defaultImport, [DM_PROFILE_TOGGLED, object]); function _fun67505({type}) { // fn#67505, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:6599, offset: 0x01c261a0, size: 73 bytes, params: 2, frame: 13 const value = environment.__proto__; const applicationStreamingStoreBinding = ApplicationStreamingStore; const getAnyStreamForUser = applicationStreamingStoreBinding.getAnyStreamForUser; return Reflect.apply(getAnyStreamForUser, applicationStreamingStoreBinding, [userId]) != null ? type === ActivityTypes.PLAYING : type !== ActivityTypes.CUSTOM_STATUS; } } function trackUserProfileEditAction(a0) { // fn#67506, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:7174, offset: 0x01c261e9, size: 299 bytes, params: 2, frame: 30 const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const action = a0.action; const widgetEdited = a0.widgetEdited; const gameId = a0.gameId; const numResults = a0.numResults; const numCharacters = a0.numCharacters; const applicationId = a0.applicationId; const trackUserProfileActionBinding = trackUserProfileAction; let object = {}; copyDataProperties(object, a0, guildId); object['action'] = action; trackUserProfileActionBinding(object); const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_EDIT_ACTION = AnalyticEvents.USER_PROFILE_EDIT_ACTION; object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); copyDataProperties(object, getTrackUserProfileApplicationProperties(applicationId), guildId); object['location_stack'] = analyticsLocations; object['edit_action'] = action; object['widget_edited'] = widgetEdited; object['game_id'] = gameId; object['num_results'] = numResults; object['num_characters'] = numCharacters; object['application_id'] = applicationId; Reflect.apply(track, defaultImport, [USER_PROFILE_EDIT_ACTION, object]); } function trackUserProfileEditSaved(a0) { // fn#67507, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:7721, offset: 0x01c26314, size: 276 bytes, params: 2, frame: 29 const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const widgetEdited = a0.widgetEdited; const gameIds = a0.gameIds; const tags = a0.tags; const numCharactersCommentary = a0.numCharactersCommentary; const isWidgetRemoved = a0.isWidgetRemoved; const trackUserProfileActionBinding = trackUserProfileAction; let object = {}; copyDataProperties(object, a0, guildId); object['action'] = 'EDIT_SAVED'; trackUserProfileActionBinding(object); const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_EDIT_SAVED = AnalyticEvents.USER_PROFILE_EDIT_SAVED; object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['widget_edited'] = widgetEdited; object['game_ids'] = gameIds; object['tags'] = tags; object['num_characters_commentary'] = numCharactersCommentary; object['is_widget_removed'] = isWidgetRemoved; Reflect.apply(track, defaultImport, [USER_PROFILE_EDIT_SAVED, object]); } function trackUserProfileWishlistAction(a0) { // fn#67508, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:8700:8226, offset: 0x01c26428, size: 275 bytes, params: 2, frame: 28 const guildId = a0.guildId; const channelId = a0.channelId; const analyticsLocations = a0.analyticsLocations; const action = a0.action; const wishlistId = a0.wishlistId; const skuId = a0.skuId; const productLines = a0.productLines; const trackUserProfileActionBinding = trackUserProfileAction; let object = {}; copyDataProperties(object, a0, guildId); object['action'] = action; trackUserProfileActionBinding(object); const defaultImport = AnalyticsUtils; const track = defaultImport.track; const USER_PROFILE_WISHLIST_ACTION = AnalyticEvents.USER_PROFILE_WISHLIST_ACTION; object = {}; copyDataProperties(object, AppAnalyticsUtilsModule.collectGuildAnalyticsMetadata(guildId), guildId); copyDataProperties(object, AppAnalyticsUtilsModule.collectChannelAnalyticsMetadataFromId(channelId), guildId); copyDataProperties(object, getTrackUserProfileProperties(a0), guildId); object['location_stack'] = analyticsLocations; object['action_type'] = action; object['wishlist_id'] = wishlistId; object['sku_id'] = skuId; object['product_lines'] = productLines != null ? global.Array.from(productLines) : []; Reflect.apply(track, defaultImport, [USER_PROFILE_WISHLIST_ACTION, object]); } } function _fun67494(a0) { // fn#67494, offset: 0x00d8c8a1, size: 16 bytes, params: 2, frame: 2 return typeof a0 === 'string'; } global.__d(_fun67485, 8515, [7670, 5221, 4492, 5109, 1945, 4396, 3793, 1878, 5189, 8516, 661, 482, 1423, 8490, 683, 4863, 8517, 2]) /* metro module 8515, dependencies: [7670, 5221, 4492, 5109, 1945, 4396, 3793, 1878, 5189, 8516, 661, 482, 1423, 8490, 683, 4863, 8517, 2] */;