Refactored API Key state to update components when updating API key

This commit is contained in:
Lucas Oliveira 2023-11-16 17:54:03 -03:00
commit ebae35bf66

View file

@ -1,6 +1,7 @@
import { createContext, useEffect, useState } from "react"; import { createContext, useContext, useEffect, useState } from "react";
import { checkHasApiKey, checkHasStore } from "../controllers/API"; import { checkHasApiKey, checkHasStore } from "../controllers/API";
import { storeContextType } from "../types/contexts/store"; import { storeContextType } from "../types/contexts/store";
import { AuthContext } from "./authContext";
//store context to share user components and update them //store context to share user components and update them
const initialValue = { const initialValue = {
@ -21,6 +22,7 @@ export function StoreProvider({ children }) {
const [hasApiKey, setHasApiKey] = useState(true); const [hasApiKey, setHasApiKey] = useState(true);
const [validApiKey, setValidApiKey] = useState(false); const [validApiKey, setValidApiKey] = useState(false);
const [storeChecked, setStoreChecked] = useState(false); const [storeChecked, setStoreChecked] = useState(false);
const { apiKey } = useContext(AuthContext);
useEffect(() => { useEffect(() => {
const fetchStoreData = async () => { const fetchStoreData = async () => {
@ -37,23 +39,22 @@ export function StoreProvider({ children }) {
fetchStoreData(); fetchStoreData();
}, []); }, []);
useEffect(() => { const fetchApiData = async () => {
setLoadingApiKey(true); setLoadingApiKey(true);
const fetchStoreData = async () => { try {
try { const res = await checkHasApiKey();
if (storeChecked) return; console.log(res);
const res = await checkHasApiKey(); setHasApiKey(res?.has_api_key ?? false);
console.log(res); setValidApiKey(res?.is_valid ?? false);
setHasApiKey(res?.has_api_key ?? false); setLoadingApiKey(false);
setValidApiKey(res?.is_valid ?? false); } catch (e) {
setLoadingApiKey(false); console.log(e);
} catch (e) { }
console.log(e); };
}
};
fetchStoreData(); useEffect(() => {
}, [storeChecked, validApiKey]); fetchApiData();
}, [storeChecked, validApiKey, apiKey]);
return ( return (
<StoreContext.Provider <StoreContext.Provider