@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
35 lines • 1.3 kB
JavaScript
import { useCallback, useState } from "react";
import useProject from "../projects/useProject";
import useAxiosPrivate from "../../config/useAxiosPrivate";
import { handleError } from "../../utils/handleError";
export default function useSearchContent() {
const { projectId } = useProject();
const axios = useAxiosPrivate();
const [results, setResults] = useState([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const search = useCallback(async ({ query, sourceTypes, spaceId, conversationId, limit }) => {
if (!projectId)
return;
if (!query.trim())
return;
setLoading(true);
setError(null);
try {
const response = await axios.post(`/${projectId}/search/content`, { query, sourceTypes, spaceId, conversationId, limit });
setResults(response.data);
}
catch (err) {
setError(handleError(err, "Failed to search content"));
}
finally {
setLoading(false);
}
}, [projectId, axios]);
const reset = useCallback(() => {
setResults([]);
setError(null);
}, []);
return { results, loading, error, search, reset };
}
//# sourceMappingURL=useSearchContent.js.map