import React, { ReactNode, useState } from 'react'; import { Text, View } from 'react-native'; import StyledButton from '../StyledButton'; import ActionModal from '../ActionModal'; import { mockTheme, useAppThemeFromContext } from '../../../util/theme'; import createStyles from './styles'; interface ISettingsButtonSectionProps { sectionTitle: string; sectionButtonText: string; descriptionText: ReactNode; needsModal: boolean; buttonDisabled?: boolean; modalTitleText?: string; modalDescriptionText?: string; modalConfirmButtonText?: string; modalCancelButtonText?: string; onPress?: () => void; modalOnConfirm?: () => void; } const SettingsButtonSection = ({ sectionTitle, sectionButtonText, descriptionText, needsModal, buttonDisabled, modalTitleText, modalDescriptionText, modalConfirmButtonText, modalCancelButtonText, onPress, modalOnConfirm, }: ISettingsButtonSectionProps) => { const [modalVisible, setModalVisible] = useState(false); const { colors } = useAppThemeFromContext() || mockTheme; const styles = createStyles(colors); const updateShowModalState = () => setModalVisible(!modalVisible); const onButtonPress = () => (onPress ? onPress() : updateShowModalState()); const onModalConfirmPress = () => { modalOnConfirm?.(); setModalVisible(!modalVisible); }; return ( <> {sectionTitle} {descriptionText} {sectionButtonText} {needsModal ? ( {modalTitleText} {modalDescriptionText} ) : null} ); }; export default React.memo(SettingsButtonSection);