decord/stable/source/modules/messages/native/MessageImpressionAnalyticsHelpers.tsx
2026-10-06 22:12:49 +00:00

459 lines
17 KiB
TypeScript

// Module ID: 9790
// Function ID: 9791
// Name: MessageImpressionAnalyticsHelpers
// Dependencies: [19, 4818, 4861, 1086, 7106, 7159, 558, 576, 9791, 6686, 4822, 7158, 9792, 9793, 4819, 2]
// Exports: handleAnnouncementMessageViewTracking, handleOfficialMessageViewTracking, handleRichPresenceInviteEmbedViewTracking, handleVoiceInviteEmbedViewTracking
// Module 9790 (MessageImpressionAnalyticsHelpers)
import react2 from "react" /* 576 */;
import CodedLink from "CodedLink" /* 4822 */;
import GuildOfficialMessageUtils from "GuildOfficialMessageUtils" /* 6686 */;
import MessageEmbedConstants from "MessageEmbedConstants" /* 7106 */;
import InviteTypeUtils from "InviteTypeUtils" /* 7158 */;
import Constants2 from "Constants" /* 7159 */;
import MessageViewTrackingManager from "MessageViewTrackingManager" /* 9791 */;
import VoiceChannelListInviteExperiment from "VoiceChannelListInviteExperiment" /* 9792 */;
import VoiceChannelListInviteEmbed from "VoiceChannelListInviteEmbed" /* 9793 */;
import react from "react" /* 19 */;
import InviteStore from "InviteStore" /* 4818 */;
import SortedVoiceStateStore from "SortedVoiceStateStore" /* 4861 */;
import Constants from "Constants" /* 1086 */;
import ReactCompilerGating_mod from "ReactCompilerGating" /* 558 */;
import size from "module_2" /* 2 */;
const require = globalThis.__r;
let _require, importDefault, message;
let c9;
let metroImportAll;
let metroImportDefault;
let metroRequire;
function getVoiceInviteEmbedRenderInfo(state) {
if (state.state !== metroImportAll.RESOLVING) {
if (state.state !== metroImportAll.EXPIRED) {
if (state.state !== metroImportAll.BANNED) {
if (state.state !== metroImportAll.ERROR) {
const obj5 = InviteTypeUtils;
if (obj5.getInviteType(state) !== InviteTypes.GUILD) {
return null;
} else {
const tmp7Result = InviteTypeUtils;
const guildInviteExtendedType = tmp7Result.getGuildInviteExtendedType(state);
if (guildInviteExtendedType !== InviteTypeUtils.GuildInviteExtendedType.VOICE_CHANNEL) {
return null;
} else {
const guild = state.guild;
let id;
if (guild != null) {
id = guild.id;
}
let tmp4 = null;
if (null != id) {
const obj = { guildId: id, location: "mobile_invite_embed_impression" };
const tmp7Result3 = VoiceChannelListInviteExperiment;
let enabled = tmp7Result3.getVoiceChannelListInviteExperiment(obj).enabled;
if (enabled) {
const tmp7Result4 = VoiceChannelListInviteEmbed;
enabled = tmp7Result4.canShowVoiceChannelListInviteEmbed(state);
}
tmp4 = { treatmentRendered: enabled };
const obj2 = { treatmentRendered: enabled };
}
return tmp4;
}
}
}
}
}
}
return null;
}
({ ChannelTypes: metroRequire, GuildFeatures: metroImportDefault, InviteStates: metroImportAll, MessageFlags: c9 } = Constants);
const LinkType = MessageEmbedConstants.LinkType;
const InviteTypes = Constants2.InviteTypes;
let ReactCompilerGating = ReactCompilerGating_mod;
let tmp3 = ReactCompilerGating.isReactCompilerEnabled() ? ((arg0) => {
let channel;
let guild;
let isMessagesReady;
let messages;
let tmp4;
const obj = channel(576);
const cResult = obj.c(6);
({ guild, channel } = arg0);
({ messages, isMessagesReady } = arg0);
let features1;
const first = cResult[0];
if (guild != null) {
features1 = guild.features;
}
if (first !== features1) {
let flag;
if (guild != null) {
const features = guild.features;
if (features != null) {
flag = features.has(constants2.COMMUNITY);
}
}
if (flag == null) {
flag = false;
}
let features2;
if (guild != null) {
features2 = guild.features;
}
cResult[0] = features2;
cResult[1] = flag;
tmp4 = flag;
} else {
tmp4 = cResult[1];
}
let tmp7 = channel.type === constants.GUILD_ANNOUNCEMENT && tmp4;
if (cResult[2] === channel.guild_id) {
if (cResult[3] === isMessagesReady) {
let tmp8;
if (cResult[4] === messages) {
tmp8 = cResult[5];
}
if (!tmp7) {
tmp7 = tmp8;
}
return tmp7;
}
}
const tmp9 = isMessagesReady && messages.some((messageReference) => {
const hasFlagResult = null != messageReference.messageReference && null != messageReference.webhookId && messageReference.hasFlag(constants.IS_CROSSPOST) && null != channel.guild_id;
return hasFlagResult;
});
cResult[2] = channel.guild_id;
cResult[3] = isMessagesReady;
cResult[4] = messages;
cResult[5] = tmp9;
tmp8 = tmp9;
}) : ((messages) => {
let channel;
let guild;
({ guild, channel } = messages);
messages = messages.messages;
const isMessagesReady = messages.isMessagesReady;
let flag;
if (guild != null) {
const features = guild.features;
if (features != null) {
let tmp = constants2;
flag = features.has(constants2.COMMUNITY);
}
}
if (flag == null) {
flag = false;
}
const items = [, , , , ];
({ type: arr[0], guild_id: arr[1] } = channel);
items[2] = flag;
items[3] = isMessagesReady;
items[4] = messages;
return flag.useMemo(() => {
let guild_id;
let tmp = channel.type === metroRequire.GUILD_ANNOUNCEMENT && flag;
let someResult = isMessagesReady;
if (someResult) {
someResult = messages.some((messageReference) => {
const hasFlagResult = null != messageReference.messageReference && null != messageReference.webhookId && messageReference.hasFlag(constants.IS_CROSSPOST) && null != guild_id.guild_id;
return hasFlagResult;
});
}
if (!tmp) {
tmp = someResult;
}
return tmp;
}, items);
});
ReactCompilerGating = ReactCompilerGating_mod;
let tmp4 = ReactCompilerGating.isReactCompilerEnabled() ? ((arg0) => {
let isMessagesReady;
let messages;
const obj = react2;
const cResult = obj.c(3);
({ messages, isMessagesReady } = arg0);
if (cResult[0] === isMessagesReady) {
let tmp2;
if (cResult[1] === messages) {
tmp2 = cResult[2];
}
return tmp2;
}
const tmp3 = isMessagesReady && messages.some((activity) => null != activity.activity && null != activity.activity.party_id && null != activity.application);
cResult[0] = isMessagesReady;
cResult[1] = messages;
cResult[2] = tmp3;
tmp2 = tmp3;
}) : ((messages) => {
messages = messages.messages;
const isMessagesReady = messages.isMessagesReady;
const items = [messages, isMessagesReady];
return react.useMemo(() => {
const someResult = isMessagesReady && messages.some((activity) => null != activity.activity && null != activity.activity.party_id && null != activity.application);
return someResult;
}, items);
});
ReactCompilerGating = ReactCompilerGating_mod;
let tmp5 = ReactCompilerGating.isReactCompilerEnabled() ? ((arg0) => {
let guild;
let isMessagesReady;
let messages;
const obj = react2;
const cResult = obj.c(4);
({ guild, messages, isMessagesReady } = arg0);
let id;
const useIsGuildOfficialMessagesEnabled = GuildOfficialMessageUtils.useIsGuildOfficialMessagesEnabled;
GuildOfficialMessageUtils;
if (guild != null) {
id = guild.id;
}
if (id == null) {
id = null;
}
const isGuildOfficialMessagesEnabled = useIsGuildOfficialMessagesEnabled(id, "useShouldTrackOfficialMessageViews");
if (cResult[0] === isMessagesReady) {
if (cResult[1] === isGuildOfficialMessagesEnabled) {
let tmp5;
if (cResult[2] === messages) {
tmp5 = cResult[3];
}
return tmp5;
}
}
const tmp6 = isGuildOfficialMessagesEnabled && isMessagesReady && messages.some((hasFlag) => hasFlag.hasFlag(constants.IS_GUILD_OFFICIAL));
cResult[0] = isMessagesReady;
cResult[1] = isGuildOfficialMessagesEnabled;
cResult[2] = messages;
cResult[3] = tmp6;
tmp5 = tmp6;
}) : ((isMessagesReady) => {
let guild;
let messages;
({ guild, messages } = isMessagesReady);
isMessagesReady = isMessagesReady.isMessagesReady;
let isGuildOfficialMessagesEnabled;
let id;
const useIsGuildOfficialMessagesEnabled = messages(isGuildOfficialMessagesEnabled[9]).useIsGuildOfficialMessagesEnabled;
messages(isGuildOfficialMessagesEnabled[9]);
if (guild != null) {
id = guild.id;
}
if (id == null) {
id = null;
}
isGuildOfficialMessagesEnabled = useIsGuildOfficialMessagesEnabled(id, "useShouldTrackOfficialMessageViews");
const items = [isGuildOfficialMessagesEnabled, isMessagesReady, messages];
return react.useMemo(() => {
const someResult = isGuildOfficialMessagesEnabled && isMessagesReady && messages.some((hasFlag) => hasFlag.hasFlag(constants.IS_GUILD_OFFICIAL));
return someResult;
}, items);
});
ReactCompilerGating = ReactCompilerGating_mod;
let tmp6 = ReactCompilerGating.isReactCompilerEnabled() ? ((arg0) => {
let isMessagesReady;
let messages;
const obj = react2;
const cResult = obj.c(3);
({ messages, isMessagesReady } = arg0);
if (cResult[0] === isMessagesReady) {
let tmp2;
if (cResult[1] === messages) {
tmp2 = cResult[2];
}
return tmp2;
}
const tmp3 = isMessagesReady && messages.some((codedLinks) => {
codedLinks = codedLinks.codedLinks;
return codedLinks.some((type) => type.type === closure_1_0(closure_1_2[10]).CodedLinkType.INVITE);
});
cResult[0] = isMessagesReady;
cResult[1] = messages;
cResult[2] = tmp3;
tmp2 = tmp3;
}) : ((messages) => {
messages = messages.messages;
const isMessagesReady = messages.isMessagesReady;
const items = [messages, isMessagesReady];
return react.useMemo(() => {
const someResult = isMessagesReady && messages.some((codedLinks) => {
codedLinks = codedLinks.codedLinks;
return codedLinks.some((type) => type.type === closure_1_0(closure_1_2[10]).CodedLinkType.INVITE);
});
return someResult;
}, items);
});
let result = size.fileFinishedImporting("modules/messages/native/MessageImpressionAnalyticsHelpers.tsx");
export const useShouldTrackAnnouncementMessageViews = tmp3;
export const useShouldTrackRichPresenceInviteEmbedViews = tmp4;
export const handleAnnouncementMessageViewTracking = function handleAnnouncementMessageViewTracking(arr, shouldTrackAnnouncementMessageViews, guildId, channel) {
_require = guildId;
importDefault = channel;
const tmp = shouldTrackAnnouncementMessageViews;
if (tmp) {
if (null != guildId) {
const items = [];
const item = arr.forEach((message) => {
message = message.message;
const messageReference = message.messageReference;
let guild_id1;
if (messageReference != null) {
guild_id1 = messageReference.guild_id;
}
const hasFlagResult = null != guild_id1 && null != message.webhookId && message.hasFlag(constants.IS_CROSSPOST);
if (!message.hasFlag(constants.EPHEMERAL)) {
if (channel.type === metroRequire.GUILD_ANNOUNCEMENT) {
if (hasFlagResult) {
let id;
if (null != message.messageReference) {
id = message.messageReference.channel_id;
}
if (hasFlagResult) {
let guild_id;
const messageReference2 = message.messageReference;
let guild_id2;
if (messageReference2 != null) {
guild_id2 = messageReference2.guild_id;
}
if (null != guild_id2) {
guild_id = message.messageReference.guild_id;
}
if (hasFlagResult) {
let id2;
if (null != message.messageReference) {
id2 = message.messageReference.message_id;
}
const push = items.push;
const obj = { type: MessageViewTrackingManager.MessageViewTrackingType.ANNOUNCEMENT, messageId: id2, channelId: channel.id, guildId, sourceChannelId: id, sourceGuildId: guild_id };
push(obj);
}
id2 = message.id;
}
guild_id = guildId;
}
id = tmp4.id;
}
}
});
let obj = require("MessageViewTrackingManager");
const result = obj.handleMessageListVisibilityChange(items, require("MessageViewTrackingManager").MessageViewTrackingType.ANNOUNCEMENT);
}
}
};
export const handleRichPresenceInviteEmbedViewTracking = function handleRichPresenceInviteEmbedViewTracking(arr, shouldTrackRichPresenceInviteEmbedViews, guildId, channel) {
_require = guildId;
importDefault = channel;
const tmp = shouldTrackRichPresenceInviteEmbedViews;
if (tmp) {
const items = [];
const item = arr.forEach((message) => {
message = message.message;
const hasFlagResult = message.hasFlag(constants.EPHEMERAL) || null == message.activity || null == message.activity.party_id || null == message.application;
if (!hasFlagResult) {
const push = items.push;
const obj = { type: MessageViewTrackingManager.MessageViewTrackingType.APP_EMBED, messageId: message.id, channelId: channel.id, guildId, applicationId: message.application.id, linkType: LinkType.RICH_PRESENCE_INVITE };
push(obj);
}
});
let obj = require("MessageViewTrackingManager");
const result = obj.handleMessageListVisibilityChange(items, require("MessageViewTrackingManager").MessageViewTrackingType.APP_EMBED);
}
};
export const useShouldTrackOfficialMessageViews = tmp5;
export const handleOfficialMessageViewTracking = function handleOfficialMessageViewTracking(arr, shouldTrackOfficialMessageViews, guildId, channel) {
_require = guildId;
importDefault = channel;
const tmp = shouldTrackOfficialMessageViews;
if (tmp) {
if (null != guildId) {
let tmp3 = arr;
const items = [];
const item = arr.forEach((message) => {
message = message.message;
const hasFlagResult = message.hasFlag(constants.EPHEMERAL);
const tmp3 = !hasFlagResult && message.hasFlag(constants.IS_GUILD_OFFICIAL);
if (tmp3) {
const push = items.push;
const obj = { type: MessageViewTrackingManager.MessageViewTrackingType.OFFICIAL_MESSAGE, messageId: message.id, channelId: channel.id, guildId };
push(obj);
}
});
let obj = require("MessageViewTrackingManager");
const result = obj.handleMessageListVisibilityChange(items, require("MessageViewTrackingManager").MessageViewTrackingType.OFFICIAL_MESSAGE);
}
}
};
export const useShouldTrackVoiceInviteEmbedViews = tmp6;
export const handleVoiceInviteEmbedViewTracking = function handleVoiceInviteEmbedViewTracking(arr, shouldTrackVoiceInviteEmbedViews, guildId, channel) {
_require = guildId;
importDefault = channel;
const tmp = shouldTrackVoiceInviteEmbedViews;
if (tmp) {
const items = [];
const item = arr.forEach((message) => {
let inviteInstanceId;
let tmp20;
message = message.message;
if (!message.hasFlag(constants.EPHEMERAL)) {
const codedLinks = message.codedLinks;
const iter = codedLinks[Symbol.iterator]();
const nextResult = iter.next();
while (iter !== undefined) {
let tmp6 = nextResult;
let tmp7 = require;
if (nextResult.type === CodedLink.CodedLinkType.INVITE) {
let invite = InviteStore.getInvite(tmp6.code);
let tmp34 = invite;
if (null != invite) {
let tmp37 = getVoiceInviteEmbedRenderInfo(tmp34);
if (null != tmp37) {
channel = tmp34.channel;
let id;
if (channel != null) {
id = channel.id;
}
if (id == null) {
id = null;
}
let tmp10 = id;
let guild = tmp34.guild;
let id1;
if (guild != null) {
id1 = guild.id;
}
if (id1 == null) {
id1 = null;
}
let tmp13 = id1;
let someResult = null != tmp10;
if (someResult) {
someResult = null != tmp13;
}
if (someResult) {
let voiceStatesForChannelAlt = SortedVoiceStateStore.getVoiceStatesForChannelAlt(tmp10, tmp13);
someResult = voiceStatesForChannelAlt.some((voiceState) => voiceState.voiceState.selfStream);
}
let obj = { type: tmp7(9791).MessageViewTrackingType.VOICE_INVITE_EMBED, messageId: message.id, channelId: channel.id, guildId, inviteCode: tmp6.code, inviteGuildId: tmp13, inviteChannelId: tmp10, inviteInstanceId, treatmentRendered: tmp38.treatmentRendered, hasActiveStream: tmp20 };
tmp20 = someResult;
let push = items.push;
let tmp7Result = tmp7(4819);
inviteInstanceId = tmp7Result.getInviteInstanceId(tmp6.code, message.id);
if (inviteInstanceId == null) {
inviteInstanceId = null;
}
let arr = push(obj);
}
}
}
continue;
}
}
});
let obj = require("MessageViewTrackingManager");
let tmp6 = _require;
const result = obj.handleMessageListVisibilityChange(items, require("MessageViewTrackingManager").MessageViewTrackingType.VOICE_INVITE_EMBED);
}
};