view love/epi/src/hooks/useComposer.ts @ 275:78699f810817

Add Qwen3-VL and WebRTC dictation services Add Bazel targets for the CUDA-backed Qwen3-VL server and a local WebRTC faster-whisper dictation service. Co-authored-by: Copilot <[email protected]> Copilot-Session: e3d8cb06-6c95-4ae0-9757-651d3796ab00
author MrJuneJune <me@mrjunejune.com>
date Mon, 17 Aug 2026 10:58:47 -0700
parents cf9caa4abc3e
children
line wrap: on
line source

import { useCallback } from 'react';
import { useAtom } from 'jotai';
import { composerTextAtom, composerStatusAtom } from '@/atoms/composerAtom';

export const useComposer = () => {
  const [text, setText] = useAtom(composerTextAtom);
  const [status, setStatus] = useAtom(composerStatusAtom);

  const setSending = useCallback(() => setStatus('sending' as const), [setStatus]);
  const setIdle = useCallback(() => setStatus('idle' as const), [setStatus]);
  const reset = useCallback(() => {
    setText('');
    setIdle();
  }, [setText, setIdle]);

  const isSending = status === 'sending';
  const isEmpty = text.trim() === '';

  return {
    text,
    setText,
    status,
    isSending,
    isEmpty,
    isDisabled: isEmpty && !isSending,
    setSending,
    setIdle,
    reset,
  };
};