Files
discord-decomp/modules/messages/native/MessageImpressionAnalyticsHelpers.tsx
T
2026-11-01 12:12:55 +02:00

208 lines
8.5 KiB
TypeScript

// Metro module 9495 (f9496).
import { useMemo } from "react";
import InviteStore from "../../../stores/InviteStore";
import SortedVoiceStateStore from "../../../stores/views/SortedVoiceStateStore";
import { ChannelTypes, GuildFeatures, InviteStates, MessageFlags } from "../../../Constants";
import { LinkType } from "../../applications/message_embed/MessageEmbedConstants";
import { InviteTypes } from "../../instant_invite/Constants";
import MessageViewTrackingManager, { MessageViewTrackingType } from "../MessageViewTrackingManager";
import { useIsGuildOfficialMessagesEnabled } from "../GuildOfficialMessageUtils";
import { CodedLinkType } from "../../coded_links/CodedLink";
import { getInviteType, getGuildInviteExtendedType, GuildInviteExtendedType } from "../../instant_invite/InviteTypeUtils";
import { getVoiceChannelListInviteExperiment } from "../VoiceChannelListInviteExperiment";
import { canShowVoiceChannelListInviteEmbed } from "./renderer/row_data/embeds/coded_links/invite/VoiceChannelListInviteEmbed";
import { getInviteInstanceId } from "../../instant_invite/InviteCodeUtils";
const getVoiceInviteEmbedRenderInfo = function getVoiceInviteEmbedRenderInfo(invite) {
if (invite.state !== InviteStates.RESOLVING && invite.state !== InviteStates.EXPIRED && invite.state !== InviteStates.BANNED && invite.state !== InviteStates.ERROR) {
if (getInviteType(invite) !== InviteTypes.GUILD) {
return null;
}
if (getGuildInviteExtendedType(invite) !== GuildInviteExtendedType.VOICE_CHANNEL) {
return null;
}
const id = invite.guild?.id;
return id == null ? null : {
treatmentRendered: getVoiceChannelListInviteExperiment({
guildId: id,
location: "mobile_invite_embed_impression"
}).enabled && canShowVoiceChannelListInviteEmbed(invite)
};
}
return null;
};
export function useShouldTrackAnnouncementMessageViews({ guild, channel, messages, isMessagesReady }) {
const r2 = guild == null;
let r9 = void 0;
if (!r2) {
const features = guild.features;
r9 = features == null ? void 0 : features.has(GuildFeatures.COMMUNITY);
}
if (r9 == null) {
r9 = false;
}
let c17246_3 = r9;
return useMemo(() => {
let r8 = channel.type === ChannelTypes.GUILD_ANNOUNCEMENT && c17246_3;
let r9 = isMessagesReady;
if (isMessagesReady) {
r9 = messages.some((message) => message.messageReference != null && message.webhookId != null && message.hasFlag(MessageFlags.IS_CROSSPOST) && channel.guild_id != null);
}
if (!r8) {
r8 = r9;
}
return r8;
}, [channel.type, channel.guild_id, r9, isMessagesReady, messages]);
}
export function useShouldTrackRichPresenceInviteEmbedViews({ messages: messages2, isMessagesReady: isMessagesReady2 }) {
return useMemo(() => {
let r1 = isMessagesReady2;
if (isMessagesReady2) {
r1 = messages2.some((item) => item.activity != null && item.activity.party_id != null && item.application != null);
}
return r1;
}, [messages2, isMessagesReady2]);
}
export function handleAnnouncementMessageViewTracking(a0, a1, a2, c17248_1) {
let c17248_2;
const guildId = a2;
if (a1 && a2 != null) {
const r4 = [];
c17248_2 = r4;
a0.forEach(({ message }) => {
const r14 = message.messageReference?.guild_id != null && message.webhookId != null && message.hasFlag(MessageFlags.IS_CROSSPOST);
L24: {
if (!message.hasFlag(MessageFlags.EPHEMERAL)) {
if (c17248_1.type !== ChannelTypes.GUILD_ANNOUNCEMENT && !r14) {
break L24;
}
c17248_2.push({
type: MessageViewTrackingType.ANNOUNCEMENT,
messageId: r14 && message.messageReference != null ? message.messageReference.message_id : message.id,
channelId: c17248_1.id,
guildId,
sourceChannelId: r14 && message.messageReference != null ? message.messageReference.channel_id : c17248_1.id,
sourceGuildId: r14 ? message.messageReference?.guild_id != null ? message.messageReference.guild_id : guildId : guildId
});
}
}
});
MessageViewTrackingManager.handleMessageListVisibilityChange(r4, MessageViewTrackingType.ANNOUNCEMENT);
}
}
export function handleRichPresenceInviteEmbedViewTracking(a0, a1, guildId2, c17249_1) {
let c17249_2;
if (a1) {
const r4 = [];
c17249_2 = r4;
a0.forEach(({ message }) => {
if (!(message.hasFlag(MessageFlags.EPHEMERAL) || message.activity == null || message.activity.party_id == null || message.application == null)) {
c17249_2.push({
type: MessageViewTrackingType.APP_EMBED,
messageId: message.id,
channelId: c17249_1.id,
guildId: guildId2,
applicationId: message.application.id,
linkType: LinkType.RICH_PRESENCE_INVITE
});
}
});
MessageViewTrackingManager.handleMessageListVisibilityChange(r4, MessageViewTrackingType.APP_EMBED);
}
}
export function useShouldTrackOfficialMessageViews({ guild, messages: messages3, isMessagesReady: isMessagesReady3 }) {
let r14 = guild?.id;
if (r14 == null) {
r14 = null;
}
const isGuildOfficialMessagesEnabled = useIsGuildOfficialMessagesEnabled(r14, "useShouldTrackOfficialMessageViews");
return useMemo(() => {
let r0 = isGuildOfficialMessagesEnabled;
if (isGuildOfficialMessagesEnabled) {
r0 = isMessagesReady3;
}
if (r0) {
r0 = messages3.some((item) => item.hasFlag(MessageFlags.IS_GUILD_OFFICIAL));
}
return r0;
}, [isGuildOfficialMessagesEnabled, isMessagesReady3, messages3]);
}
export function handleOfficialMessageViewTracking(a0, a1, a2, c17251_1) {
let c17251_2;
const guildId3 = a2;
if (a1 && a2 != null) {
const r4 = [];
c17251_2 = r4;
a0.forEach(({ message }) => {
const hasFlag = message.hasFlag(MessageFlags.EPHEMERAL);
if (hasFlag ? !hasFlag : message.hasFlag(MessageFlags.IS_GUILD_OFFICIAL)) {
c17251_2.push({
type: MessageViewTrackingType.OFFICIAL_MESSAGE,
messageId: message.id,
channelId: c17251_1.id,
guildId: guildId3
});
}
});
MessageViewTrackingManager.handleMessageListVisibilityChange(r4, MessageViewTrackingType.OFFICIAL_MESSAGE);
}
}
export function useShouldTrackVoiceInviteEmbedViews({ messages: messages4, isMessagesReady: isMessagesReady4 }) {
return useMemo(() => {
let r0 = isMessagesReady4;
if (isMessagesReady4) {
r0 = messages4.some((item) => item.codedLinks.some((codedLink) => codedLink.type === CodedLinkType.INVITE));
}
return r0;
}, [messages4, isMessagesReady4]);
}
export function handleVoiceInviteEmbedViewTracking(a0, a1, guildId4, c17253_1) {
let c17253_2;
if (a1) {
const r4 = [];
c17253_2 = r4;
a0.forEach(({ message }) => {
if (!message.hasFlag(MessageFlags.EPHEMERAL)) {
for (const codedLink of message.codedLinks) {
const r41 = codedLink;
if (codedLink.type === CodedLinkType.INVITE) {
const invite = InviteStore.getInvite(r41.code);
if (invite != null) {
const voiceInviteEmbedRenderInfo = getVoiceInviteEmbedRenderInfo(invite);
if (voiceInviteEmbedRenderInfo != null) {
let r59 = invite.channel?.id;
if (r59 == null) {
r59 = null;
}
const inviteChannelId = r59;
let r64 = invite.guild?.id;
if (r64 == null) {
r64 = null;
}
const inviteGuildId = r64;
const hasActiveStream = inviteChannelId != null && inviteGuildId != null && SortedVoiceStateStore.getVoiceStatesForChannelAlt(inviteChannelId, inviteGuildId).some((item) => item.voiceState.selfStream);
let inviteInstanceId = getInviteInstanceId(r41.code, message.id);
if (inviteInstanceId == null) {
inviteInstanceId = null;
}
c17253_2.push({
type: MessageViewTrackingType.VOICE_INVITE_EMBED,
messageId: message.id,
channelId: c17253_1.id,
guildId: guildId4,
inviteCode: r41.code,
inviteGuildId,
inviteChannelId,
inviteInstanceId,
treatmentRendered: voiceInviteEmbedRenderInfo.treatmentRendered,
hasActiveStream
});
}
}
}
}
}
});
MessageViewTrackingManager.handleMessageListVisibilityChange(r4, MessageViewTrackingType.VOICE_INVITE_EMBED);
}
}