equilink-site/client/src/hooks/useCharacterSelection.ts
2025-02-12 17:38:06 +05:30

31 lines
1.1 KiB
TypeScript

import { useState } from 'react';
/**
* useCharacterSelection - A custom hook to manage character selection logic.
*
* Responsibilities:
* 1. Manages the `selectedCharacter` state.
* 2. Provides a function (`handleCharacterSelect`) to update the selected character.
* 3. Ensures the selected character data is validated before updating.
*/
const useCharacterSelection = () => {
const [selectedCharacter, setSelectedCharacter] = useState(null); // Holds the currently selected character.
/**
* handleCharacterSelect - Updates the selected character.
*
* @param character - The character to select.
*/
const handleCharacterSelect = (character: any) => {
if (!character?.agent?.agent_details) {
console.error('Invalid character data'); // Log an error if the character data structure is invalid.
return;
}
setSelectedCharacter(character); // Update the selected character state.
};
return { selectedCharacter, handleCharacterSelect, setSelectedCharacter }; // Return the state and handlers for character selection.
};
export default useCharacterSelection;