-
Notifications
You must be signed in to change notification settings - Fork 98
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(hpc-vmware-managed-vcd): add auto refresh on updates
desc: new hook, refacto Signed-off-by: Paul Dickerson <[email protected]>
- Loading branch information
Paul Dickerson
committed
Oct 4, 2024
1 parent
0d364f1
commit e886218
Showing
11 changed files
with
103 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
39 changes: 39 additions & 0 deletions
39
packages/manager/apps/hpc-vmware-managed-vcd/src/data/hooks/useAutoRefetch.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
import { useQueryClient } from '@tanstack/react-query'; | ||
import { useEffect } from 'react'; | ||
|
||
type AutoRefetchProps = { | ||
queryKeys: string[] | string[][]; | ||
condition: boolean; | ||
interval?: number; | ||
}; | ||
|
||
export const useAutoRefetch = ({ | ||
queryKeys, | ||
condition, | ||
interval = 10_000, | ||
}: AutoRefetchProps) => { | ||
const queryClient = useQueryClient(); | ||
|
||
useEffect(() => { | ||
if (!condition) return; | ||
|
||
const refetchQueries = () => { | ||
if (Array.isArray(queryKeys[0])) { | ||
(queryKeys as string[][]).forEach((queryKey) => | ||
queryClient.invalidateQueries({ queryKey }), | ||
); | ||
} else { | ||
queryClient.invalidateQueries({ | ||
queryKey: queryKeys as string[], | ||
}); | ||
} | ||
}; | ||
|
||
const refetchInterval = setInterval(() => refetchQueries(), interval); | ||
|
||
// eslint-disable-next-line consistent-return | ||
return () => { | ||
clearInterval(refetchInterval); | ||
}; | ||
}, [condition, interval, queryKeys, queryClient]); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
packages/manager/apps/hpc-vmware-managed-vcd/src/utils/getRefetchConditions.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
import IVcdDatacentre from '@/types/vcd-datacenter.interface'; | ||
import IVcdOrganization from '@/types/vcd-organization.interface'; | ||
|
||
export type UpdatableResource = IVcdOrganization | IVcdDatacentre; | ||
|
||
const targetSpecKey = 'configure-target-spec'; | ||
|
||
export const isUpdatingTargetSpec = (resource: UpdatableResource) => | ||
!!resource?.currentTasks?.some((task) => task.type === targetSpecKey); | ||
|
||
export const hasResourceUpdatingTargetSpec = (resources: UpdatableResource[]) => | ||
!!resources?.some((resource) => isUpdatingTargetSpec(resource)); |