import React, {useState} from 'react' import { ActivityIndicator, StyleSheet, Text, TouchableOpacity, View, } from 'react-native' import LinearGradient from 'react-native-linear-gradient' import {useStores} from '../../../state' import {s, colors, gradients} from '../../lib/styles' import {ErrorMessage} from '../util/ErrorMessage' export const snapPoints = ['50%'] export function Component({ title, message, onPressConfirm, }: { title: string message: string | (() => JSX.Element) onPressConfirm: () => void | Promise }) { const store = useStores() const [isProcessing, setIsProcessing] = useState(false) const [error, setError] = useState('') const onPress = async () => { setError('') setIsProcessing(true) try { await onPressConfirm() store.shell.closeModal() return } catch (e: any) { setError(e.toString()) setIsProcessing(false) } } return ( {title} {typeof message === 'string' ? ( {message} ) : ( message() )} {error ? ( ) : undefined} {isProcessing ? ( ) : ( Confirm )} ) } const styles = StyleSheet.create({ title: { textAlign: 'center', fontWeight: 'bold', fontSize: 24, marginBottom: 12, }, description: { textAlign: 'center', fontSize: 17, paddingHorizontal: 22, color: colors.gray5, marginBottom: 10, }, btn: { flexDirection: 'row', alignItems: 'center', justifyContent: 'center', width: '100%', borderRadius: 32, padding: 14, backgroundColor: colors.gray1, }, })