107 lines
5.0 KiB
TypeScript
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);
|
|
}
|