|
5 | 5 | * |
6 | 6 | * Copyright Oxide Computer Company |
7 | 7 | */ |
8 | | -import { useMemo, type ReactElement } from 'react' |
| 8 | +import type { ReactElement } from 'react' |
9 | 9 | import { useLocation, type LoaderFunctionArgs } from 'react-router' |
10 | 10 |
|
11 | 11 | import { api, q, queryClient, usePrefetchedQuery } from '@oxide/api' |
@@ -58,28 +58,27 @@ export function ProjectLayoutBase({ overrideContentPane }: ProjectLayoutProps) { |
58 | 58 | const { data: project } = usePrefetchedQuery(projectView(projectSelector)) |
59 | 59 |
|
60 | 60 | const { pathname } = useLocation() |
| 61 | + |
61 | 62 | useQuickActions( |
62 | | - useMemo( |
63 | | - () => |
64 | | - [ |
65 | | - { value: 'Instances', path: pb.instances(projectSelector) }, |
66 | | - { value: 'Disks', path: pb.disks(projectSelector) }, |
67 | | - { value: 'Snapshots', path: pb.snapshots(projectSelector) }, |
68 | | - { value: 'Images', path: pb.projectImages(projectSelector) }, |
69 | | - { value: 'VPCs', path: pb.vpcs(projectSelector) }, |
70 | | - { value: 'Floating IPs', path: pb.floatingIps(projectSelector) }, |
71 | | - { value: 'Affinity Groups', path: pb.affinity(projectSelector) }, |
72 | | - { value: 'Project Access', path: pb.projectAccess(projectSelector) }, |
73 | | - ] |
74 | | - // filter out the entry for the path we're currently on |
75 | | - .filter((i) => i.path !== pathname) |
76 | | - .map((i) => ({ |
77 | | - navGroup: `Project '${project.name}'`, |
78 | | - value: i.value, |
79 | | - action: i.path, |
80 | | - })), |
81 | | - [pathname, project.name, projectSelector] |
82 | | - ) |
| 63 | + () => |
| 64 | + [ |
| 65 | + { value: 'Instances', path: pb.instances(projectSelector) }, |
| 66 | + { value: 'Disks', path: pb.disks(projectSelector) }, |
| 67 | + { value: 'Snapshots', path: pb.snapshots(projectSelector) }, |
| 68 | + { value: 'Images', path: pb.projectImages(projectSelector) }, |
| 69 | + { value: 'VPCs', path: pb.vpcs(projectSelector) }, |
| 70 | + { value: 'Floating IPs', path: pb.floatingIps(projectSelector) }, |
| 71 | + { value: 'Affinity Groups', path: pb.affinity(projectSelector) }, |
| 72 | + { value: 'Project Access', path: pb.projectAccess(projectSelector) }, |
| 73 | + ] |
| 74 | + // filter out the entry for the path we're currently on |
| 75 | + .filter((i) => i.path !== pathname) |
| 76 | + .map((i) => ({ |
| 77 | + navGroup: `Project '${project.name}'`, |
| 78 | + value: i.value, |
| 79 | + action: i.path, |
| 80 | + })), |
| 81 | + [pathname, project.name, projectSelector] |
83 | 82 | ) |
84 | 83 |
|
85 | 84 | return ( |
|
0 commit comments