Skip to content

Commit 522d3ab

Browse files
authored
Fix empty screen flash before nav on clicking project in top bar (#2156)
fix empty screen flash before nav on clicking project in top bar
1 parent c726356 commit 522d3ab

File tree

5 files changed

+26
-21
lines changed

5 files changed

+26
-21
lines changed

app/components/TopBarPicker.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,7 @@ export function ProjectPicker({ project }: { project?: Project }) {
259259
const { data: projects } = useApiQuery('projectList', { query: { limit: 200 } })
260260
const items = (projects?.items || []).map(({ name }) => ({
261261
label: name,
262-
to: pb.instances({ project: name }),
262+
to: pb.project({ project: name }),
263263
}))
264264

265265
return (

app/forms/project-create.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function CreateProjectSideModalForm() {
3434
// avoid the project fetch when the project page loads since we have the data
3535
queryClient.setQueryData('projectView', { path: { project: project.name } }, project)
3636
addToast({ content: 'Your project has been created' })
37-
navigate(pb.instances({ project: project.name }))
37+
navigate(pb.project({ project: project.name }))
3838
},
3939
})
4040

app/pages/ProjectsPage.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ ProjectsPage.loader = async () => {
4949
const colHelper = createColumnHelper<Project>()
5050
const staticCols = [
5151
colHelper.accessor('name', {
52-
cell: makeLinkCell((project) => pb.instances({ project })),
52+
cell: makeLinkCell((project) => pb.project({ project })),
5353
}),
5454
colHelper.accessor('description', Columns.description),
5555
colHelper.accessor('timeCreated', Columns.timeCreated),
@@ -107,7 +107,7 @@ export function ProjectsPage() {
107107
},
108108
...(projects?.items || []).map((p) => ({
109109
value: p.name,
110-
onSelect: () => navigate(pb.instances({ project: p.name })),
110+
onSelect: () => navigate(pb.project({ project: p.name })),
111111
navGroup: 'Go to project',
112112
})),
113113
],

app/util/path-builder.spec.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ test('path builder', () => {
5151
"ipPoolsNew": "/system/networking/ip-pools-new",
5252
"nics": "/projects/p/instances/i/network-interfaces",
5353
"profile": "/settings/profile",
54-
"project": "/projects/p",
54+
"project": "/projects/p/instances",
5555
"projectAccess": "/projects/p/access",
5656
"projectEdit": "/projects/p/edit",
5757
"projectImage": "/projects/p/images/im",

app/util/path-builder.ts

+21-16
Original file line numberDiff line numberDiff line change
@@ -22,20 +22,25 @@ type SiloImage = Required<PP.SiloImage>
2222
type IpPool = Required<PP.IpPool>
2323
type FloatingIp = Required<PP.FloatingIp>
2424

25+
// this is used as the basis for many routes, but is itself not a route we ever
26+
// want to link directly to. so we use this to build the routes but pb.project()
27+
// is different (includes /instances)
28+
const projectBase = ({ project }: Project) => `${pb.projects()}/${project}`
29+
2530
export const pb = {
2631
projects: () => `/projects`,
2732
projectsNew: () => `/projects-new`,
28-
project: ({ project }: Project) => `${pb.projects()}/${project}`,
29-
projectEdit: (params: Project) => `${pb.project(params)}/edit`,
33+
project: (params: Project) => `${projectBase(params)}/instances`,
34+
projectEdit: (params: Project) => `${projectBase(params)}/edit`,
3035

31-
projectAccess: (params: Project) => `${pb.project(params)}/access`,
32-
projectImages: (params: Project) => `${pb.project(params)}/images`,
33-
projectImagesNew: (params: Project) => `${pb.project(params)}/images-new`,
36+
projectAccess: (params: Project) => `${projectBase(params)}/access`,
37+
projectImages: (params: Project) => `${projectBase(params)}/images`,
38+
projectImagesNew: (params: Project) => `${projectBase(params)}/images-new`,
3439
projectImage: (params: Image) => `${pb.projectImages(params)}/${params.image}`,
3540
projectImageEdit: (params: Image) => `${pb.projectImage(params)}/edit`,
3641

37-
instances: (params: Project) => `${pb.project(params)}/instances`,
38-
instancesNew: (params: Project) => `${pb.project(params)}/instances-new`,
42+
instances: (params: Project) => `${projectBase(params)}/instances`,
43+
instancesNew: (params: Project) => `${projectBase(params)}/instances-new`,
3944
instance: (params: Instance) => `${pb.instances(params)}/${params.instance}`,
4045

4146
/**
@@ -55,20 +60,20 @@ export const pb = {
5560

5661
serialConsole: (params: Instance) => `${pb.instance(params)}/serial-console`,
5762

58-
disksNew: (params: Project) => `${pb.project(params)}/disks-new`,
59-
disks: (params: Project) => `${pb.project(params)}/disks`,
63+
disksNew: (params: Project) => `${projectBase(params)}/disks-new`,
64+
disks: (params: Project) => `${projectBase(params)}/disks`,
6065

61-
snapshotsNew: (params: Project) => `${pb.project(params)}/snapshots-new`,
62-
snapshots: (params: Project) => `${pb.project(params)}/snapshots`,
66+
snapshotsNew: (params: Project) => `${projectBase(params)}/snapshots-new`,
67+
snapshots: (params: Project) => `${projectBase(params)}/snapshots`,
6368
snapshotImagesNew: (params: Snapshot) =>
64-
`${pb.project(params)}/snapshots/${params.snapshot}/images-new`,
69+
`${projectBase(params)}/snapshots/${params.snapshot}/images-new`,
6570

66-
vpcsNew: (params: Project) => `${pb.project(params)}/vpcs-new`,
67-
vpcs: (params: Project) => `${pb.project(params)}/vpcs`,
71+
vpcsNew: (params: Project) => `${projectBase(params)}/vpcs-new`,
72+
vpcs: (params: Project) => `${projectBase(params)}/vpcs`,
6873
vpc: (params: Vpc) => `${pb.vpcs(params)}/${params.vpc}`,
6974
vpcEdit: (params: Vpc) => `${pb.vpc(params)}/edit`,
70-
floatingIps: (params: Project) => `${pb.project(params)}/floating-ips`,
71-
floatingIpsNew: (params: Project) => `${pb.project(params)}/floating-ips-new`,
75+
floatingIps: (params: Project) => `${projectBase(params)}/floating-ips`,
76+
floatingIpsNew: (params: Project) => `${projectBase(params)}/floating-ips-new`,
7277
floatingIp: (params: FloatingIp) => `${pb.floatingIps(params)}/${params.floatingIp}`,
7378
floatingIpEdit: (params: FloatingIp) => `${pb.floatingIp(params)}/edit`,
7479

0 commit comments

Comments
 (0)