import React from 'react'; import {createContext, useState, useEffect} from 'react'; import { Axios } from '../services/PhpApi'; export type TUserContextProviderProps = { children: React.ReactNode } export type TUser = { id: number, qr_id: string, email: string, name: string } export type DogT = { id: number, qr_id: string, email: string, name: string, phone: string, qr_width_cm: number, qr_height_cm: number, qr_fontsize: number, qr_visible_items: number, qr_item_sequence: number, qr_code: string, picture: string }; export type ResponseT = { success: number, status: number, message: string, fields: string, data: DogT } | any; export type UserCtxT = { user: TUser | null, setUser: React.Dispatch>, getUser: () => Promise, wait: boolean, setWait: React.Dispatch>, dog: ResponseT, setDog: React.Dispatch } export const UserCtx = createContext(null); export const UserCtxProvider = ({children}:TUserContextProviderProps) => { const [user, setUser] = useState(null); const [wait, setWait] = useState(false); const [dog, setDog] = useState({}); const getUser = async () => { if(user) { const {data} = await Axios.get('getUser.php'); if(data.success && data.user) { setUser(data.user); return; } //setUser(null); } else { const session = await Axios.get('session.php'); const {data} = session; if(data.success && data.user) { setUser(data.user); return; } } setUser(null); } useEffect(() => { async function asyncCall() { await getUser(); } asyncCall(); },[]); return ( {children} ); }