Context

src/Context/UserContext.js

import { createContext } from "react";

export const UserContext = createContext(null)

App.js

import { StatusBar } from 'expo-status-bar';
import { NativeBaseProvider } from 'native-base';
import { SafeAreaView, StyleSheet, Text, View } from 'react-native';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import Navigators from './src/Navigation/Navigators';
import {NavigationContainer} from "@react-navigation/native"
import { useState } from 'react';

import { UserContext } from './src/Context/UserContext';

export default function App() {
	const [auth,setAuth]=useState({status:false})

  return (
   <SafeAreaProvider>
	   <NavigationContainer>
			<NativeBaseProvider>
				<UserContext.Provider value={{auth,setAuth}}>
					<Navigators/>
				</UserContext.Provider>
			</NativeBaseProvider>
	   </NavigationContainer>
   </SafeAreaProvider>
  );
};

LoginScreen.jsx

// Some code
import { Video } from 'expo-av'
import { getAuth, onAuthStateChanged, signInWithEmailAndPassword } from 'firebase/auth'
import { setDoc } from 'firebase/firestore'
import { Box, Button, Center, Heading, Input, Spinner, Text, useToast, View, VStack } from 'native-base'
import React from 'react'
import { useContext } from 'react'
import { useState } from 'react'
import { SafeAreaView } from 'react-native'
import { postImportirAuth } from '../../Api/importirApi'
import { authFirebase, db } from '../../Config/firebase'
import { UserContext } from '../../Context/UserContext'

function LoginScreen({navigation}) {
const [username,setUsername]=useState()
const [password,setPassword]=useState()
const [loading,setLoading]=useState(false)

const {auth,setAuth} = useContext(UserContext)
const toast =useToast()

const handleLogin= async ()=>{
	setLoading(true)
	try {
		let userData = {}
		
		const result = await postImportirAuth({email:username},'sign-in')
		if(result.status===true){

			userData.email=username
			userData.token=result.data
			userData.status=true
			console.log(userData,'ini user data di handle login')

			setAuth(userData)
			setLoading(false)
		}

	} catch (error) {
		setLoading(false)
		toast.show({
			description: error.message
		  })
	}
	setLoading(false)

}
  return (<>
  		<Box>
		<Box  position='absolute' bottom='20'>
			<Center width='md' bgColor='alpha'>
				{/* <Text>{auth}</Text> */}
				<Heading color='white' shadow='3'>Login</Heading>
				<Input onChangeText={(e)=>setUsername(e)} type='text' mt='1' width='64' placeholder='email' bgColor='white'/>
				<Input onChangeText={(e)=>setPassword(e)} type='password' mt='1' width='64' placeholder='password' bgColor='white'/>
				{loading?
					<Spinner/>
					:
					<Button width='64' mt='1' onPress={()=>handleLogin()}>Log in</Button>
				}
				<Text color='white' shadow='3' onPress={()=>navigation.navigate('Daftar')}>Belum memiliki akun? Daftar</Text>
			</Center>
			</Box>
		</Box>

		</> )
}

export default LoginScreen

Last updated

Was this helpful?