|
7 | 7 | */ |
8 | 8 |
|
9 | 9 | import { useForm } from 'react-hook-form' |
10 | | -import type { LoaderFunctionArgs } from 'react-router' |
11 | 10 |
|
12 | | -import { queryClient, useApiMutation, usePrefetchedQuery } from '~/api' |
| 11 | +import { queryClient, useApiMutation, type Instance } from '~/api' |
13 | 12 | import { ComboboxField } from '~/components/form/fields/ComboboxField' |
14 | 13 | import { HL } from '~/components/HL' |
15 | | -import { |
16 | | - getAntiAffinityGroupSelector, |
17 | | - useAntiAffinityGroupSelector, |
18 | | -} from '~/hooks/use-params' |
| 14 | +import { useAntiAffinityGroupSelector } from '~/hooks/use-params' |
19 | 15 | import { addToast } from '~/stores/toast' |
20 | 16 | import { toComboboxItems } from '~/ui/lib/Combobox' |
21 | 17 | import { Modal } from '~/ui/lib/Modal' |
22 | 18 |
|
23 | | -import { |
24 | | - affinityGroupList, |
25 | | - antiAffinityGroupMemberList, |
26 | | - instanceList, |
27 | | -} from './affinity-util' |
28 | | - |
29 | | -export async function clientLoader({ params }: LoaderFunctionArgs) { |
30 | | - const { antiAffinityGroup, project } = getAntiAffinityGroupSelector(params) |
31 | | - await Promise.all([ |
32 | | - queryClient.prefetchQuery(antiAffinityGroupMemberList({ antiAffinityGroup, project })), |
33 | | - queryClient.prefetchQuery(instanceList({ project })), |
34 | | - queryClient.prefetchQuery(affinityGroupList({ project })), |
35 | | - ]) |
36 | | - return null |
37 | | -} |
38 | | - |
39 | 19 | export function AddAntiAffinityGroupMemberForm({ |
| 20 | + availableInstances, |
40 | 21 | isModalOpen, |
41 | 22 | setIsModalOpen, |
42 | 23 | }: { |
| 24 | + availableInstances: Instance[] |
43 | 25 | isModalOpen: boolean |
44 | 26 | setIsModalOpen: (open: boolean) => void |
45 | 27 | }) { |
46 | 28 | const { project, antiAffinityGroup } = useAntiAffinityGroupSelector() |
47 | 29 |
|
48 | | - const { data: members } = usePrefetchedQuery( |
49 | | - antiAffinityGroupMemberList({ antiAffinityGroup, project }) |
50 | | - ) |
51 | | - const { data: instances } = usePrefetchedQuery(instanceList({ project })) |
52 | | - // Construct a list of all instances not currently in this anti-affinity group. |
53 | | - const availableInstances = instances.items.filter( |
54 | | - (instance) => !members.items.some(({ value }) => value.name === instance.name) |
55 | | - ) |
56 | | - |
57 | 30 | const form = useForm({ |
58 | 31 | defaultValues: { |
59 | 32 | antiAffinityGroupMember: '', |
|
0 commit comments