This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,165 @@
// Metro module 11067 (f11068).
import { useMemo, useCallback, useEffect } from "react";
import { View } from "react-native";
import { EXPLICIT_MEDIA_FALSE_POSITIVE_ACTION_SHEET_KEY } from "../ExplicitMediaRedactionConstants";
import { HelpdeskArticles, UserSettingsSections } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useUserIsConsideredAdult from "../../parent_tools/hooks/useUserIsConsideredAdult";
import { useIsVerifiedTeen } from "../../age_assurance/AgeVerificationUtils";
import { useShouldAgeVerifyForExplicitMedia, trackMediaRedactionAction, TrackMediaRedactionActionType } from "../ExplicitMediaRedactionUtils";
import { intl, t } from "../../../intl/index.native";
import { openUserSettings } from "../../user_settings/core/native/openUserSettings";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import Linking from "../../../lib/native/Linking";
import HelpdeskUtils from "../../../utils/HelpdeskUtils";
import AgeVerificationActionCreators_native from "../../age_assurance/AgeVerificationActionCreators.native";
import { AgeVerificationModalEntryPoint } from "../../age_assurance/AgeVerificationAnalyticsUtils";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import { ShieldSpotIllustration } from "../../../design/assets/native";
import { Text } from "../../../design/components/Text/native/Text";
import { Button } from "../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
container: {
paddingVertical: Module712.space.PX_24,
paddingHorizontal: Module712.space.PX_24,
justifyContent: "center"
},
art: {
alignSelf: "center",
marginBottom: Module712.space.PX_16
},
infoHeader: {
marginBottom: Module712.space.PX_8,
alignItems: "center"
},
info: {
marginBottom: Module712.space.PX_24,
alignItems: "center"
},
infoDesc: {
textAlign: "center"
},
buttonsContainer: {
gap: Module712.space.PX_8
},
linkSubtext: {
textAlign: "center",
marginBottom: Module712.space.PX_8
}
});
export default function ExplicitMediaLearnMoreActionSheet(props) {
let props2;
let callback;
const { channelId, messageId, attachmentId, embedId } = props;
callback = void 0;
const styles = useStyles();
const userIsConsideredAdult = useUserIsConsideredAdult();
const isVerifiedTeen = useIsVerifiedTeen();
const shouldAgeVerifyForExplicitMedia = useShouldAgeVerifyForExplicitMedia();
const text = intl.string(t["9KiIz6"]);
let r20 = intl.string(t["5e0geG"]);
const memo = useMemo(() => {
let r0 = isVerifiedTeen;
if (isVerifiedTeen) {
r0 = shouldAgeVerifyForExplicitMedia;
}
return r0;
}, [isVerifiedTeen, shouldAgeVerifyForExplicitMedia]);
callback = useCallback((a0) => {
trackMediaRedactionAction({
action: a0,
channelId,
messageId
});
}, [channelId, messageId]);
useEffect(() => {
trackMediaRedactionAction({
action: TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_VIEWED,
channelId,
messageId
});
}, [channelId, messageId]);
const callback2 = useCallback(() => memo ? intl.format(t["TGqx+i"], {
handleOnHelpUrlHook: () => {
AgeVerificationActionCreators_native.openUrl(HelpdeskUtils.getArticleURL(HelpdeskArticles.TIGGER_PAWTECT_LEARN_MORE));
callback(TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_CLICK_AGE_VERIFY_LEARN_MORE);
}
}) : shouldAgeVerifyForExplicitMedia ? null : intl.format(t.Ge0HUi, {
handleFalsePositiveHook: () => {
ActionSheetActionCreators.hideActionSheet();
callback(TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_CLICK_FALSE_POSITIVE);
ActionSheetActionCreators.openLazy(import("./false_positive_reporting/ExplicitMediaObscuredFalsePositiveActionSheet"), EXPLICIT_MEDIA_FALSE_POSITIVE_ACTION_SHEET_KEY, {
channelId,
messageId,
attachmentId,
embedId
});
}
}), [memo, shouldAgeVerifyForExplicitMedia, callback, channelId, messageId, attachmentId, embedId]);
const r80 = [<View style={styles.art}>
<ShieldSpotIllustration height={120} width={120} />
</View>, , ,];
const r95 = [<Text style={styles.infoHeader} accessibilityRole="header" variant="heading-xl/bold" color="mobile-text-heading-primary">
{intl.string(t.sGW77l)}
</Text>, ,];
if (!memo) {
const r108 = intl.string(t.RUw0ZC);
let r116 = intl.string(t["E/oQYL"]);
if (userIsConsideredAdult) {
r116 = r108;
}
r20 = r116;
}
r95[1] = <Text style={styles.infoDesc} variant="text-md/medium" color="text-default">{r20}</Text>;
r80[1] = <View style={styles.info}>{r95}</View>;
const r124 = {
variant: "primary",
size: "md",
text: null,
onPress: null
};
if (memo) {
const handleAgeVerifyButtonPress = function handleAgeVerifyButtonPress() {
callback(TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_CLICK_AGE_VERIFY_REVERIFY);
AgeVerificationActionCreators_native.showAgeVerificationGetStartedModal({
entryPoint: AgeVerificationModalEntryPoint.SENSITIVE_MEDIA_LEARN_MORE
});
ActionSheetActionCreators.hideActionSheet();
};
r124.text = text;
r124.onPress = handleAgeVerifyButtonPress;
props2 = r124;
} else if (userIsConsideredAdult) {
const handleNavigateToSettingsButtonPress = function handleNavigateToSettingsButtonPress() {
callback(TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_CLICK_SETTINGS);
openUserSettings({
screen: UserSettingsSections.CONTENT_AND_SOCIAL
});
ActionSheetActionCreators.hideActionSheet();
};
r124.text = intl.string(t["9D+zGX"]);
r124.onPress = handleNavigateToSettingsButtonPress;
props2 = r124;
} else {
const handleNavigateToHelpCenterLearnMore = function handleNavigateToHelpCenterLearnMore() {
Linking.openURL(HelpdeskUtils.getArticleURL(HelpdeskArticles.EXPLICIT_MEDIA_REDACTION));
};
r124.text = intl.string(t.hvVgAZ);
r124.onPress = handleNavigateToHelpCenterLearnMore;
props2 = r124;
}
r80[2] = <View style={styles.buttonsContainer}>
<Button {...props2} />
<Button variant="secondary" size="md" text={intl.string(t.bmbHPA)} onPress={function onPress() {
callback(TrackMediaRedactionActionType.EXPLICIT_MEDIA_LEARN_MORE_CLICK_DISMISS);
ActionSheetActionCreators.hideActionSheet();
}} />
<Text style={styles.linkSubtext} variant="text-sm/medium" color="text-muted">
{callback2()}
</Text>
</View>;
return <BottomSheet startExpanded>
<View style={styles.container}>{r80}</View>
</BottomSheet>;
};
@@ -0,0 +1,77 @@
// Metro module 13852 (f13853).
import UserStore from "../../../stores/UserStore";
import { EXPLICIT_MEDIA_SETTINGS_ACTION_SHEET_KEY } from "../ExplicitMediaRedactionConstants";
import { SearchMediaTypes } from "../../search/SearchConstants";
import { ExplicitContentRedaction } from "../../../_bundle/Module1306";
import { intl, t } from "../../../intl/index.native";
import { shouldAgeVerifyForExplicitMedia } from "../ExplicitMediaRedactionUtils";
import AgeVerificationActionCreators_native from "../../age_assurance/AgeVerificationActionCreators.native";
import { AgeVerificationModalEntryPoint } from "../../age_assurance/AgeVerificationAnalyticsUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { getEnabledHarmTypesForMessage, isMediaObscuredForHarmTypes } from "../ObscuredMediaUtils";
import { ObscuredMediaTypes } from "../ExplicitMediaRedactionModels";
export function handleSensitiveMediaFilterPress({ title, subtitle, handlePress, excluded, currentValue }) {
const nsfwAllowed = UserStore.getCurrentUser()?.nsfwAllowed;
const r7 = excluded == null ? void 0 : excluded.includes(ExplicitContentRedaction.SHOW);
const r26 = r7 ? !r7 : nsfwAllowed;
const options = [];
if (r26) {
options.push({
value: ExplicitContentRedaction.SHOW,
label: intl.string(t["5k5OFp"]),
onPress: () => {
if (shouldAgeVerifyForExplicitMedia()) {
AgeVerificationActionCreators_native.showAgeVerificationGetStartedModal({
entryPoint: AgeVerificationModalEntryPoint.OBSCURED_MEDIA
});
} else {
handlePress(ExplicitContentRedaction.SHOW);
}
}
});
}
if (!(excluded == null ? void 0 : excluded.includes(ExplicitContentRedaction.BLUR))) {
options.push({
value: ExplicitContentRedaction.BLUR,
label: intl.string(t.S49Uad),
onPress: () => {
handlePress(ExplicitContentRedaction.BLUR);
}
});
}
if (!(excluded == null ? void 0 : excluded.includes(ExplicitContentRedaction.BLOCK))) {
options.push({
value: ExplicitContentRedaction.BLOCK,
label: intl.string(t["D/157Y"]),
onPress: () => {
handlePress(ExplicitContentRedaction.BLOCK);
}
});
}
ActionSheetActionCreators.openLazy(import("./ExplicitMediaSettingsActionSheet"), EXPLICIT_MEDIA_SETTINGS_ACTION_SHEET_KEY, {
title,
subtitle,
options,
currentValue
});
}
export function shouldAgeVerifyForSearchMedia(a0, a1) {
if (a1 == null) {
return false;
}
const enabledHarmTypesForMessage = getEnabledHarmTypesForMessage(a1);
if (enabledHarmTypesForMessage === 0) {
return false;
}
const r19 = a0.type === SearchMediaTypes.ATTACHMENT ? {
type: ObscuredMediaTypes.Attachment,
media: a0.attachment
} : a0.type === SearchMediaTypes.EMBED ? {
type: ObscuredMediaTypes.Embed,
media: a0.embed
} : a0.type === SearchMediaTypes.COMPONENT ? {
type: ObscuredMediaTypes.GenericMedia,
media: a0.unfurledMediaItem
} : null;
return r19 != null && (isMediaObscuredForHarmTypes(r19, enabledHarmTypesForMessage) && shouldAgeVerifyForExplicitMedia());
}
@@ -0,0 +1,39 @@
// Metro module 13853 (f13854).
import { useCallback } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { TableRadioGroup } from "../../../design/components/TableRow/native/TableRadioGroup.native";
import { ExplicitContentRedaction } from "../../../_bundle/Module1306";
import { TableRadioRow } from "../../../design/components/TableRow/native/TableRadioRow.native";
const useStyles = createStyles({
content: {
marginTop: Module712.space.PX_24,
paddingHorizontal: Module712.space.PX_16
}
});
export default function ExplicitMediaSettingsActionSheet(props) {
const { title, subtitle, options } = props;
let currentValue = props.currentValue;
const styles = useStyles();
const callback = useCallback((c27580_0) => {
const r7 = options.find((option) => option.value === c27580_0);
if (r7 != null) {
r7.onPress();
ActionSheetActionCreators.hideActionSheet();
}
}, [options]);
const r28 = [<BottomSheetTitleHeader title={title} subtitle={subtitle} />, ,];
if (currentValue == null) {
currentValue = ExplicitContentRedaction.SHOW;
}
r28[1] = <View style={styles.content}>
<TableRadioGroup defaultValue={currentValue} onChange={callback} hasIcons={false}>
{options.map((option) => <TableRadioRow key={option.value} label={option.label} value={option.value} />)}
</TableRadioGroup>
</View>;
return <BottomSheet startExpanded>{r28}</BottomSheet>;
};
@@ -0,0 +1,137 @@
// Metro module 9890 (f9891).
import { useCallback, useEffect } from "react";
import { Image as Image2, ScrollView, View } from "react-native";
import { isVideo } from "../../../../utils/native/UploadUtils";
import Video from "../../../../_bundle/Video_8143";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { generateBoxShadowStyle, FOUR_DP_ELEVATION_SHADOW_PARAMS } from "../../../../design/void/native";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
import Module9029 from "../../../../_bundle/Module9029";
import { ShieldIcon } from "../../../../design/components/Icon/native/redesign/generated/ShieldIcon";
import { intl, t } from "../../../../intl/index.native";
import { presentError } from "../../../toast/native/ToastUtils";
import { trackMediaRedactionAction, TrackMediaRedactionActionType } from "../../ExplicitMediaRedactionUtils";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { Text } from "../../../../design/components/Text/native/Text";
import { Button } from "../../../../design/components/Button/native/Button.native";
let ExplicitMediaFalsePositivePreviewAttachment, ExplicitMediaFalsePositivePreview, useStyles;
const ExplicitMediaFalsePositivePreviewEmbed = function ExplicitMediaFalsePositivePreviewEmbed(props) {
const embed = props.embed;
const url = embed.video !== void 0 && embed.type !== "gifv" ? embed.video.url : embed.thumbnail?.url;
return url != null ? <ExplicitMediaFalsePositivePreview url={url} /> : null;
};
ExplicitMediaFalsePositivePreviewAttachment = function ExplicitMediaFalsePositivePreviewAttachment(props) {
const url = props.attachment.url;
return url != null ? <ExplicitMediaFalsePositivePreview url={url} /> : null;
};
ExplicitMediaFalsePositivePreview = function ExplicitMediaFalsePositivePreview(props) {
const url = props.url;
const styles = useStyles();
return <View style={[styles.mediaContainer, styles.elevationShadow]}>
{isVideo(url) ? <Video volume={0} resizeMode="cover" repeat style={styles.media} source={{
uri: url
}} controls paused /> : <Image2 style={[styles.media, styles.image]} source={{
uri: url
}} />}
</View>;
};
useStyles = createStyles({
content: {
padding: Module712.space.PX_16
},
contentContainer: {
justifyContent: "center",
textAlign: "center",
alignItems: "center"
},
heading: {
marginBottom: Module712.space.PX_8
},
mediaContainer: {
width: "100%",
padding: Module712.space.PX_16,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
borderRadius: Module712.radii.xs,
marginTop: Module712.space.PX_8,
aspectRatio: "4 / 3"
},
elevationShadow: generateBoxShadowStyle(FOUR_DP_ELEVATION_SHADOW_PARAMS),
image: {
resizeMode: "contain"
},
media: {
flex: 1,
borderRadius: Module712.radii.xs
},
footer: {
backgroundColor: Module712.colors.MOBILE_ACTIONSHEET_GRADIENT_BACKGROUND_DEFAULT,
paddingVertical: Module712.space.PX_12,
paddingHorizontal: Module712.space.PX_16,
gap: Module712.space.PX_8
}
});
export function handleSuccess(a0) {
ActionSheetActionCreators.hideActionSheet(a0);
ToastActionCreators.open({
key: "explicit_media_report_false_positive_success",
icon: Module9029,
IconComponent: ShieldIcon,
iconColor: "text-brand",
content: intl.string(t.gFsTKu)
});
}
export function handleError() {
presentError(intl.string(t.R0RpRX));
}
export function ExplicitMediaFalsePositiveActionSheet(props) {
const { channelId, messageId, isReportFalsePositiveLoading, attachmentPreview, embedPreview, onConfirmPress, analyticsContext } = props;
const styles = useStyles();
const callback = useCallback(() => {
trackMediaRedactionAction({
action: TrackMediaRedactionActionType.EXPLICIT_MEDIA_FALSE_POSITIVE_CLICK_CANCEL,
channelId,
messageId,
context: analyticsContext
});
ActionSheetActionCreators.hideActionSheet();
}, [channelId, messageId, analyticsContext]);
const callback2 = useCallback(() => {
if (onConfirmPress != null) {
onConfirmPress();
}
trackMediaRedactionAction({
action: TrackMediaRedactionActionType.EXPLICIT_MEDIA_FALSE_POSITIVE_CLICK_CONFIRM,
channelId,
messageId,
context: analyticsContext
});
}, [channelId, messageId, analyticsContext, onConfirmPress]);
useEffect(() => {
trackMediaRedactionAction({
action: TrackMediaRedactionActionType.EXPLICIT_MEDIA_FALSE_POSITIVE_VIEWED,
channelId,
messageId,
context: analyticsContext
});
}, [channelId, messageId, analyticsContext]);
return <BottomSheet startExpanded>
<View>
<ScrollView style={styles.content} contentContainerStyle={styles.contentContainer}>
<Text style={styles.heading} variant="heading-lg/bold">
{intl.string(t.TPpVkI)}
</Text>
<Text variant="text-sm/normal">
{intl.string(t["z4du/I"])}
</Text>
{attachmentPreview != null && <ExplicitMediaFalsePositivePreviewAttachment attachment={attachmentPreview} />}
{embedPreview != null && <ExplicitMediaFalsePositivePreviewEmbed embed={embedPreview} />}
</ScrollView>
<View style={styles.footer}>
<Button variant="primary" size="md" disabled={isReportFalsePositiveLoading} loading={isReportFalsePositiveLoading} text={intl.string(t["cY+Oob"])} onPress={callback2} />
<Button variant="secondary" size="md" text={intl.string(t["ETE/oC"])} onPress={callback} />
</View>
</View>
</BottomSheet>;
}
@@ -0,0 +1,51 @@
// Metro module 9886 (f9887).
import { useCallback } from "react";
import { EXPLICIT_MEDIA_FALSE_POSITIVE_ACTION_SHEET_KEY } from "../../ExplicitMediaRedactionConstants";
import { useRedactableMediaAttachmentsForMessage, useRedactableMediaEmbedsForMessage } from "../../hooks/useExplicitMediaAttachmentsForMessage";
import { useExplicitMediaActions } from "../../hooks/useExplicitMediaActions";
import { handleSuccess, handleError, ExplicitMediaFalsePositiveActionSheet } from "./ExplicitMediaFalsePositiveActionSheet";
import * as _ExplicitMediaRedactionActionCreators from "../../ExplicitMediaRedactionActionCreators";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { TrackMediaRedactionContext } from "../../ExplicitMediaRedactionUtils";
export default function ExplicitMediaObscuredFalsePositiveActionSheet(props) {
let reportFalsePositive;
const { channelId, messageId, attachmentId, embedId } = props;
reportFalsePositive = void 0;
const redactableMediaAttachmentsForMessage = useRedactableMediaAttachmentsForMessage(channelId, messageId, attachmentId);
const redactableMediaEmbedsForMessage = useRedactableMediaEmbedsForMessage(channelId, messageId, embedId);
const explicitMediaActions = useExplicitMediaActions({
onSuccess: () => handleSuccess(EXPLICIT_MEDIA_FALSE_POSITIVE_ACTION_SHEET_KEY),
onError: () => handleError(),
report: () => {
let r20 = redactableMediaAttachmentsForMessage == null ? void 0 : redactableMediaAttachmentsForMessage.map((item) => item.id);
if (r20 == null) {
r20 = [];
}
let r24 = redactableMediaEmbedsForMessage.map((item) => item.id);
if (r24 == null) {
r24 = [];
}
return _ExplicitMediaRedactionActionCreators.reportFalsePositive(channelId, messageId, r20, r24);
}
});
reportFalsePositive = explicitMediaActions.reportFalsePositive;
const isReportFalsePositiveLoading = explicitMediaActions.isReportFalsePositiveLoading;
let r32 = redactableMediaAttachmentsForMessage?.length;
if (r32 == null) {
r32 = 0;
}
let r33 = r32 > 0;
if (!r33) {
let r34 = redactableMediaEmbedsForMessage?.length;
if (r34 == null) {
r34 = 0;
}
r33 = r34 > 0;
}
if (!r33) {
ActionSheetActionCreators.hideActionSheet();
}
return <ExplicitMediaFalsePositiveActionSheet channelId={channelId} messageId={messageId} isReportFalsePositiveLoading={isReportFalsePositiveLoading} attachmentPreview={redactableMediaAttachmentsForMessage.length === 1 ? redactableMediaAttachmentsForMessage[0] : void 0} embedPreview={redactableMediaEmbedsForMessage.length === 1 ? redactableMediaEmbedsForMessage[0] : void 0} onConfirmPress={useCallback(() => {
reportFalsePositive();
}, [reportFalsePositive])} analyticsContext={TrackMediaRedactionContext.EXPLICIT_MEDIA_OBSCURED_FALSE_POSITIVE_FLOW} />;
};
@@ -0,0 +1,37 @@
// Metro module 11106 (f11107).
import { useCallback } from "react";
import ExplicitMediaStore from "../../ExplicitMediaStore";
import { EXPLICIT_MEDIA_SENDER_FALSE_POSITIVE_ACTION_SHEET_KEY } from "../../ExplicitMediaRedactionConstants";
import { useStateFromStores } from "../../../../_bundle/defaultAreStatesEqual";
import { useExplicitMediaActions } from "../../hooks/useExplicitMediaActions";
import { handleSuccess, handleError, ExplicitMediaFalsePositiveActionSheet } from "./ExplicitMediaFalsePositiveActionSheet";
import ExplicitMediaFalsePositiveActionCreators from "../../ExplicitMediaFalsePositiveActionCreators";
import { reportFailedSendFalsePositive } from "../../ExplicitMediaRedactionActionCreators";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { TrackMediaRedactionContext } from "../../ExplicitMediaRedactionUtils";
export default function ExplicitMediaObscuredFalsePositiveActionSheet(props) {
let c18538_2, c18538_3, reportFalsePositive;
const { channelId, messageId } = props;
c18538_2 = void 0;
c18538_3 = void 0;
reportFalsePositive = void 0;
const stateFromStores = useStateFromStores([ExplicitMediaStore], () => ExplicitMediaStore.getFpMessageInfo(messageId));
c18538_2 = stateFromStores.attachments.map((attachment) => attachment.id);
c18538_3 = stateFromStores.attachments.map((attachment) => attachment.filename);
const explicitMediaActions = useExplicitMediaActions({
onSuccess: () => {
handleSuccess(EXPLICIT_MEDIA_SENDER_FALSE_POSITIVE_ACTION_SHEET_KEY);
ExplicitMediaFalsePositiveActionCreators.disableFalsePositiveButton(channelId, messageId);
},
onError: () => handleError(),
report: () => reportFailedSendFalsePositive(channelId, messageId, c18538_2, c18538_3)
});
reportFalsePositive = explicitMediaActions.reportFalsePositive;
const isReportFalsePositiveLoading = explicitMediaActions.isReportFalsePositiveLoading;
if (!(stateFromStores.attachments.length > 0)) {
ActionSheetActionCreators.hideActionSheet();
}
return <ExplicitMediaFalsePositiveActionSheet channelId={channelId} messageId={messageId} isReportFalsePositiveLoading={isReportFalsePositiveLoading} onConfirmPress={useCallback(() => {
reportFalsePositive();
}, [reportFalsePositive])} analyticsContext={TrackMediaRedactionContext.EXPLICIT_MEDIA_SENDER_FALSE_POSITIVE_FLOW} />;
};