import React, {useState} from 'react' import { ActivityIndicator, StyleSheet, TouchableOpacity, View, } from 'react-native' import {Text} from '../util/text/Text' import {s, colors} from 'lib/styles' import {ErrorMessage} from '../util/error/ErrorMessage' import {cleanError} from 'lib/strings/errors' import {usePalette} from 'lib/hooks/usePalette' import {isWeb} from 'platform/detection' import {useLingui} from '@lingui/react' import {Trans, msg} from '@lingui/macro' import type {ConfirmModal} from '#/state/modals' import {useModalControls} from '#/state/modals' export const snapPoints = ['50%'] export function Component({ title, message, onPressConfirm, onPressCancel, confirmBtnText, confirmBtnStyle, cancelBtnText, }: ConfirmModal) { const pal = usePalette('default') const {_} = useLingui() const {closeModal} = useModalControls() const [isProcessing, setIsProcessing] = useState(false) const [error, setError] = useState('') const onPress = async () => { setError('') setIsProcessing(true) try { await onPressConfirm() closeModal() return } catch (e: any) { setError(cleanError(e)) setIsProcessing(false) } } return ( {title} {typeof message === 'string' ? ( {message} ) : ( message() )} {error ? ( ) : undefined} {isProcessing ? ( ) : ( {confirmBtnText ?? Confirm} )} {onPressCancel === undefined ? null : ( {cancelBtnText ?? Cancel} )} ) } const styles = StyleSheet.create({ container: { flex: 1, padding: 10, paddingBottom: isWeb ? 0 : 60, }, title: { textAlign: 'center', marginBottom: 12, }, description: { textAlign: 'center', paddingHorizontal: 22, marginBottom: 10, }, btn: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', borderRadius: 32, padding: 14, marginTop: 22, marginHorizontal: 44, backgroundColor: colors.blue3, }, btnCancel: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', borderRadius: 32, padding: 14, marginHorizontal: 20, }, })