fix(filters): refetch on update (#200)

This commit is contained in:
Ludvig Lundgren 2022-03-22 23:18:47 +01:00 committed by GitHub
parent ae016c0a9a
commit 3493a39537
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 12 deletions

View file

@ -135,7 +135,7 @@ export default function FilterDetails() {
const { filterId } = useParams<{ filterId: string }>(); const { filterId } = useParams<{ filterId: string }>();
const { isLoading, data: filter } = useQuery( const { isLoading, data: filter } = useQuery(
["filter", +filterId], ["filters", filterId],
() => APIClient.filters.getByID(parseInt(filterId)), () => APIClient.filters.getByID(parseInt(filterId)),
{ {
retry: false, retry: false,
@ -151,7 +151,8 @@ export default function FilterDetails() {
toast.custom((t) => ( toast.custom((t) => (
<Toast type="success" body={`${currentFilter.name} was updated successfully`} t={t} /> <Toast type="success" body={`${currentFilter.name} was updated successfully`} t={t} />
)); ));
queryClient.invalidateQueries(["filter", currentFilter.id]); queryClient.refetchQueries(["filters"]);
// queryClient.invalidateQueries(["filters", currentFilter.id]);
} }
} }
); );
@ -163,7 +164,7 @@ export default function FilterDetails() {
)); ));
// Invalidate filters just in case, most likely not necessary but can't hurt. // Invalidate filters just in case, most likely not necessary but can't hurt.
queryClient.invalidateQueries("filters"); queryClient.invalidateQueries(["filters"]);
// redirect // redirect
history.push("/filters") history.push("/filters")
@ -334,7 +335,7 @@ export default function FilterDetails() {
function General() { function General() {
const { isLoading, data: indexers } = useQuery( const { isLoading, data: indexers } = useQuery(
["filter", "indexer_list"], ["filters", "indexer_list"],
APIClient.indexers.getOptions, APIClient.indexers.getOptions,
{ refetchOnWindowFocus: false } { refetchOnWindowFocus: false }
); );
@ -612,7 +613,7 @@ interface FilterActionsProps {
function FilterActions({ filter, values }: FilterActionsProps) { function FilterActions({ filter, values }: FilterActionsProps) {
const { data } = useQuery( const { data } = useQuery(
["filter", "download_clients"], ["filters", "download_clients"],
APIClient.download_clients.getAll, APIClient.download_clients.getAll,
{ refetchOnWindowFocus: false } { refetchOnWindowFocus: false }
); );

View file

@ -23,7 +23,7 @@ export default function Filters() {
const [createFilterIsOpen, toggleCreateFilter] = useToggle(false) const [createFilterIsOpen, toggleCreateFilter] = useToggle(false)
const { isLoading, error, data } = useQuery( const { isLoading, error, data } = useQuery(
"filters", ["filters"],
APIClient.filters.getAll, APIClient.filters.getAll,
{ refetchOnWindowFocus: false } { refetchOnWindowFocus: false }
); );
@ -117,8 +117,8 @@ const FilterItemDropdown = ({
(id: number) => APIClient.filters.delete(id), (id: number) => APIClient.filters.delete(id),
{ {
onSuccess: () => { onSuccess: () => {
queryClient.invalidateQueries("filters"); queryClient.invalidateQueries(["filters"]);
queryClient.invalidateQueries(["filter", filter.id]); queryClient.invalidateQueries(["filters", filter.id]);
toast.custom((t) => <Toast type="success" body={`Filter ${filter?.name} was deleted`} t={t} />); toast.custom((t) => <Toast type="success" body={`Filter ${filter?.name} was deleted`} t={t} />);
} }
@ -129,7 +129,7 @@ const FilterItemDropdown = ({
(id: number) => APIClient.filters.duplicate(id), (id: number) => APIClient.filters.duplicate(id),
{ {
onSuccess: () => { onSuccess: () => {
queryClient.invalidateQueries("filters"); queryClient.invalidateQueries(["filters"]);
toast.custom((t) => <Toast type="success" body={`Filter ${filter?.name} duplicated`} t={t} />); toast.custom((t) => <Toast type="success" body={`Filter ${filter?.name} duplicated`} t={t} />);
} }
@ -274,8 +274,8 @@ function FilterListItem({ filter, idx }: FilterListItemProps) {
// We need to invalidate both keys here. // We need to invalidate both keys here.
// The filters key is used on the /filters page, // The filters key is used on the /filters page,
// while the ["filter", filter.id] key is used on the details page. // while the ["filter", filter.id] key is used on the details page.
queryClient.invalidateQueries("filters"); queryClient.invalidateQueries(["filters"]);
queryClient.invalidateQueries(["filter", filter?.id]); queryClient.invalidateQueries(["filters", filter?.id]);
} }
} }
); );

View file

@ -87,7 +87,7 @@ export const ReleaseTable = () => {
() => APIClient.release.findQuery(queryPageIndex * queryPageSize, queryPageSize, queryFilters), () => APIClient.release.findQuery(queryPageIndex * queryPageSize, queryPageSize, queryFilters),
{ {
keepPreviousData: true, keepPreviousData: true,
staleTime: Infinity, staleTime: 5000,
} }
); );