31 lines
1.1 KiB
TypeScript
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;
|