41 lines
947 B
TypeScript
41 lines
947 B
TypeScript
import { useCallback, useEffect, useState } from 'react';
|
|
import useAiImageQuery from './useAiImageQuery';
|
|
import { parseTitleAndCaption } from '.';
|
|
|
|
export default function useTitleCaptionAiImageQuery(
|
|
imageBase64?: string,
|
|
) {
|
|
const [
|
|
request,
|
|
text,
|
|
isLoading,
|
|
_reset,
|
|
error,
|
|
] = useAiImageQuery(imageBase64, 'title-and-caption');
|
|
|
|
const [title, setTitle] = useState('');
|
|
const [caption, setCaption] = useState('');
|
|
useEffect(() => {
|
|
const { title, caption } = parseTitleAndCaption(text);
|
|
setTitle(title);
|
|
setCaption(caption);
|
|
}, [text]);
|
|
|
|
const resetTitle = useCallback(() => setTitle(''), []);
|
|
const resetCaption = useCallback(() => setCaption(''), []);
|
|
|
|
const isLoadingTitle = isLoading && !caption;
|
|
const isLoadingCaption = isLoading;
|
|
|
|
return [
|
|
request,
|
|
title,
|
|
caption,
|
|
isLoadingTitle,
|
|
isLoadingCaption,
|
|
resetTitle,
|
|
resetCaption,
|
|
error,
|
|
] as const;
|
|
}
|