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,105 @@
// Metro module 13102 (f13103).
import { useCallback, useState, useMemo } from "react";
import { View } from "react-native";
import { COMMUNITY_PORTAL_SERVER_SAFETY_PAGE, REPORT_RAID_OPTIONS, getReportRaidTypeLabel } from "../GuildReportRaidModalConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import { Text } from "../../../design/components/Text/native/Text";
import Linking from "../../../lib/native/Linking";
import { intl, t } from "../../../intl/index.native";
import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native";
import { TableCheckboxRow } from "../../../design/components/TableRow/native/TableCheckboxRow.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { getHeaderCloseButton } from "../../../design/components/Navigator/native/NavigatorHeader.native";
import { trackReportRaidViewed, handleReportRaid } from "../GuildAntiRaidActionCreators";
import { Navigator } from "../../../design/components/Navigator/native/Navigator.native";
let initialRouteName, useStyles;
const ReportModal = function ReportModal(props) {
const { raidTypes, onChange: onChange2, onSubmit: onSubmit3 } = props;
const styles = useStyles();
const bottom = useSafeAreaInsets_native().bottom;
const callback = useCallback((a0) => <Text style={styles.formRow} variant="text-md/semibold" color="interactive-text-active">
{getReportRaidTypeLabel(a0)}
</Text>, [styles]);
return <View style={styles.container}>
<Text style={styles.headerSubtitle} variant="text-sm/medium" color="text-default">
{intl.format(t.Hg8Ee7, {
onClick: useCallback(() => {
Linking.openURL(COMMUNITY_PORTAL_SERVER_SAFETY_PAGE);
}, [])
})}
</Text>
<View style={styles.formBody}>
<TableRowGroup hasIcons={false}>
{REPORT_RAID_OPTIONS.map((item, index) => {
return <TableCheckboxRow key={item} start={index === 0} end={index === REPORT_RAID_OPTIONS.length - 1} label={callback(item)} checked={raidTypes.includes(item)} onPress={() => onChange2(item)} />;
})}
</TableRowGroup>
</View>
<View style={[styles.submitButtonContainer, {
paddingBottom: bottom + 16
}]}>
<Button size="md" text={intl.string(t.geKm7t)} onPress={onSubmit3} />
</View>
</View>;
};
initialRouteName = "REPORT_RAID";
useStyles = createStyles({
container: {
flex: 1,
paddingHorizontal: 16,
paddingVertical: 0,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
flexDirection: "column",
height: "100%",
paddingTop: 8
},
headerSubtitle: {
textAlign: "center",
marginTop: 8
},
formBody: {
marginTop: 24
},
formRow: {
paddingVertical: 2
},
submitButtonContainer: {
position: "absolute",
bottom: 0,
left: 0,
right: 0,
paddingHorizontal: 16,
paddingVertical: 16,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
}
});
export default function GuildAntiRaidReportModal(props) {
const { onCloseModal, guildId } = props;
const top = useSafeAreaInsets_native().top;
const [state, setState] = useState([]);
return <Navigator screens={useMemo(() => {
let onSubmit2;
const state2 = state;
const onChange3 = function onChange(c30612_0) {
setState((prevState) => {
const includes = prevState.includes;
return includes.call(prevState, c30612_0) ? prevState.filter((item) => item !== c30612_0) : [...prevState, c30612_0];
});
};
onSubmit2 = function onSubmit() {
trackReportRaidViewed(guildId, state);
handleReportRaid(guildId);
onCloseModal();
};
const r13 = {};
r13[initialRouteName] = {
ignoreKeyboard: true,
title: intl.string(t.uYPGsS),
headerLeft: getHeaderCloseButton(onCloseModal),
render: () => <ReportModal raidTypes={state2} onChange={onChange3} onSubmit={onSubmit2} />
};
return r13;
}, [onCloseModal, state, guildId])} initialRouteName={initialRouteName} headerStatusBarHeight={top} />;
};
@@ -0,0 +1,151 @@
// Metro module 11019 (f11020).
import { useEffect, useMemo } from "react";
import GuildIncidentsStore from "../GuildIncidentsStore";
import { resetGuildIncidentsActionSheetStore, setInitialTime, setPauseDms, setPauseInvites, setTime, useGuildIncidentsActionSheetStore } from "./GuildIncidentsActionSheetStore";
import { getTimeframes } from "../GuildAntiRaidConstants";
import { AnalyticEvents, GuildFeatures } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { ActionSheet } from "../../../design/components/Sheet/native/ActionSheet.native";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { intl, t } from "../../../intl/index.native";
import { ActionSheetRow } from "../../../design/components/Sheet/native/ActionSheetRow.native";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
import * as _GuildAntiRaidUtils from "../GuildAntiRaidUtils";
import { initialLockdownDurationHours, getEnabledInterventions, getDisabledInterventions } from "../GuildAntiRaidUtils";
import ActionSheetActionCreators, { showActionSheet } from "../../action_sheet/native/ActionSheetActionCreators";
import { BetaTag, BetaSizes } from "../../../design/void/native";
import { TableRow } from "../../../design/components/TableRow/native/TableRow.native";
import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native";
import { TableSwitchRow } from "../../../design/components/TableRow/native/TableSwitchRow.native";
import Module8346 from "../../../_bundle/Module8346";
import { WarningIcon } from "../../../design/components/Icon/native/redesign/generated/WarningIcon";
import { ButtonGroup } from "../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { setGuildIncidentActions } from "../GuildAntiRaidActionCreators";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import GuildRaidLockdownFeedbackActionSheet from "./GuildRaidLockdownFeedbackActionSheet";
let useStyles, GuildIncidentActionsActionSheet;
const DurationSelectionActionSheet = function DurationSelectionActionSheet(props) {
const onClose = props.onClose;
const timeframes = getTimeframes();
return <ActionSheet>
<BottomSheetTitleHeader title={intl.string(t.vKYZzc)} />
<ActionSheetRow.Group hasIcons={false}>
{timeframes.map((timeframe) => {
return <ActionSheetRow key={timeframe.value} label={timeframe.label} onPress={() => {
setTime(timeframe.value);
onClose();
}} />;
})}
</ActionSheetRow.Group>
</ActionSheet>;
};
useStyles = createStyles({
beta: {
marginLeft: -12
}
});
GuildIncidentActionsActionSheet = function GuildIncidentActionsActionSheet(props) {
let time, pauseInvites, pauseDms, hasInvitesDisabled, hasDMsDisabled, c18467_7;
const { guild, analyticsData } = props;
time = void 0;
pauseInvites = void 0;
pauseDms = void 0;
hasInvitesDisabled = void 0;
hasDMsDisabled = void 0;
c18467_7 = void 0;
const onDurationSelectorClose2 = function onDurationSelectorClose() {
showActionSheet({
content: <GuildIncidentActionsActionSheet guild={guild} analyticsData={analyticsData} />,
key: "GuildIncidentActionsActionSheet"
});
};
const styles = useStyles();
const guildIncidentsActionSheetStore = useGuildIncidentsActionSheetStore();
time = guildIncidentsActionSheetStore.time;
pauseInvites = guildIncidentsActionSheetStore.pauseInvites;
pauseDms = guildIncidentsActionSheetStore.pauseDms;
const hasTimeChanges = guildIncidentsActionSheetStore.hasTimeChanges;
const stateFromStores = useStateFromStores([GuildIncidentsStore], () => GuildIncidentsStore.getGuildIncident(guild.id));
hasInvitesDisabled = _GuildAntiRaidUtils.hasInvitesDisabled(stateFromStores);
hasDMsDisabled = _GuildAntiRaidUtils.hasDMsDisabled(stateFromStores);
const r44 = initialLockdownDurationHours(stateFromStores);
c18467_7 = r44;
let disabled = guild == null ? void 0 : guild.features.has(GuildFeatures.INVITES_DISABLED);
useEffect(() => {
setPauseInvites(hasInvitesDisabled);
setPauseDms(hasDMsDisabled);
}, [hasDMsDisabled, hasInvitesDisabled]);
useEffect(() => {
if (!useGuildIncidentsActionSheetStore.getState().hasTimeChanges) {
setInitialTime(c18467_7);
}
}, [r44]);
const memo = useMemo(() => getTimeframes().find((item) => item.value === time)?.label, [time]);
const props2 = {
startExpanded: true,
header: <BottomSheetTitleHeader title={intl.string(t.oCYAc7)} leading={<BetaTag size={BetaSizes.SMALL} style={styles.beta} />} />,
children: null
};
const TrailingText = TableRow.TrailingText;
let text = memo;
if (text == null) {
text = "";
}
const children = [<TableRow trailing={<TrailingText text={text} />} label={intl.string(t.vKYZzc)} arrow onPress={function onPress() {
showActionSheet({
content: <DurationSelectionActionSheet onClose={onDurationSelectorClose2} />,
key: "DurationSelectionActionSheet"
});
}} start end accessibilityLabel={intl.string(t.vKYZzc)} accessibilityHint={memo} />, , , ,];
const r148 = [<TableSwitchRow label={intl.string(t.Uwsjn6)} subLabel={intl.string(t.qPJkZh)} value={pauseInvites ? pauseInvites : disabled} onValueChange={function onValueChange() {
setPauseInvites(!pauseInvites);
}} disabled={disabled} />, ,];
if (disabled) {
disabled = <TableRow icon={<TableRow.Icon source={Module8346} IconComponent={WarningIcon} variant="secondary" />} label={intl.string(t["9GPbsV"])} />;
}
r148[1] = disabled;
children[1] = <TableRowGroup hasIcons>{r148}</TableRowGroup>;
children[2] = <TableSwitchRow label={intl.string(t["wrDmA/"])} subLabel={intl.string(t.UQbJW7)} value={pauseDms} onValueChange={function onValueChange() {
setPauseDms(!pauseDms);
}} start end />;
const props3 = {
onPress: function onPress() {
setGuildIncidentActions(guild.id, pauseInvites, pauseDms, time);
ActionSheetActionCreators.hideActionSheet("GuildIncidentActionsActionSheet");
resetGuildIncidentsActionSheetStore();
AnalyticsUtils.track(AnalyticEvents.GUILD_RAID_INTERVENTION_STATE_CHANGE, {
guild_id: guild.id,
source: analyticsData.source,
raid_alert_id: analyticsData.messageId,
raid_alert_type: analyticsData.alertType,
intervention_type_enabled: getEnabledInterventions(pauseInvites, pauseDms),
intervention_type_disabled: getDisabledInterventions(pauseInvites, pauseDms),
duration: 60 * time
});
if (!((hasInvitesDisabled ? !hasInvitesDisabled : !hasDMsDisabled) || pauseInvites || pauseDms)) {
showActionSheet({
content: <GuildRaidLockdownFeedbackActionSheet guildId={guild.id} />,
key: "GuildRaidLockdownFeedbackActionSheet"
});
}
},
text: intl.string(t["R3BPH+"]),
variant: "primary",
size: "md",
disabled: null
};
const r215 = pauseInvites !== hasInvitesDisabled || pauseDms !== hasDMsDisabled || hasTimeChanges;
const handleClose = function handleClose() {
ActionSheetActionCreators.hideActionSheet("GuildIncidentActionsActionSheet");
resetGuildIncidentsActionSheetStore();
};
props3.disabled = !r215;
children[3] = <ButtonGroup>
<Button {...props3} />
<Button onPress={handleClose} text={intl.string(t["ETE/oC"])} variant="secondary" size="md" />
</ButtonGroup>;
props2.children = children;
return <ActionSheet {...props2} />;
};
export default GuildIncidentActionsActionSheet;
@@ -0,0 +1,43 @@
// Metro module 11020 (f11021).
import { DEFAULT_LOCKDOWN_DURATION } from "../GuildAntiRaidConstants";
import { create } from "../../../_bundle/Module644";
import { batchUpdates } from "../../../_bundle/Module705";
let c7428_3 = create(() => ({
time: DEFAULT_LOCKDOWN_DURATION,
pauseInvites: true,
pauseDms: true,
hasTimeChanges: false
}));
export { c7428_3 as useGuildIncidentsActionSheetStore };
export function setTime(time) {
batchUpdates(() => c7428_3.setState({
time,
hasTimeChanges: true
}));
}
export function setInitialTime(time2) {
batchUpdates(() => c7428_3.setState({
time: time2,
hasTimeChanges: false
}));
}
export function setPauseInvites(pauseInvites) {
batchUpdates(() => c7428_3.setState({
pauseInvites
}));
}
export function setPauseDms(pauseDms) {
batchUpdates(() => c7428_3.setState({
pauseDms
}));
}
export function resetGuildIncidentsActionSheetStore() {
batchUpdates(() => {
c7428_3.setState({
time: DEFAULT_LOCKDOWN_DURATION,
pauseInvites: true,
pauseDms: true,
hasTimeChanges: false
});
});
}
@@ -0,0 +1,67 @@
// Metro module 11022 (f11023).
import { useState } from "react";
import { AnalyticEvents } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { intl, t } from "../../../intl/index.native";
import { RaidLockdownFeedbackType } from "../../guild_automod/AutomodFeedback";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { ActionSheet } from "../../../design/components/Sheet/native/ActionSheet.native";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import KeyboardAwareView from "../../keyboard/native/KeyboardAwareView";
import { TableRowGroup } from "../../../design/components/TableRow/native/TableRowGroup.native";
import { TableCheckboxRow } from "../../../design/components/TableRow/native/TableCheckboxRow.native";
import { TextArea } from "../../../design/components/TextInput/native/TextArea.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { trackWithMetadata } from "../../app_analytics/AppAnalyticsUtils";
const useStyles = createStyles({
container: {
display: "flex",
gap: 24
}
});
export default function GuildRaidLockdownFeedbackActionSheet(props) {
const guildId = props.guildId;
const styles = useStyles();
const [state, setState] = useState([]);
const [state2, setState2] = useState();
const r17 = [{
text: intl.string(t["//3pvi"]),
value: RaidLockdownFeedbackType.DM_SPAM
}, {
text: intl.string(t.SdVsip),
value: RaidLockdownFeedbackType.MENTION_SPAM
}, {
text: intl.string(t.uTiSVL),
value: RaidLockdownFeedbackType.CHANNEL_SPAM
}, {
text: intl.string(t.GQczU8),
value: RaidLockdownFeedbackType.SUS_NEW_MEMBERS
}, {
text: intl.string(t.AAgqy3),
value: RaidLockdownFeedbackType.CHANGING_SETTINGS
}, {
text: intl.string(t.ryPKb7),
value: RaidLockdownFeedbackType.OTHER
}];
return <ActionSheet startExpanded header={<BottomSheetTitleHeader title={intl.string(t.f5hd9P)} />}>
<KeyboardAwareView style={styles.container}>
<TableRowGroup hasIcons={false}>
{r17.map(({ text, value }) => <TableCheckboxRow key={value} onPress={() => {
const value2 = value;
setState(state.includes(value) ? (a0) => a0.filter((item) => item !== value2) : (a0) => [...a0, value2]);
}} checked={state.includes(value)} label={text} />)}
</TableRowGroup>
{state.includes(RaidLockdownFeedbackType.OTHER) && <TextArea autoComplete="off" value={state2} placeholder={intl.string(t["PAM+JR"])} onChange={function onChange(event) {
setState2(event);
}} />}
<Button onPress={function onPress() {
trackWithMetadata(AnalyticEvents.GUILD_RAID_LOCKDOWN_FEEDBACK, {
raid_lockdown_feedback_type: state,
raid_lockdown_feedback_other_reason: state2,
guild_id: guildId
});
ActionSheetActionCreators.hideActionSheet("GuildRaidLockdownFeedbackActionSheet");
}} text={intl.string(t.nAt0rE)} />
</KeyboardAwareView>
</ActionSheet>;
};
@@ -0,0 +1,121 @@
// Metro module 11051 (f11052).
import { useState } from "react";
import { View } from "react-native";
import { AnalyticEvents } from "../../../Constants";
import { SafetyToastType } from "../../safety_common/Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { intl, t } from "../../../intl/index.native";
import { RaidResolutionType, RaidAlertType, getMostImportantRaidResolutionType } from "../../guild_automod/AutomodFeedback";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { ActionSheet } from "../../../design/components/Sheet/native/ActionSheet.native";
import KeyboardAwareView from "../../keyboard/native/KeyboardAwareView";
import { Text } from "../../../design/components/Text/native/Text";
import { FormRow } from "../../../design/void/Form/native/index";
import { Checkbox, TextInput } from "../../../design/void/native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { trackWithMetadata } from "../../app_analytics/AppAnalyticsUtils";
import { handleResolveRaid } from "../GuildAntiRaidActionCreators";
import SafetyToastsActionCreators_native from "../../safety_common/SafetyToastsActionCreators.native";
const useStyles = createStyles({
container: {
paddingVertical: 24,
paddingHorizontal: 16,
display: "flex",
flexDirection: "column",
alignItems: "center"
},
title: {
marginBottom: 8,
textAlign: "center"
},
subtitle: {
marginBottom: 16,
textAlign: "center"
},
optionContainer: {
borderColor: Module712.colors.BORDER_SUBTLE,
borderWidth: 1,
borderRadius: Module712.radii.xs,
display: "flex",
flexDirection: "column",
marginBottom: 14,
width: "100%"
},
option: {
width: "100%"
},
textInputContainer: {
paddingLeft: 54,
paddingRight: 16,
paddingBottom: 16
},
textInput: {
backgroundColor: Module712.colors.INPUT_BACKGROUND_DEFAULT,
width: "100%",
padding: 8,
borderRadius: Module712.radii.xs
}
});
export default function GuildRaidResolveActionSheet(props) {
let styles, state, setState, state2, setState2;
const { guildId, messageId } = props;
styles = void 0;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
const handleTextInputChange2 = function handleTextInputChange(a0) {
setState2(a0);
};
styles = useStyles();
[state, setState] = useState([]);
[state2, setState2] = useState();
const r15 = [{
text: intl.string(t.yeaXw5),
value: RaidResolutionType.LEGITIMATE_ACTIVITY
}, {
text: intl.string(t["o++3B8"]),
value: RaidResolutionType.DM_SPAM
}, {
text: intl.string(t.UfHAwZ),
value: RaidResolutionType.JOIN_RAID
}, {
text: intl.string(t.K3UWeR),
value: RaidResolutionType.OTHER
}];
return <ActionSheet>
<KeyboardAwareView style={styles.container}>
<Text style={styles.title} variant="heading-xl/bold" color="mobile-text-heading-primary">
{intl.string(t["1zmw/H"])}
</Text>
<Text style={styles.subtitle} variant="text-sm/normal" color="text-default">
{intl.string(t.nF79oO)}
</Text>
{r15.map(({ text, value }) => <View key={value} style={styles.optionContainer}>
<FormRow style={styles.option} onPress={() => {
const value2 = value;
setState(state.includes(value) ? (a0) => a0.filter((item) => item !== value2) : (a0) => [...a0, value2]);
}} leading={<Checkbox selected={state.includes(value)} />} label={text} />
{value === RaidResolutionType.OTHER && state.includes(RaidResolutionType.OTHER) && <View style={styles.textInputContainer}>
<TextInput style={styles.textInput} autoComplete="off" value={state2} placeholder={intl.string(t["PAM+JR"])} onChangeText={handleTextInputChange2} />
</View>}
</View>)}
<Button onPress={function onPress() {
trackWithMetadata(AnalyticEvents.GUILD_RAID_FEEDBACK, {
raid_alert_type: RaidAlertType.JOIN_RAID,
raid_alert_id: messageId,
false_alarm_type: state.map((item) => item.toString()),
false_alarm_other_reason: state2,
guild_id: guildId
});
handleResolveRaid(guildId, messageId, getMostImportantRaidResolutionType(state));
ActionSheetActionCreators.hideActionSheet("GuildRaidResolveActionSheet");
SafetyToastsActionCreators_native.showSuccessToast(SafetyToastType.SAFETY_FEEDBACK_SUCCESS);
}} text={intl.string(t.Gh3A0O)} size="md" />
<Button onPress={function handleClose() {
ActionSheetActionCreators.hideActionSheet("GuildRaidResolveActionSheet");
}} text={intl.string(t["ETE/oC"])} variant="secondary" size="md" />
</KeyboardAwareView>
</ActionSheet>;
};