Files
discord-decomp/modules/guild_antiraid/native/GuildIncidentActionsActionSheet.tsx
T
2026-11-01 12:12:55 +02:00

152 lines
7.5 KiB
TypeScript

// 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;