Skip to content
Merged
Show file tree
Hide file tree
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
6 changes: 3 additions & 3 deletions apps/console-v5/public/changelog/latest.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
[
{
"name": "Qovery Changelogs",
"summary": "We're super excited to announce new features and improvements: NGINX Ingress migration update, MCP updates, AI Copilot Deployment troubleshoot, Build dashboard",
"url": "https://www.qovery.com/changelog/2026-03-25",
"firstPublishedAt": "2026-03-25T00:00:00.000Z"
"summary": "We're super excited to announce new features and improvements: Kube 1.34 and 1.35 upgrades, Terraform provider improvements, Standard Kube labels, Topology spread across zones",
"url": "https://www.qovery.com/changelog/2026-04-08",
"firstPublishedAt": "2026-04-08T00:00:00.000Z"
}
]
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { createFileRoute } from '@tanstack/react-router'
import { HelmNetworkingSettings } from '@qovery/domains/service-settings/feature'

export const Route = createFileRoute(
'/_authenticated/organization/$organizationId/project/$projectId/environment/$environmentId/service/$serviceId/settings/networking'
Expand All @@ -7,5 +8,5 @@ export const Route = createFileRoute(
})

function RouteComponent() {
return <div className="px-10 py-7">Networking</div>
return <HelmNetworkingSettings />
}
2 changes: 1 addition & 1 deletion libs/domains/service-helm/feature/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export * from './lib/deployment-setting/deployment-setting'
export * from './lib/networking-setting/networking-setting'
export * from './lib/source-setting/source-setting'
Comment thread
rmnbrd marked this conversation as resolved.
export * from './lib/values-override-yaml-setting/values-override-yaml-setting'
export * from './lib/values-override-arguments-setting/values-override-arguments-setting'
Expand All @@ -15,3 +14,4 @@ export * from './lib/helm-creation-flow/step-values-override-arguments/step-valu
export * from './lib/helm-creation-flow/step-values-override-files/step-values-override-files'
export * from './lib/helm-creation-flow/step-summary/step-summary'
export * from './lib/helm-creation-flow/helm-summary-utils/helm-summary-utils'
export * from './lib/networking-port-setting-modal/networking-port-setting-modal'
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,7 @@ exports[`NetworkingPortSettingModal should match snapshot in create state 1`] =
</div>
</div>
<p
class="mb-5 ml-3 text-xs text-neutral-350"
class="mb-5 ml-3 text-xs text-neutral-subtle"
>
Port Name allows to customize the subdomain assigned to reach the application
port from the internet. Default value is p&lt;port_number&gt;-&lt;service_name&gt;
Expand Down Expand Up @@ -589,7 +589,7 @@ exports[`NetworkingPortSettingModal should match snapshot in edit state 1`] = `
</div>
</div>
<p
class="mb-5 ml-3 text-xs text-neutral-350"
class="mb-5 ml-3 text-xs text-neutral-subtle"
>
Port Name allows to customize the subdomain assigned to reach the application
port from the internet. Default value is p&lt;port_number&gt;-&lt;service_name&gt;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,4 +63,19 @@ describe('NetworkingPortSettingModal', () => {
name: 'p1234-foo',
})
})

it('should not close while submit is pending', async () => {
const onClose = jest.fn()
const onSubmit = jest.fn(() => new Promise<void>(() => {}))
const { userEvent } = renderWithProviders(<NetworkingPortSettingModal onSubmit={onSubmit} onClose={onClose} />)

await userEvent.type(screen.getByLabelText(/service name/i), 'foo')
await userEvent.type(screen.getByLabelText(/namespace/i), 'bar')
await userEvent.type(screen.getByLabelText(/service port/i), '1234')
await userEvent.click(screen.getByText(/create/i))
await userEvent.click(screen.getByText(/cancel/i))

expect(onSubmit).toHaveBeenCalled()
expect(onClose).not.toHaveBeenCalled()
})
})
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { type HelmPortRequestPortsInner, PortProtocolEnum } from 'qovery-typescript-axios'
import { type FormEvent } from 'react'
import { type FormEvent, useState } from 'react'
import { Controller, FormProvider, useForm } from 'react-hook-form'
import { InputSelect, InputText, LoaderSpinner, ModalCrud } from '@qovery/shared/ui'
import { useKubernetesServices } from '../hooks/use-kubernetes-services/use-kubernetes-services'
Expand All @@ -8,11 +8,12 @@ export interface NetworkingPortSettingModalProps {
helmId: string
port?: HelmPortRequestPortsInner
onClose: () => void
onSubmit: (port: HelmPortRequestPortsInner) => void
onSubmit: (port: HelmPortRequestPortsInner) => Promise<void> | void
}

export function NetworkingPortSettingModal({ helmId, port, onClose, onSubmit }: NetworkingPortSettingModalProps) {
const isEdit = !!port
const [isSubmitting, setIsSubmitting] = useState(false)
const methods = useForm({
defaultValues: {
internal_port: `${port?.internal_port ?? ''}`,
Expand Down Expand Up @@ -64,15 +65,25 @@ export function NetworkingPortSettingModal({ helmId, port, onClose, onSubmit }:
<FormProvider {...methods}>
<ModalCrud
title={isEdit ? 'Edit port' : 'Set port'}
onSubmit={methods.handleSubmit((data) =>
onSubmit({
...data,
internal_port: Number(data['internal_port']), // need to cast to Number
external_port: Number(data['external_port']),
})
)}
onClose={onClose}
onSubmit={methods.handleSubmit(async (data) => {
setIsSubmitting(true)
try {
await onSubmit({
...data,
internal_port: Number(data['internal_port']), // need to cast to Number
external_port: Number(data['external_port']),
})
} finally {
setIsSubmitting(false)
}
Comment thread
rmnbrd marked this conversation as resolved.
})}
onClose={() => {
if (!isSubmitting) {
onClose()
}
}}
isEdit={isEdit}
loading={isSubmitting}
Comment thread
rmnbrd marked this conversation as resolved.
howItWorks={
<>
<p>Specify:</p>
Expand Down Expand Up @@ -261,7 +272,7 @@ export function NetworkingPortSettingModal({ helmId, port, onClose, onSubmit }:
/>
)}
/>
<p className="mb-5 ml-3 text-xs text-neutral-350">{`Port Name allows to customize the subdomain assigned to reach the application
<p className="mb-5 ml-3 text-xs text-neutral-subtle">{`Port Name allows to customize the subdomain assigned to reach the application
port from the internet. Default value is p<port_number>-<service_name>`}</p>
</div>
</>
Expand Down

This file was deleted.

Loading
Loading