import { TaskMode, TaskType } from "@heygen/streaming-avatar"; import { useCallback } from "react"; import { useStreamingAvatarContext } from "./context"; export const useTextChat = () => { const { avatarRef } = useStreamingAvatarContext(); const sendMessage = useCallback( (message: string) => { if (!avatarRef.current) return; avatarRef.current.speak({ text: message, taskType: TaskType.TALK, taskMode: TaskMode.ASYNC, }); }, [avatarRef], ); const sendMessageSync = useCallback( async (message: string) => { if (!avatarRef.current) return; return await avatarRef.current?.speak({ text: message, taskType: TaskType.TALK, taskMode: TaskMode.SYNC, }); }, [avatarRef], ); const repeatMessage = useCallback( (message: string) => { if (!avatarRef.current) return; return avatarRef.current?.speak({ text: message, taskType: TaskType.REPEAT, taskMode: TaskMode.ASYNC, }); }, [avatarRef], ); const repeatMessageSync = useCallback( async (message: string) => { if (!avatarRef.current) return; return await avatarRef.current?.speak({ text: message, taskType: TaskType.REPEAT, taskMode: TaskMode.SYNC, }); }, [avatarRef], ); return { sendMessage, sendMessageSync, repeatMessage, repeatMessageSync, }; };