import Styles from "@/constants/Styles"; import { apiSendOtp } from "@/lib/api"; import { useAuthSession } from "@/providers/AuthProvider"; import AsyncStorage from "@react-native-async-storage/async-storage"; import { useState } from "react"; import { Image, Text, ToastAndroid, View } from "react-native"; import { CodeField, Cursor, useBlurOnFulfill, useClearByFocusCell } from "react-native-confirmation-code-field"; import { ButtonForm } from "../buttonForm"; type Props = { phone: string otp: number } export default function ViewVerification({ phone, otp }: Props) { const [value, setValue] = useState(''); const [otpFix, setOtpFix] = useState(otp) const ref = useBlurOnFulfill({ value, cellCount: 4 }); const [props, getCellOnLayoutHandler] = useClearByFocusCell({ value, setValue, }); const { signIn, encryptToken } = useAuthSession(); const login = async () => { const valueUser = await AsyncStorage.getItem('user'); if (valueUser != null) { await AsyncStorage.removeItem('user'); const encrypted = await encryptToken(valueUser); signIn(encrypted); } else { return ToastAndroid.show('Terjadi kesalahan', ToastAndroid.SHORT) } } const onCheckOtp = () => { if (value === otpFix.toString()) { login() } else { return ToastAndroid.show('Kode OTP tidak sesuai', ToastAndroid.SHORT) } } const resendOtp = async () => { try { const otpNew = Math.floor(1000 + Math.random() * 9000) setOtpFix(otpNew) const responseOtp = await apiSendOtp({ phone, otp: otpNew }) if (responseOtp == 200) { return ToastAndroid.show('Kode OTP berhasil dikirim ulang', ToastAndroid.SHORT) } return ToastAndroid.show('Terjadi kesalahan dalam mengirim kode OTP', ToastAndroid.SHORT) } catch (error) { console.error('Error fetching data:', error); return ToastAndroid.show('Terjadi kesalahan', ToastAndroid.SHORT) } } return ( <> PERBEKEL DARMASABA Verifikasi Nomor Telepon Masukkan kode yang kami kirimkan melalui WhatsApp +{phone} ( {symbol || (isFocused ? : null)} )} /> { onCheckOtp() }} /> Tidak Menerima kode verifikasi? { resendOtp() }}>Kirim Ulang ) }