Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { createFileRoute, useParams } from '@tanstack/react-router'
import { type ContainerRegistryRequest } from 'qovery-typescript-axios'
import { Suspense } from 'react'
import { FormProvider, useForm } from 'react-hook-form'
import { useCluster } from '@qovery/domains/clusters/feature'
import {
Expand All @@ -8,7 +9,7 @@ import {
useEditContainerRegistry,
} from '@qovery/domains/organizations/feature'
import { SettingsHeading } from '@qovery/shared/console-shared'
import { Button, Callout, Icon, Section } from '@qovery/shared/ui'
import { Button, Callout, Icon, LoaderSpinner, Section } from '@qovery/shared/ui'

export const Route = createFileRoute(
'/_authenticated/organization/$organizationId/cluster/$clusterId/settings/image-registry'
Expand All @@ -17,9 +18,34 @@ export const Route = createFileRoute(
})

function RouteComponent() {
return (
<div className="flex w-full flex-col justify-between">
<Section className="p-8">
<SettingsHeading
title="Mirroring registry"
description="This mirroring registry is used to store the built images or mirror the container images deployed on this cluster."
/>
<div className="max-w-content-with-navigation-left">
<Suspense
fallback={
<div className="flex flex-1 items-center justify-center">
<LoaderSpinner className="w-6" />
</div>
}
>
<ImageRegistrySettings />
</Suspense>
</div>
</Section>
</div>
)
}

function ImageRegistrySettings() {
const { organizationId = '', clusterId = '' } = useParams({ strict: false })
const { data: containerRegistries } = useContainerRegistries({
organizationId,
suspense: true,
})
const containerRegistry = containerRegistries?.find((registry) => registry.cluster?.id === clusterId)
const { mutate: editContainerRegistry, isLoading: isLoadingEditContainerRegistry } = useEditContainerRegistry()
Expand Down Expand Up @@ -59,40 +85,30 @@ function RouteComponent() {
})

return (
<div className="flex w-full flex-col justify-between">
<Section className="p-8">
<SettingsHeading
title="Mirroring registry"
description="This mirroring registry is used to store the built images or mirror the container images deployed on this cluster."
/>
<div className="max-w-content-with-navigation-left">
<FormProvider {...methods}>
<form className="flex flex-col" onSubmit={onSubmit}>
<ContainerRegistryForm fromEditClusterSettings cluster={cluster} />
{(methods.formState.dirtyFields.kind || methods.formState.dirtyFields.url) && (
<Callout.Root className="mt-4" color="yellow">
<Callout.Icon>
<Icon iconName="triangle-exclamation" iconStyle="regular" />
</Callout.Icon>
<Callout.Text>
You will have to delete any image stored in the previous container registry manually
</Callout.Text>
</Callout.Root>
)}
<div className="mt-2 flex justify-end">
<Button
type="submit"
size="lg"
loading={isLoadingEditContainerRegistry}
disabled={!methods.formState.isValid}
>
Save
</Button>
</div>
</form>
</FormProvider>
<FormProvider {...methods}>
<form className="flex flex-col" onSubmit={onSubmit}>
<ContainerRegistryForm fromEditClusterSettings cluster={cluster} />
{(methods.formState.dirtyFields.kind || methods.formState.dirtyFields.url) && (
<Callout.Root className="mt-4" color="yellow">
<Callout.Icon>
<Icon iconName="triangle-exclamation" iconStyle="regular" />
</Callout.Icon>
<Callout.Text>
You will have to delete any image stored in the previous container registry manually
</Callout.Text>
</Callout.Root>
)}
<div className="mt-2 flex justify-end">
<Button
type="submit"
size="lg"
loading={isLoadingEditContainerRegistry}
disabled={!methods.formState.isValid}
>
Save
</Button>
</div>
</Section>
</div>
</form>
</FormProvider>
)
}
Loading