• Custom React hook to manage and fetch a user's quests data.

    Parameters

    • params: {
          [key: string]: unknown;
      } = {}

      Parameters for filtering or customizing quest fetching.

      • [key: string]: unknown

    Returns UseUserQuestsReturn

    The returning object contains:

    • userQuests: An array of user quest objects representing the fetched user quests.
    • fetched: Boolean indicating whether the user's quests have been successfully fetched.
    • refresh: FetchUserQuestsMethod - Function to refetch the user's quests.

    Implementation Details

    • Caching: API responses are cached for 2 minutes (120,000 ms). Cache is cleared on refresh or completeQuest.
    • Effect Trigger: fetchUserQuests runs via useEffect whenever params change, ensuring the data stays up to date.
    • Error Handling: Errors during fetching or quest completion are logged and re-thrown for debugging.

    Example

    import { useUserQuests } from 'react-playmakers';

    const UserQuestsComponent = () => {
    const { userQuests, fetched, refresh, completeQuest } = useUserQuests({
    startDate: '2025-01-01T00:00:00Z', // Start date filter
    endDate: '2025-01-31T23:59:59Z', // End date filter
    });

    useEffect(() => {
    if (fetched) {
    console.log('User quests fetched:', userQuests);
    }
    }, [fetched, userQuests]);

    const handleCompleteQuest = async (quest) => {
    try {
    const updatedQuest = await completeQuest(quest);
    console.log('Quest completed:', updatedQuest);
    } catch (error) {
    console.error('Error completing quest:', error);
    }
    };

    return (
    <div>
    <h1>User Quests</h1>
    {!fetched && <p>Loading...</p>}
    {fetched && userQuests.map((quest) => (
    <div key={quest.id}>
    <h3>{quest.name}</h3>
    <button onClick={() => handleCompleteQuest(quest)}>Complete Quest</button>
    </div>
    ))}
    <button onClick={() => refresh(true)}>Refresh Quests</button>
    </div>
    );
    };

    export default UserQuestsComponent;

Generated using TypeDoc