import AsyncStorage from "@react-native-async-storage/async-storage"; import { useNavigation } from "@react-navigation/native"; import React, { useEffect, useRef, useState } from "react"; import { TextInput, View, Text, StyleSheet, TouchableOpacity, } from "react-native"; import { get_user_token, register_user, user_login, } from "../../services/api/controllers/auth"; import { get_customer_login_id } from "../../services/api/controllers/customers"; import { update_order_item_by_reference_number } from "../../services/api/controllers/order"; import { create_transaction } from "../../services/obananapayApi/transaction_api"; import { update_payment } from "../../services/obananapayGatewayApi/controllers/payment_api"; const OTPAuth = ({ setotpCheck, otp, setstatus, setsuccess, setloading, email, password, settoken, setuid, }) => { const et1 = useRef(); const et2 = useRef(); const et3 = useRef(); const et4 = useRef(); const et5 = useRef(); const et6 = useRef(); const [f1, setF1] = useState(""); const [f2, setF2] = useState(""); const [f3, setF3] = useState(""); const [f4, setF4] = useState(""); const [f5, setF5] = useState(""); const [f6, setF6] = useState(""); const [errorOTP, seterrorOTP] = useState(false); const [count, setCount] = useState(20); const [error, seterror] = useState(""); const [tokenHere, settokenHere] = useState(""); // console.log("token:" + token); // console.log("uid:" + uid); const navigation = useNavigation(); useEffect(() => { const interval = setInterval(() => { if (count == 0) { clearInterval(interval); } else { setCount(count - 1); } }, 1000); return () => { clearInterval(interval); }; }, [count]); /* ---------------check if the sent otp and the entered otp is the same--------------- */ const otpValidate = () => { let enteredOtp = f1 + f2 + f3 + f4 + f5 + f6; if (enteredOtp == otp) { console.log(otp); setotpCheck(true); register_user({ username: email.replace(/\s/g, "").toLowerCase(), password: password, }) .then((result) => { if (result.status == 201) { // setuserEmail(result.data.user.email); // settoken(result.data.token); // setuid(result.data.user._id); // send_email(); user_login({ username: email.replace(/\s/g, "").toLowerCase(), password: password, }) .then((result) => { if (result.status == 200) { // setuserEmail(result.data.user.email); // settoken(result.data.token); // setuid(result.data.user._id); // send_email(); settoken(result.data.token); settokenHere(result.data.token); get_user_token({ token: result.data.token, }) .then((results) => { if (results.status == 200) { AsyncStorage.setItem( "userId", results.data.profile.userId ); get_customer_login_id({ id: results.data.profile.userId, }) .then((result1) => { console.log(result1.data); if (result1.error) { seterror(result1.error); } else { AsyncStorage.setItem( "userData", JSON.stringify(result1.data) ); setuid(results.data.profile.userId); setstatus("customerCreate"); } }) .catch((error) => { // setError(error.message); console.log(error.message); }) .finally(() => { // setprodIsLoading(false); // Set loading to false when done loading }); // setauth(true); } else { seterror(results.message); console.log("login error" + results); } }) .catch((err) => { seterror(err); console.log(err); console.log(err + "failed to login"); }); // setauth(true); console.log("login success"); } else { seterror(result.message); console.log("login error" + result); } }) .catch((err) => { seterror(err); console.log(err); console.log(err + "failed to login"); }); // setauth(true); console.log("login success"); } else { seterror(result.message); console.log("login error" + result); } }) .catch((err) => { seterror(err); console.log(err); console.log(err + "failed to login"); }); } else { setotpError(true); } }; const phoneOTP = () => { if (email) { const min = 100000; // Minimum 6-digit number const max = 999999; // Maximum 6-digit number const randomNumber = Math.floor(Math.random() * (max - min + 1)) + min; // const email2 = "kramblooda@gmail.com"; send_email_api({ email: email.replace(/\s/g, "").toLowerCase(), html: `
your OTP code to continue your obanana pay transaction is ${randomNumber}
`, }) .then((result) => { setotp(randomNumber); if (result.status == 200) { } else { seterror(result.message); } console.log(result); }) .catch((err) => { seterror(err); console.error(err); console.log(err + "failed to send email"); }); } else { // setotpError(true); } }; return (