Created
December 11, 2023 06:39
-
-
Save thebiltheory/56be47a947a2ff2a1420d035c5cf4a80 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {useState, useEffect} from 'react'; | |
// Define a type for the prerequisite check function | |
type PrerequisiteCheck = () => Promise<any>; | |
export default function useUserPrerequisites( | |
prerequisiteChecks: PrerequisiteCheck[] = [], | |
) { | |
const [userHasPrerequisite, setUserHasPrerequisites] = useState(false); | |
const [isLoading, setIsLoading] = useState(true); | |
useEffect(() => { | |
const checkPrerequisites = async () => { | |
try { | |
setIsLoading(true); | |
// Run all prerequisite checks | |
const results = await Promise.all( | |
prerequisiteChecks.map((check) => check()), | |
); | |
// Determine if all prerequisites are met | |
const allPrerequisitesMet = results.every((result) => result === true); | |
setUserHasPrerequisites(allPrerequisitesMet); | |
} catch (error) { | |
console.error('Error checking prerequisites', error); | |
// Handle error, potentially setting prerequisites to false | |
} finally { | |
setIsLoading(false); | |
} | |
}; | |
checkPrerequisites(); | |
// eslint-disable-next-line react-hooks/exhaustive-deps | |
}, []); | |
return {userHasPrerequisite, isLoading}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment