Quiz_dashboard/src/Hooks/useAbility.ts
karimaldeen 7aa8d50cfd fix
2024-09-07 12:16:10 +03:00

43 lines
1.2 KiB
TypeScript

import { useState, useEffect } from "react";
import { ABILITIES_KEY } from "../config/AppKey";
import { ABILITIES_ENUM, ABILITIES_VALUES_ENUM } from "../enums/abilities";
// Define the return type of the hook
type UseAbilityHook = {
hasAbility: (
category: ABILITIES_ENUM,
value: ABILITIES_VALUES_ENUM,
) => boolean;
};
// Define the hook function
export function useAbility(): UseAbilityHook {
// State to store abilities
const [abilities, setAbilities] = useState<string[]>([]);
// Fetch abilities from local storage on component mount
useEffect(() => {
const abilitiesString = localStorage.getItem(ABILITIES_KEY);
if (abilitiesString) {
const parsedAbilities = JSON.parse(abilitiesString);
setAbilities(parsedAbilities);
}
}, []);
// Function to check if an ability is present
function hasAbility(
category: ABILITIES_ENUM,
value: ABILITIES_VALUES_ENUM,
): boolean {
if (category === ABILITIES_ENUM.PASS) {
return true;
}
const abilityString = `${category}::${value}`;
return abilities.includes(abilityString);
}
// Return the function as part of the hook
return { hasAbility };
}