Files
discord-decomp/modules/dismissible_content/DismissibleContentUtils.tsx
T
2026-11-01 12:12:55 +02:00

388 lines
16 KiB
TypeScript

// Metro module 1360 (f1361).
import _slicedToArray from "../../_bundle/_slicedToArray";
import UserSettingsProtoStore from "../user_settings/UserSettingsProtoStore";
import { DCFEventTypes } from "./DCFEventStore";
import DismissibleContentFrameworkStore from "./DismissibleContentFrameworkStore";
import { addCandidateContent, getCurrentlyShownCounts, isContentShown, removeCandidateContent } from "./DismissibleContentShownStateStore";
import { ContentDismissActionType } from "./DismissibleContentConstants";
import { AnalyticEvents } from "../../Constants";
import { isVersionedDismissibleContent, isSnowflakeBoundDismissibleContent } from "./DismissibleContentTypes";
import { getVersionedDismissibleContentCurrentVersion } from "./VersionedDismissibleContentUtils";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
import { updateRecurringDismissibleContentState, updateGuildDismissedContent } from "../user_settings/UserSettingsProtoActionCreators";
import { disableNewUserDismissibleContent } from "./NewUserDismissibleContentRegistry";
import { useStateFromStores } from "../../_bundle/Module589";
import { DismissibleContent } from "../../_bundle/Module1358";
import Dispatcher from "../../Dispatcher";
import { handleDCDismissed, handleDCShownToUser } from "./DismissibleContentFrameworkActionCreators";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
import { CONTENT_TYPES_WITH_BYPASS_FATIGUE } from "./DismissibleContentFatigueConfig";
let c1130_14, addTimeRecurringDismissedContent, addSnowflakeBoundDismissedContent, c1130_18, markDismissibleContentAsDismissedPreProcessing, markDismissibleContentAsDismissedPostProcessing, getNextNumTimesDismissed, markVersionedDismissibleContentAsDismissed, trackDismissibleContentShown, trackDismissibleContentDismissed;
const addVersionedDismissedContent = function addVersionedDismissedContent(a0, versionedDismissibleContentCurrentVersion, a2) {
return updateRecurringDismissibleContentState(a0, {
lastDismissedVersion: versionedDismissibleContentCurrentVersion,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
};
addTimeRecurringDismissedContent = function addTimeRecurringDismissedContent(a0, nextNumTimesDismissed) {
return updateRecurringDismissibleContentState(a0, {
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: "0",
numTimesDismissed: nextNumTimesDismissed
});
};
addSnowflakeBoundDismissedContent = function addSnowflakeBoundDismissedContent(a0, snowflakeId, nextNumTimesDismissed) {
return updateRecurringDismissibleContentState(a0, {
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: snowflakeId,
numTimesDismissed: nextNumTimesDismissed
});
};
markDismissibleContentAsDismissedPreProcessing = function markDismissibleContentAsDismissedPreProcessing(a0, a1) {
if (isContentShown(a0) || a1.forceTrack) {
trackDismissibleContentDismissed(a0, a1);
}
let guildId = a1.guildId;
if (guildId == null) {
guildId = void 0;
}
handleDCDismissed(a0, guildId);
};
markDismissibleContentAsDismissedPostProcessing = function markDismissibleContentAsDismissedPostProcessing(a0, a1) {
removeCandidateContent({
content: a0,
groupName: a1?.groupName
}, !DismissibleContentFrameworkStore.hasUserHitDCCap());
};
getNextNumTimesDismissed = function getNextNumTimesDismissed(a0, a1) {
if (a1.numTimesDismissed != null) {
return a1.numTimesDismissed;
}
const userContent = UserSettingsProtoStore.settings.userContent;
let r13 = (userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0])?.numTimesDismissed;
if (r13 == null) {
r13 = 0;
}
return r13 + 1;
};
markVersionedDismissibleContentAsDismissed = async function markVersionedDismissibleContentAsDismissed(c24395_0, c24395_1, c24395_2) {
let c24395_4;
c24395_4 = void 0;
let c28879_0 = c24395_0;
let c28879_1 = c24395_2;
const nextNumTimesDismissed = getNextNumTimesDismissed(c24395_0, c24395_2);
markDismissibleContentAsDismissedPreProcessing(c24395_0, c24395_2);
await addVersionedDismissedContent(c24395_0, c24395_1, nextNumTimesDismissed);
(0, markDismissibleContentAsDismissedPostProcessing)(c28879_0, c28879_1);
};
trackDismissibleContentShown = function trackDismissibleContentShown(a0, a1) {
const r16 = _slicedToArray(getCurrentlyShownCounts(), 2);
AnalyticsUtils.track(AnalyticEvents.DISMISSIBLE_CONTENT_SHOWN, {
type: DismissibleContent[a0],
content_count: r16[0],
fatigable_content_count: r16[1],
group_name: a1?.groupName,
bypass_fatigue: CONTENT_TYPES_WITH_BYPASS_FATIGUE.has(a0),
guild_id: a1?.guildId,
version: a1?.version,
snowflake_id: a1?.snowflakeId
});
};
trackDismissibleContentDismissed = function trackDismissibleContentDismissed(a0, a1) {
let num_times_dismissed;
const [content_count] = getCurrentlyShownCounts();
const renderedAtTimestamp = DismissibleContentFrameworkStore.getRenderedAtTimestamp(a0);
const date = new Date();
const shown_duration = renderedAtTimestamp == null ? null : date.getTime() - renderedAtTimestamp;
if (a1?.guildId != null) {
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(a1.guildId);
let r52 = (guildDismissedContentState == null ? void 0 : guildDismissedContentState[a0])?.numTimesDismissed;
if (r52 == null) {
r52 = 0;
}
num_times_dismissed = r52 + 1;
} else {
const r35 = a1 == null ? {} : a1;
if (r35.numTimesDismissed != null) {
num_times_dismissed = r35.numTimesDismissed;
} else {
const userContent = UserSettingsProtoStore.settings.userContent;
let r44 = (userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0])?.numTimesDismissed;
if (r44 == null) {
r44 = 0;
}
num_times_dismissed = r44 + 1;
}
}
const DISMISSIBLE_CONTENT_DISMISSED = AnalyticEvents.DISMISSIBLE_CONTENT_DISMISSED;
let action = a1?.dismissAction;
if (action == null) {
action = ContentDismissActionType.UNKNOWN;
}
AnalyticsUtils.track(DISMISSIBLE_CONTENT_DISMISSED, {
type: DismissibleContent[a0],
action,
content_count,
group_name: a1?.groupName,
bypass_fatigue: CONTENT_TYPES_WITH_BYPASS_FATIGUE.has(a0),
guild_id: a1?.guildId,
shown_duration,
version: a1?.version,
num_times_dismissed,
snowflake_id: a1?.snowflakeId
});
};
c1130_14 = 2592000000;
c1130_18 = new Set([DismissibleContent.ACCOUNT_LINK_INVITE_FRIENDS, DismissibleContent.ACCOUNT_LINK_PROMPT, DismissibleContent.AUTOCLIPPING_ACCOUNT_PANEL_COACHMARK]);
export const SNOWFLAKE_BOUND_DISMISSIBLE_CONTENT_DURATION_MS = 2592000000;
export function getDismissedRecurringDismissibleContentState(a0) {
const userContent = UserSettingsProtoStore.settings.userContent;
const r6 = userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0];
const r24 = {
lastDismissedVersion: isVersionedDismissibleContent(a0) ? getVersionedDismissibleContentCurrentVersion(a0) : 0,
lastDismissedAtMs: new Date().getTime().toString(),
lastDismissedObjectId: isSnowflakeBoundDismissibleContent(a0) ? SnowflakeUtils.fromTimestamp(Date.now() + c1130_14) : "0",
numTimesDismissed: null
};
let numTimesDismissed = r6?.numTimesDismissed;
if (numTimesDismissed == null) {
numTimesDismissed = 0;
}
r24.numTimesDismissed = numTimesDismissed;
return r24;
}
export { addVersionedDismissedContent };
export { addTimeRecurringDismissedContent };
export { addSnowflakeBoundDismissedContent };
export function UNSAFE_addGuildDismissedContent(a0, a1, a2) {
return updateGuildDismissedContent(a0, a1, {
dismissed: true,
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
}
export function UNSAFE_removeGuildDismissedContent(a0, a1, a2) {
return updateGuildDismissedContent(a0, a1, {
dismissed: false,
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
}
export function UNSAFE_addTimeRecurringGuildDismissedContent(a0, a1, a2) {
return updateGuildDismissedContent(a0, a1, {
dismissed: false,
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
}
export function UNSAFE_removeTimeRecurringGuildDismissedContent(a0, a1, a2) {
return updateGuildDismissedContent(a0, a1, {
dismissed: false,
lastDismissedVersion: 0,
lastDismissedAtMs: "0",
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
}
export function UNSAFE_addSnowflakeBoundGuildDismissedContent(a0, a1, a2, a3) {
return updateGuildDismissedContent(a0, a2, {
dismissed: false,
lastDismissedVersion: 0,
lastDismissedAtMs: Date.now().toString(),
lastDismissedObjectId: a1,
numTimesDismissed: a3
});
}
export function UNSAFE_removeSnowflakeBoundGuildDismissedContent(a0, a1, a2) {
return updateGuildDismissedContent(a0, a1, {
dismissed: false,
lastDismissedVersion: 0,
lastDismissedAtMs: "0",
lastDismissedObjectId: "0",
numTimesDismissed: a2
});
}
export function isVersionedDismissibleContentDismissed(a0, a1) {
if (disableNewUserDismissibleContent(a0)) {
return {
isDismissed: true,
lastDismissedVersion: null
};
}
const userContent = UserSettingsProtoStore.settings.userContent;
const lastDismissedVersion = userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0]?.lastDismissedVersion;
const r18 = a1 == null ? getVersionedDismissibleContentCurrentVersion(a0) : a1;
return {
isDismissed: lastDismissedVersion != null && lastDismissedVersion >= r18,
lastDismissedVersion
};
}
export function isTimeRecurringDismissibleContentDismissed(a0, a1) {
if (disableNewUserDismissibleContent(a0)) {
return {
isDismissed: true,
lastDismissedAtMs: null
};
}
const userContent = UserSettingsProtoStore.settings.userContent;
const r17 = userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0]?.lastDismissedAtMs;
const lastDismissedAtMs = r17 != null ? r17 !== "0" ? Number.isNaN(Number(r17)) ? void 0 : Number(r17) : void 0 : void 0;
if (lastDismissedAtMs === void 0) {
return {
isDismissed: false,
lastDismissedAtMs: void 0
};
}
const r31 = a1 != null;
let isDismissed = true;
if (r31) {
const r34 = lastDismissedAtMs + a1.cooldownDurationMs;
const r38 = Date.now();
const r40 = a1.showAfterTimestamp == null || r38 >= a1.showAfterTimestamp && lastDismissedAtMs <= a1.showAfterTimestamp;
isDismissed = r38 < r34 || !r40;
}
return {
isDismissed,
lastDismissedAtMs
};
}
export function isTimeRecurringSnowflakeBoundDismissibleContentDismissed(a0, a1, a2) {
if (disableNewUserDismissibleContent(a0)) {
return true;
}
const userContent = UserSettingsProtoStore.settings.userContent;
const r21 = userContent == null ? void 0 : userContent.recurringDismissibleContentStates[a0]?.lastDismissedObjectId;
const userContent2 = UserSettingsProtoStore.settings.userContent;
const r28 = userContent2 == null ? void 0 : userContent2.recurringDismissibleContentStates[a0]?.lastDismissedAtMs;
const r13 = r28 != null ? r28 !== "0" ? Number.isNaN(Number(r28)) ? void 0 : Number(r28) : void 0 : void 0;
const r3 = a2 != null;
let r41 = false;
if (r3) {
const r42 = r13 != null;
r41 = false;
if (r42) {
const r44 = r13 + a2.cooldownDurationMs;
const r48 = Date.now();
const r4 = a2.showAfterTimestamp == null || r48 >= a2.showAfterTimestamp && r13 <= a2.showAfterTimestamp;
r41 = r48 < r44 || !r4;
}
}
const r54 = r21 != null && SnowflakeUtils.compare(a1, r21) !== 1;
if (r41) {
r41 = r54;
}
return r41;
}
export function UNSAFE_isSingleUseGuildDismissibleContentDismissed(a0, a1) {
if (disableNewUserDismissibleContent(a0)) {
return true;
}
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(a1);
return guildDismissedContentState != null && guildDismissedContentState[a0] != null && guildDismissedContentState[a0].dismissed === true;
}
export function useIsSingleUseGuildDismissibleContentDismissed(c12980_0, c12980_1) {
return useStateFromStores([UserSettingsProtoStore], () => {
let r1 = c12980_0 != null;
if (r1) {
const r14 = disableNewUserDismissibleContent(c12980_0);
let r15 = true;
if (!r14) {
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(c12980_1);
r15 = guildDismissedContentState != null && guildDismissedContentState[c12980_0] != null && guildDismissedContentState[c12980_0].dismissed === true;
}
r1 = r15;
}
return r1;
});
}
export function UNSAFE_isTimeRecurringGuildDismissibleContentDismissed(a0, a1) {
if (disableNewUserDismissibleContent(a0)) {
return true;
}
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(a1);
return guildDismissedContentState != null && guildDismissedContentState[a0] != null && guildDismissedContentState[a0].lastDismissedAtMs != null && guildDismissedContentState[a0].lastDismissedAtMs !== "0";
}
export function UNSAFE_isSnowflakeBoundGuildDismissibleContentDismissed(a0, a1) {
if (disableNewUserDismissibleContent(a0)) {
return true;
}
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(a1);
return guildDismissedContentState != null && guildDismissedContentState[a0] != null && guildDismissedContentState[a0].lastDismissedObjectId != null && guildDismissedContentState[a0].lastDismissedObjectId !== "0";
}
export function requestMarkDismissibleContentAsShown(a0, a1, a2, a3) {
if (!isContentShown(a0) && !DismissibleContentFrameworkStore.hasUserHitDCCap(a0, a1?.guildId)) {
const r15 = a3 == null && c1130_18.has(a0);
if (!(a2 ? !r15 : a2)) {
Dispatcher.dispatch({
type: "DCF_EVENT_LOGGED",
eventType: DCFEventTypes.DC_SHOW_REQUEST,
dismissibleContent: a0
});
addCandidateContent({
content: a0,
groupName: a1?.groupName,
onAdded: () => {
handleDCShownToUser(a0, a1?.guildId);
trackDismissibleContentShown(a0, a1);
if (a1 != null) {
const onShown = a1.onShown;
if (onShown != null) {
onShown.call(a1);
}
}
}
});
}
}
}
export { markDismissibleContentAsDismissedPreProcessing };
export { markDismissibleContentAsDismissedPostProcessing };
export async function markLatestVersionDismissibleContentAsDismissed(c24394_0, c24394_1) {
await markVersionedDismissibleContentAsDismissed(c24394_0, getVersionedDismissibleContentCurrentVersion(c24394_0), c24394_1);
}
export function getGuildNextNumTimesDismissed(a0, a1) {
const guildDismissedContentState = UserSettingsProtoStore.getGuildDismissedContentState(a1);
let r11 = (guildDismissedContentState == null ? void 0 : guildDismissedContentState[a0])?.numTimesDismissed;
if (r11 == null) {
r11 = 0;
}
return r11 + 1;
}
export { getNextNumTimesDismissed };
export { markVersionedDismissibleContentAsDismissed };
export async function markSnowflakeBoundDismissibleContentAsDismissed(c24396_0, snowflakeId, c24396_2) {
let c24396_4;
c24396_4 = void 0;
let c28880_0 = c24396_0;
let c28880_1 = c24396_2;
const nextNumTimesDismissed = getNextNumTimesDismissed(c24396_0, c24396_2);
markDismissibleContentAsDismissedPreProcessing(c24396_0, {
...c24396_2,
snowflakeId
});
await addSnowflakeBoundDismissedContent(c24396_0, snowflakeId, nextNumTimesDismissed);
(0, markDismissibleContentAsDismissedPostProcessing)(c28880_0, c28880_1);
}
export async function markTimeRecurringDismissibleContentAsDismissed(c24397_0, c24397_1) {
let c24397_3;
c24397_3 = void 0;
let c28881_0 = c24397_0;
let c28881_1 = c24397_1;
const nextNumTimesDismissed = getNextNumTimesDismissed(c24397_0, c24397_1);
markDismissibleContentAsDismissedPreProcessing(c24397_0, c24397_1);
await addTimeRecurringDismissedContent(c24397_0, nextNumTimesDismissed);
(0, markDismissibleContentAsDismissedPostProcessing)(c28881_0, c28881_1);
}
export { trackDismissibleContentShown };
export { trackDismissibleContentDismissed };