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

107 lines
5.0 KiB
TypeScript

// Metro module 11189 (f11190).
import PermissionStore from "../../stores/PermissionStore";
import { MessageAttachmentFlags, Permissions } from "../../Constants";
import * as _ObscuredMediaUtils from "../explicit_media_redaction/ObscuredMediaUtils";
import { getMediaObscuredReasonFromBitmask, getEnabledHarmTypesBitmaskForChannelType } from "../explicit_media_redaction/ObscuredMediaUtils";
import { ObscuredMediaTypes, ContentHarmTypeChannel } from "../explicit_media_redaction/ExplicitMediaRedactionModels";
import { ObscureReason } from "../explicit_media_redaction/ObscureMediaModels";
import { hasFlag } from "../../_bundle/Module1384";
import { ForumPostMediaTypes } from "../forums/ForumPostMediaUtils";
import { useStateFromStores } from "../../_bundle/defaultAreStatesEqual";
import { RenderSpoilers } from "../user_settings/UserSettings";
import computeGlobalSpoilerDisplay from "./computeGlobalSpoilerDisplay";
import { intl, t } from "../../intl/index.native";
const getForumPostShouldObscure = function getForumPostShouldObscure(a0, a1, enabledHarmTypesBitmaskForChannelType) {
let r50;
if (a0 == null) {
return [false, void 0];
}
const type = a0.type;
const r10 = ForumPostMediaTypes.EMBED === type ? {
type: ObscuredMediaTypes.Embed,
media: a0
} : ForumPostMediaTypes.ATTACHMENT === type ? {
type: ObscuredMediaTypes.Attachment,
media: a0
} : ForumPostMediaTypes.COMPONENT === type ? {
type: ObscuredMediaTypes.GenericMedia,
media: a0.srcUnfurledMediaItem
} : null;
if (r10 == null) {
return [false, void 0];
}
const mediaObscuredReasonFromBitmask = getMediaObscuredReasonFromBitmask(r10, enabledHarmTypesBitmaskForChannelType);
const isMediaScanPending = _ObscuredMediaUtils.isMediaScanPending(r10, enabledHarmTypesBitmaskForChannelType);
if (mediaObscuredReasonFromBitmask.length > 0) {
r50 = [true, mediaObscuredReasonFromBitmask[0]];
} else {
const r47 = [, ,];
if (isMediaScanPending) {
r47[0] = true;
r47[1] = ObscureReason.POTENTIAL_EXPLICIT_CONTENT;
r50 = r47;
} else if (a0.spoiler) {
r47[0] = a1;
r47[1] = ObscureReason.SPOILER;
r50 = r47;
} else {
r47[0] = false;
r47[1] = void 0;
r50 = r47;
}
}
return r50;
};
export function getObscureReasonForAttachment(a0, a1) {
const flags = a0.flags;
const r8 = flags !== void 0 ? flags : 0;
const mediaObscuredReasonFromBitmask = getMediaObscuredReasonFromBitmask({
type: ObscuredMediaTypes.Attachment,
media: a0
}, a1);
const isMediaScanPending = _ObscuredMediaUtils.isMediaScanPending({
type: ObscuredMediaTypes.Attachment,
media: a0
}, a1);
return mediaObscuredReasonFromBitmask.length > 0 ? mediaObscuredReasonFromBitmask[0] : isMediaScanPending ? ObscureReason.POTENTIAL_EXPLICIT_CONTENT : hasFlag(r8, MessageAttachmentFlags.IS_SPOILER) ? ObscureReason.SPOILER : null;
}
export function getObscureReasonForEmbed(a0, a1, a2, a3) {
const mediaObscuredReasonFromBitmask = getMediaObscuredReasonFromBitmask({
type: ObscuredMediaTypes.Embed,
media: a0
}, a3);
const bot = a1.author.bot;
const r21 = bot ? !bot : _ObscuredMediaUtils.isMediaScanPending({
type: ObscuredMediaTypes.Embed,
media: a0
}, a3);
return mediaObscuredReasonFromBitmask.length > 0 ? mediaObscuredReasonFromBitmask[0] : r21 ? ObscureReason.POTENTIAL_EXPLICIT_CONTENT : a2 ? ObscureReason.SPOILER : null;
}
export function getObscureReasonForUnfurledMediaItem(a0, a1, r5 = false, r6 = false) {
const mediaObscuredReasonFromBitmask = getMediaObscuredReasonFromBitmask({
type: ObscuredMediaTypes.GenericMedia,
media: a0
}, a1);
const r19 = r6 ? !r6 : _ObscuredMediaUtils.isMediaScanPending({
type: ObscuredMediaTypes.GenericMedia,
media: a0
}, a1);
return mediaObscuredReasonFromBitmask.includes(ObscureReason.EXPLICIT_CONTENT) ? ObscureReason.EXPLICIT_CONTENT : mediaObscuredReasonFromBitmask.includes(ObscureReason.GORE_CONTENT) ? ObscureReason.GORE_CONTENT : mediaObscuredReasonFromBitmask.includes(ObscureReason.SELF_HARM_CONTENT) ? ObscureReason.SELF_HARM_CONTENT : r19 ? ObscureReason.POTENTIAL_EXPLICIT_CONTENT : r5 ? ObscureReason.SPOILER : null;
}
export { getForumPostShouldObscure };
export function useShouldObscure({ channel, media }) {
const stateFromStores = useStateFromStores([PermissionStore], () => channel != null && PermissionStore.can(Permissions.MANAGE_MESSAGES, channel));
const setting = RenderSpoilers.useSetting();
const enabledHarmTypesBitmaskForChannelType = getEnabledHarmTypesBitmaskForChannelType(ContentHarmTypeChannel.GUILD);
return getForumPostShouldObscure(media, !computeGlobalSpoilerDisplay(setting, stateFromStores), enabledHarmTypesBitmaskForChannelType);
}
export function getObscuredAlt(a0) {
if (ObscureReason.EXPLICIT_CONTENT !== a0 && ObscureReason.GORE_CONTENT !== a0 && ObscureReason.SELF_HARM_CONTENT !== a0) {
if (ObscureReason.SPOILER === a0) {
return intl.string(t["XpfDH+"]);
}
return void 0;
}
return intl.string(t.SEgHFh);
}