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

101 lines
4.1 KiB
TypeScript

// Metro module 13956 (f13957).
import { useCallback, useMemo } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import ModalActionCreators from "../../../actions/ModalActionCreators";
import { presentFailedToast } from "../../toast/native/ToastUtils";
import { intl, t } from "../../../intl/index.native";
import { useFamilyCenterActions } from "../hooks/useFamilyCenterActions";
import { ModalScreen } from "../../../design/components/Modal/native/ModalScreen.native";
import { ModalContent } from "../../../design/components/Modal/native/ModalContent.native";
import FamilyCenterAvatarPair from "./FamilyCenterAvatarPair";
import Module4134 from "../../../_bundle/Module4134";
import { Text } from "../../../design/components/Text/native/Text";
import FamilyCenter_messages from "../FamilyCenter.messages";
import FamilyCenterUsernameHeader from "./FamilyCenterUsernameHeader";
import FamilyCenterDataConfirmation from "./FamilyCenterDataConfirmation";
import { ModalFooter } from "../../../design/components/Modal/native/ModalFooter.native";
import { ButtonGroup } from "../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import { getHeaderCloseButton } from "../../../design/components/Navigator/native/NavigatorHeader.native";
import { Modal } from "../../../design/components/Modal/native/Modal.native";
let useStyles;
const FamilyCenterModalAcceptScreen = function FamilyCenterModalAcceptScreen(props) {
let acceptLinkRequest;
const otherUser = props.otherUser;
acceptLinkRequest = void 0;
const styles = useStyles();
const familyCenterActions = useFamilyCenterActions({
onSuccess: useCallback(() => {
ModalActionCreators.pop();
}, []),
onError: useCallback(() => {
presentFailedToast(intl.string(t.R0RpRX));
}, [])
});
acceptLinkRequest = familyCenterActions.acceptLinkRequest;
const isAcceptLoading = familyCenterActions.isAcceptLoading;
const callback = useCallback(() => {
acceptLinkRequest(otherUser.id);
}, [acceptLinkRequest, otherUser.id]);
return <ModalScreen>
<ModalContent>
<View style={styles.header}>
<FamilyCenterAvatarPair otherUser={otherUser} iconSrc={Module4134} iconStyles={styles.icon} />
<Text style={styles.headerText} variant="text-lg/bold">
{intl.string(FamilyCenter_messages.rlNJwZ)}
</Text>
<FamilyCenterUsernameHeader user={otherUser} />
</View>
<FamilyCenterDataConfirmation />
<Text style={styles.disclaimer} variant="text-xs/normal" color="text-default">
{intl.format(FamilyCenter_messages.snlFqR, {
username: otherUser.username
})}
</Text>
</ModalContent>
<ModalFooter>
<ButtonGroup>
<Button variant="primary" disabled={isAcceptLoading} loading={isAcceptLoading} text={intl.string(FamilyCenter_messages["wI/jo3"])} onPress={callback} />
<Button variant="tertiary" text={intl.string(t["ETE/oC"])} onPress={ModalActionCreators.pop} />
</ButtonGroup>
</ModalFooter>
</ModalScreen>;
};
useStyles = createStyles({
header: {
display: "flex",
alignItems: "center",
justifyContent: "center",
marginBottom: Module712.space.PX_16
},
headerText: {
marginTop: Module712.space.PX_16,
marginBottom: Module712.space.PX_4
},
icon: {
transform: [{
rotate: "45deg"
}],
tintColor: Module712.colors.INTERACTIVE_TEXT_DEFAULT
},
disclaimer: {
marginTop: Module712.space.PX_12
}
});
export default function FamilyCenterModalAccept(props) {
const otherUser2 = props.otherUser;
return <Modal initialRouteName="ACCEPT" screens={useMemo(() => {
const otherUser3 = otherUser2;
return {
ACCEPT: {
headerShown: true,
headerLeft: getHeaderCloseButton(ModalActionCreators.pop),
headerTitle: () => null,
render: () => <FamilyCenterModalAcceptScreen otherUser={otherUser3} />
}
};
}, [otherUser2])} headerBackTitle={intl.string(t["13/7kX"])} />;
};