// Metro module 4618 (f4619). import { PureComponent, createRef, memo } from "react"; import { ScrollView, View, StyleSheet } from "react-native"; import { createLegacyClassComponentStyles } from "../../design/components/Styles/native/createStyles"; import Module712 from "../../_bundle/Module712"; import { ButtonColors } from "../../design/void/native"; import { ThemeContext } from "../../_bundle/Module3901"; import { getParser } from "../../modules/markup/CustomMarkup.native"; import { Timeout } from "../../_bundle/Timeout"; import { setAccessibilityFocus } from "../../modules/a11y/native/setAccessibilityFocus.android"; import { Text } from "../../design/components/Text/native/Text"; import { intl, t } from "../../intl/index.native"; import { Button } from "../../design/components/Button/native/Button.native"; import { PressableOpacity } from "../../design/void/Pressables/native/Pressables"; import ThemedGradient from "../../modules/client_themes/native/ThemedGradient"; import useWindowDimensions_native from "../../modules/screen/useWindowDimensions.native"; import { useIsScreenLandscape } from "../../modules/screen/useIsScreenLandscape.native"; const styles = createLegacyClassComponentStyles({ alert: { borderRadius: Module712.radii.sm, padding: 16, backgroundColor: Module712.colors.BACKGROUND_BASE_LOW }, titleText: { marginBottom: 16, color: Module712.colors.MOBILE_TEXT_HEADING_PRIMARY }, divider: { height: StyleSheet.hairlineWidth, backgroundColor: Module712.colors.BORDER_SUBTLE }, body: { marginTop: 16, color: Module712.colors.TEXT_STRONG }, buttons: { marginTop: 24 }, cancelButton: { marginTop: 8 }, secondaryConfirm: { marginTop: 16, alignSelf: "center" }, gradient: { borderRadius: Module712.radii.sm } }); class Alert extends PureComponent { static contextType = ThemeContext; static defaultProps = { confirmColor: ButtonColors.BRAND, autoCloseOnConfirm: true }; titleRef = createRef(); state = { confirming: false }; renderContent = getParser(); timeout = new Timeout(); focusTimeout = new Timeout(); handleConfirm = () => { if (!this.state.confirming) { const props = this.props; const { onClose, onConfirm, autoCloseOnConfirm } = props; this.setState({ confirming: true }); this.timeout.start(500, () => { this.setState({ confirming: false }); }); if (autoCloseOnConfirm && onClose != null) { onClose(); } if (onConfirm != null) { onConfirm(); } } }; handleCancel = () => { const props = this.props; const { onClose, onCancel } = props; if (onCancel != null) { onCancel(); } if (onClose != null) { onClose(); } }; handleSecondaryConfirm = () => { const props = this.props; const { onClose, onConfirmSecondary } = props; if (onClose != null) { onClose(); } if (onConfirmSecondary != null) { onConfirmSecondary(); } }; componentDidMount() { if (this.titleRef.current != null) { setImmediate(() => { this.focusTimeout.start(300, () => { setAccessibilityFocus({ ref: this.titleRef }); }); }); } } componentWillUnmount() { this.timeout.stop(); this.focusTimeout.stop(); } componentDidUpdate() { const confirming = this.props.confirming; if (confirming != null) { this.timeout.stop(); this.setState({ confirming }); } } renderHeader() { const r10 = styles(this.context); const title = this.props.title; const r2 = title == null; let r15 = null; if (!r2) { r15 = null; if (title !== "") { let r11 = title; if (typeof r11 === "string") { r11 = this.renderContent(title); } r15 = {r11} ; } } return r15; } renderBody() { const r11 = styles(this.context); const props = this.props; const { body, children } = props; let r7 = null; if (body != null) { let r26 = body; if (typeof r26 === "string") { r26 = this.renderContent(body); } r7 = {r26} ; } return <> {r7} {children} ; } renderButtons() { const r10 = styles(this.context); const props = this.props; const { cancelText, confirmText = intl.string(t.BddRzS), confirmColor, secondaryConfirmText, noDefaultButtons, renderConfirmIcon, renderConfirmRightIcon, renderConfirmButton } = props; let isConfirmButtonDisabled = props.isConfirmButtonDisabled; const confirming = this.state.confirming; let r34 = null; if (!noDefaultButtons) { const r9 = cancelText != null ?