@replyke/core
Version:
Replyke: Build interactive apps with social features like comments, votes, feeds, user lists, notifications, and more.
41 lines • 1.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = useSearchContent;
const react_1 = require("react");
const useProject_1 = __importDefault(require("../projects/useProject"));
const useAxiosPrivate_1 = __importDefault(require("../../config/useAxiosPrivate"));
const handleError_1 = require("../../utils/handleError");
function useSearchContent() {
const { projectId } = (0, useProject_1.default)();
const axios = (0, useAxiosPrivate_1.default)();
const [results, setResults] = (0, react_1.useState)([]);
const [loading, setLoading] = (0, react_1.useState)(false);
const [error, setError] = (0, react_1.useState)(null);
const search = (0, react_1.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((0, handleError_1.handleError)(err, "Failed to search content"));
}
finally {
setLoading(false);
}
}, [projectId, axios]);
const reset = (0, react_1.useCallback)(() => {
setResults([]);
setError(null);
}, []);
return { results, loading, error, search, reset };
}
//# sourceMappingURL=useSearchContent.js.map