From ea4bd466da8eef30050683c4e5c3cf940e32bb10 Mon Sep 17 00:00:00 2001 From: AdityaJ2305 Date: Fri, 31 Jan 2025 22:47:18 +0530 Subject: [PATCH 1/9] replace useTanStack with useQuery --- .../Common/UserAutocompleteFormField.tsx | 38 +++---- src/components/Files/FileBlock.tsx | 16 +-- src/components/Files/FileUpload.tsx | 98 ++++++++++++------- src/components/Patient/FileUploadPage.tsx | 15 ++- 4 files changed, 104 insertions(+), 63 deletions(-) diff --git a/src/components/Common/UserAutocompleteFormField.tsx b/src/components/Common/UserAutocompleteFormField.tsx index 90addafb702..83a2db361a6 100644 --- a/src/components/Common/UserAutocompleteFormField.tsx +++ b/src/components/Common/UserAutocompleteFormField.tsx @@ -1,3 +1,4 @@ +import { useQuery } from "@tanstack/react-query"; import { useEffect, useState } from "react"; import { Autocomplete } from "@/components/Form/FormFields/Autocomplete"; @@ -10,7 +11,7 @@ import { UserType } from "@/components/Users/UserFormValidations"; import { UserBareMinimum } from "@/components/Users/models"; import routes from "@/Utils/request/api"; -import useTanStackQueryInstead from "@/Utils/request/useQuery"; +import query from "@/Utils/request/query"; import { classNames, formatName, @@ -33,35 +34,38 @@ type UserSearchProps = BaseProps & { export default function UserAutocomplete(props: UserSearchProps) { const field = useFormFieldPropsResolver(props); - const [query, setQuery] = useState(""); + const [queryParam, setQueryParam] = useState(""); const [disabled, setDisabled] = useState(false); - const { data, loading } = useTanStackQueryInstead(routes.userList, { - query: { - home_facility: props.homeFacility, - user_type: props.userType, - search_text: query, - limit: 50, - offset: 0, - }, + const { data, isLoading } = useQuery({ + queryKey: ["user", props.homeFacility, props.facilityId], + queryFn: query(routes.userList, { + queryParams: { + home_facility: props.homeFacility, + user_type: props.userType, + search_text: queryParam, + limit: 50, + offset: 0, + }, + }), }); useEffect(() => { if ( - loading || - query || + isLoading || + queryParam || !field.required || !props.noResultsError || - !data?.results + !data ) { return; } - if (data.results.length === 0) { + if (data.count === 0) { setDisabled(true); field.handleChange(undefined as unknown as UserBareMinimum); } - }, [loading, field.required, data?.results, props.noResultsError]); + }, [isLoading, field.required, data?.results, props.noResultsError]); const getAvatar = (option: UserBareMinimum) => { return ( @@ -94,8 +98,8 @@ export default function UserAutocomplete(props: UserSearchProps) { `${option.user_type} - ${option.username}` } optionValue={(option) => option} - onQuery={setQuery} - isLoading={loading} + onQuery={setQueryParam} + isLoading={isLoading} /> ); diff --git a/src/components/Files/FileBlock.tsx b/src/components/Files/FileBlock.tsx index 46b6f680889..1b9cb9f8959 100644 --- a/src/components/Files/FileBlock.tsx +++ b/src/components/Files/FileBlock.tsx @@ -1,3 +1,4 @@ +import { useQuery } from "@tanstack/react-query"; import dayjs from "dayjs"; import { t } from "i18next"; @@ -12,7 +13,7 @@ import { FileManagerResult } from "@/hooks/useFileManager"; import { FILE_EXTENSIONS } from "@/common/constants"; import routes from "@/Utils/request/api"; -import useTanStackQueryInstead from "@/Utils/request/useQuery"; +import query from "@/Utils/request/query"; export interface FileBlockProps { file: FileUploadModel; @@ -33,10 +34,13 @@ export default function FileBlock(props: FileBlockProps) { const filetype = fileManager.getFileType(file); - const fileData = useTanStackQueryInstead(routes.retrieveUpload, { - query: { file_type: fileManager.type, associating_id }, - pathParams: { id: file.id || "" }, - prefetch: filetype === "AUDIO" && !file.is_archived, + const { data: fileData } = useQuery({ + queryKey: ["file", { id: file.id, type: fileManager.type, associating_id }], + queryFn: query(routes.retrieveUpload, { + queryParams: { file_type: fileManager.type, associating_id }, + pathParams: { id: file.id || "" }, + }), + enabled: filetype === "AUDIO" && !file.is_archived, }); const icons: Record = { @@ -82,7 +86,7 @@ export default function FileBlock(props: FileBlockProps) {