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

106 lines
4.1 KiB
TypeScript

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