-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathuseFetchFiles.ts
36 lines (30 loc) · 1.05 KB
/
useFetchFiles.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { useState, useEffect, useCallback } from 'react';
import { fetchFilesByKnowledgeId } from '../services/fileService';
import { IFile } from '../models/IFile';
interface UseFetchFilesResult {
files: IFile[] | null;
loading: boolean;
fetchFiles: () => Promise<void>;
}
export const useFetchFiles = (knowledgeId: string | undefined, t: any): UseFetchFilesResult => {
const [files, setFiles] = useState<IFile[] | null>(null);
const [loading, setLoading] = useState(false);
const fetchFiles = useCallback(async () => {
if (!knowledgeId) return;
if (!t) return;
setLoading(true);
try {
const filesData = await fetchFilesByKnowledgeId(knowledgeId);
setFiles(filesData || []);
} catch (error: unknown) {
console.error("Error fetching files:", error);
// message.error(t('knowledgeDetail.fetchKnowledgeFailed') || "Failed to load files");
} finally {
setLoading(false);
}
}, [knowledgeId, t]);
useEffect(() => {
fetchFiles();
}, [fetchFiles]);
return { files, loading, fetchFiles };
};