@@ -16,7 +16,7 @@ import { SsoProviderList } from '@/ee/sso/components/sso-provider-list'
1616import { SsoProviderSettings } from '@/ee/sso/components/sso-provider-settings'
1717import { VerifiedDomainsSection } from '@/ee/sso/components/verified-domains-section'
1818import { useDeleteSSOProvider , useSSOProviders } from '@/ee/sso/hooks/sso'
19- import { NEW_SSO_PROVIDER , ssoSettingsParsers , ssoSettingsUrlKeys } from '@/ee/sso/search-params'
19+ import { ssoSettingsParsers , ssoSettingsUrlKeys } from '@/ee/sso/search-params'
2020import { useOrganizationBilling } from '@/hooks/queries/organization'
2121
2222const SETTINGS_TABS = [
@@ -40,28 +40,23 @@ export function SSO({ organizationId }: SSOProps) {
4040}
4141
4242function OrganizationSsoSettings ( { organizationId } : SSOProps ) {
43- const [ { tab : requestedTab , provider : requestedProvider } , setParams ] = useQueryStates (
44- ssoSettingsParsers ,
45- ssoSettingsUrlKeys
46- )
43+ const [ { tab : requestedTab , provider : requestedProvider , createProvider } , setParams ] =
44+ useQueryStates ( ssoSettingsParsers , ssoSettingsUrlKeys )
4745 const { billingEnabled, features } = useDeploymentShape ( )
4846 const billing = useOrganizationBilling ( organizationId )
4947 const providers = useSSOProviders ( { organizationId } )
5048 const provisioningAvailable = features . scim
5149 const tab = requestedTab === 'provisioning' && ! provisioningAvailable ? 'sign-in' : requestedTab
5250 const providerList = providers . data ?. providers ?? [ ]
5351 const selectedProvider =
54- requestedProvider && requestedProvider !== NEW_SSO_PROVIDER
52+ requestedProvider && ! createProvider
5553 ? providerList . find ( ( entry ) => entry . providerId === requestedProvider )
5654 : undefined
5755 const signInView : 'create' | 'detail' | 'list' =
58- providerList . length === 0 || requestedProvider === NEW_SSO_PROVIDER
59- ? 'create'
60- : selectedProvider
61- ? 'detail'
62- : 'list'
56+ providerList . length === 0 || createProvider ? 'create' : selectedProvider ? 'detail' : 'list'
6357 /** Opening pushed a history entry; closing must not push another. */
64- const showList = ( ) => void setParams ( { provider : null } , { history : 'replace' } )
58+ const showList = ( ) =>
59+ void setParams ( { provider : null , createProvider : null } , { history : 'replace' } )
6560 const deleteProvider = useDeleteSSOProvider ( )
6661 const [ pendingDeleteId , setPendingDeleteId ] = useState < string | null > ( null )
6762 const pendingDelete = providerList . find ( ( entry ) => entry . providerId === pendingDeleteId )
@@ -128,19 +123,19 @@ function OrganizationSsoSettings({ organizationId }: SSOProps) {
128123 providers = { providerList }
129124 active = { tab === 'sign-in' }
130125 docsLink = { DOCS_LINKS [ 'sign-in' ] }
131- onAdd = { ( ) => void setParams ( { provider : NEW_SSO_PROVIDER } ) }
132- onOpen = { ( providerId ) => void setParams ( { provider : providerId } ) }
126+ onAdd = { ( ) => void setParams ( { provider : null , createProvider : true } ) }
127+ onOpen = { ( providerId ) => void setParams ( { provider : providerId , createProvider : null } ) }
133128 onDelete = { setPendingDeleteId }
134129 />
135130 ) : (
136131 < SsoProviderSettings
137- key = { selectedProvider ? .providerId ?? NEW_SSO_PROVIDER }
132+ key = { selectedProvider ? `provider: ${ selectedProvider . providerId } ` : 'create' }
138133 organizationId = { organizationId }
139134 existingProvider = { selectedProvider }
140135 active = { tab === 'sign-in' }
141136 onOpenDomains = { ( ) => void setParams ( { tab : 'domains' } ) }
142137 onSaved = { ( providerId ) =>
143- void setParams ( { provider : providerId } , { history : 'replace' } )
138+ void setParams ( { provider : providerId , createProvider : null } , { history : 'replace' } )
144139 }
145140 onBack = { providerList . length > 0 ? showList : undefined }
146141 onDelete = {
0 commit comments