diff love/epi/src/hooks/useComposer.ts @ 38:cf9caa4abc3e

[Love] FE and BE. Can chat and render images. Also created MCP for powerpoint generations.
author MrJuneJune <me@mrjunejune.com>
date Mon, 01 Dec 2025 20:35:56 -0800
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/love/epi/src/hooks/useComposer.ts	Mon Dec 01 20:35:56 2025 -0800
@@ -0,0 +1,30 @@
+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,
+  };
+};