WIP
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'
|
||||
import { documentsApi } from '../api/endpoints'
|
||||
import type { DocumentListResponse, UploadDocumentResponse } from '../api/types'
|
||||
import type { DocumentListResponse, DocumentCategoriesResponse } from '../api/types'
|
||||
|
||||
interface UseDocumentsParams {
|
||||
status?: string
|
||||
category?: string
|
||||
limit?: number
|
||||
offset?: number
|
||||
}
|
||||
@@ -18,10 +19,11 @@ export const useDocuments = (params: UseDocumentsParams = {}) => {
|
||||
})
|
||||
|
||||
const uploadMutation = useMutation({
|
||||
mutationFn: ({ file, groupKey }: { file: File; groupKey?: string }) =>
|
||||
documentsApi.upload(file, groupKey),
|
||||
mutationFn: ({ file, groupKey, category }: { file: File; groupKey?: string; category?: string }) =>
|
||||
documentsApi.upload(file, { groupKey, category }),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['documents'] })
|
||||
queryClient.invalidateQueries({ queryKey: ['categories'] })
|
||||
},
|
||||
})
|
||||
|
||||
@@ -63,6 +65,15 @@ export const useDocuments = (params: UseDocumentsParams = {}) => {
|
||||
},
|
||||
})
|
||||
|
||||
const updateCategoryMutation = useMutation({
|
||||
mutationFn: ({ documentId, category }: { documentId: string; category: string }) =>
|
||||
documentsApi.updateCategory(documentId, category),
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ['documents'] })
|
||||
queryClient.invalidateQueries({ queryKey: ['categories'] })
|
||||
},
|
||||
})
|
||||
|
||||
return {
|
||||
documents: data?.documents || [],
|
||||
total: data?.total || 0,
|
||||
@@ -86,5 +97,24 @@ export const useDocuments = (params: UseDocumentsParams = {}) => {
|
||||
updateGroupKey: updateGroupKeyMutation.mutate,
|
||||
updateGroupKeyAsync: updateGroupKeyMutation.mutateAsync,
|
||||
isUpdatingGroupKey: updateGroupKeyMutation.isPending,
|
||||
updateCategory: updateCategoryMutation.mutate,
|
||||
updateCategoryAsync: updateCategoryMutation.mutateAsync,
|
||||
isUpdatingCategory: updateCategoryMutation.isPending,
|
||||
}
|
||||
}
|
||||
|
||||
export const useCategories = () => {
|
||||
const { data, isLoading, error, refetch } = useQuery<DocumentCategoriesResponse>({
|
||||
queryKey: ['categories'],
|
||||
queryFn: () => documentsApi.getCategories(),
|
||||
staleTime: 60000,
|
||||
})
|
||||
|
||||
return {
|
||||
categories: data?.categories || [],
|
||||
total: data?.total || 0,
|
||||
isLoading,
|
||||
error,
|
||||
refetch,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user