|
Server : LiteSpeed System : Linux server354.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64 User : getfsxkz ( 1681) PHP Version : 8.1.33 Disable Function : NONE Directory : /home/getfsxkz/theaztech.org/wp-content/plugins/extendify/src/Draft/hooks/ |
Upload File : |
import { useEffect, useState } from '@wordpress/element';
import { completion } from '@draft/api/Data';
export const useCompletion = (
prompt,
promptType,
systemMessageKey,
details,
) => {
const [result, setResult] = useState('');
const [error, setError] = useState(null);
const [loading, setLoading] = useState(false);
useEffect(() => {
let canceled = false;
let reader;
const decoder = new TextDecoder();
if (!prompt) {
setLoading(false);
setResult('');
canceled = true;
return;
}
const fetchData = async () => {
setResult('');
setError(false);
setLoading(true);
const response = await completion(
prompt,
promptType,
systemMessageKey,
details,
);
reader = response.body.getReader();
let done = false;
while (!done) {
const { value, done: readerDone } = await reader.read();
done = readerDone;
if (value && !canceled) {
const decodedValue = decoder.decode(value);
setResult((prevResult) => prevResult + decodedValue);
}
}
};
fetchData()
.finally(() => {
if (!canceled) {
setLoading(false);
}
})
.catch((error) => {
if (!canceled) {
setError(error);
}
});
return () => {
canceled = true;
if (reader) {
reader.cancel();
}
};
}, [prompt, systemMessageKey, promptType, details]);
return { completion: result, error, loading };
};