@@ -8,38 +8,30 @@ import { FormLabel } from '@/components/ui/form/FormLabel';
88import { FormMessage } from '@/components/ui/form/FormMessage' ;
99import { Input } from '@/components/ui/input' ;
1010import { activeClusterStatuses } from '@/config/clusterStatuses' ;
11- import { defaultInstanceRoute , defaultInstanceRouteUpOne , isLocalStudio } from '@/config/constants' ;
11+ import { isLocalStudio } from '@/config/constants' ;
1212import { calculateCreateClusterDeepLink } from '@/config/deepLinks' ;
1313import { useInstanceClientIdParams } from '@/config/useInstanceClient' ;
14+ import { useClusterInstanceSignIn } from '@/features/auth/hooks/useClusterInstanceSignIn' ;
1415import { getClusterInfoQueryOptions } from '@/features/cluster/queries/getClusterInfoQuery' ;
15- import { useInstanceLoginMutation } from '@/features/instance/operations/mutations/useInstanceLoginMutation' ;
1616import { getInstanceHealthQueryOptions } from '@/features/instance/operations/queries/getInstanceHealth' ;
17- import { getInstanceUserInfo } from '@/features/instance/operations/queries/getInstanceUserInfo' ;
1817import { UsernameSignInSchema } from '@/features/instance/operations/schemas/signInSchema' ;
18+ import { SchemaHdbInstance } from '@/lib/api.gen' ;
1919import { CrossLocalhostIssueType , detectCrossLocalhostUrls } from '@/lib/urls/detectCrossLocalhostUrls' ;
2020import { getOperationsUrlForCluster } from '@/lib/urls/getOperationsUrlForCluster' ;
2121import { getOperationsUrlForInstance } from '@/lib/urls/getOperationsUrlForInstance' ;
2222import { zodResolver } from '@hookform/resolvers/zod' ;
23- import { useQuery , useQueryClient } from '@tanstack/react-query' ;
24- import { Link , Navigate , useNavigate , useParams , useRouter , useSearch } from '@tanstack/react-router' ;
25- import { useCallback , useEffect , useMemo } from 'react' ;
23+ import { useQuery } from '@tanstack/react-query' ;
24+ import { Link , Navigate , useParams } from '@tanstack/react-router' ;
25+ import { useMemo } from 'react' ;
2626import { useForm } from 'react-hook-form' ;
27- import { toast } from 'sonner' ;
28- import { z } from 'zod' ;
29- import { currentUserQueryKey } from './queries/getCurrentUser' ;
30- import { authStore , OverallAppSignIn } from './store/authStore' ;
3127
3228export function ClusterInstanceSignIn ( ) {
33- const navigate = useNavigate ( ) ;
34- const router = useRouter ( ) ;
35- const queryClient = useQueryClient ( ) ;
36- const { redirect } = useSearch ( { strict : false } ) ;
3729 const { clusterId, instanceId } : { instanceId ?: string ; clusterId ?: string ; } = useParams ( { strict : false } ) ;
3830 const { data : cluster } = useQuery (
3931 getClusterInfoQueryOptions ( clusterId , true ) ,
4032 ) ;
41- const instance = useMemo (
42- ( ) => instanceId && cluster && cluster ?. instances ?. find ( i => i . id === instanceId ) ,
33+ const instance : SchemaHdbInstance | undefined = useMemo (
34+ ( ) => instanceId && cluster && cluster ?. instances ?. find ( i => i . id === instanceId ) || undefined ,
4335 [ cluster , instanceId ] ) ;
4436 const isActive = useMemo ( ( ) => cluster ?. status && activeClusterStatuses . includes ( cluster . status ) , [ cluster ?. status ] ) ;
4537
@@ -73,43 +65,13 @@ export function ClusterInstanceSignIn() {
7365 password : '' ,
7466 } ,
7567 } ) ;
76- const { setFocus , control, handleSubmit } = methods ;
68+ const { control, handleSubmit } = methods ;
7769
78- useEffect ( ( ) => {
79- setFocus ( 'username' ) ;
80- } , [ setFocus ] ) ;
81-
82- const { mutate : submitInstanceLogin , isPending } = useInstanceLoginMutation ( ) ;
83-
84- const submitForm = useCallback ( async ( formData : z . infer < typeof UsernameSignInSchema > ) => {
85- submitInstanceLogin (
86- {
87- ...formData ,
88- ...instanceParams ,
89- } ,
90- {
91- onSuccess : async ( response ) => {
92- toast . success ( response . message ) ;
93- const user = await getInstanceUserInfo ( instanceParams ) ;
94- // If we sign in to the cluster, we've authenticated against all of its instances too.
95- if ( cluster ?. instances ?. length && ! instance ) {
96- for ( const clusterInstance of cluster . instances ) {
97- authStore . setUserForEntity ( clusterInstance , user ) ;
98- }
99- }
100- authStore . setUserForEntity ( instance || cluster || OverallAppSignIn , user ) ;
101- void queryClient . invalidateQueries ( { queryKey : currentUserQueryKey , refetchType : 'none' } ) ;
102- void router . invalidate ( ) ;
103- await navigate ( {
104- to : redirect ?. startsWith ( '/' )
105- ? redirect
106- : isLocalStudio
107- ? defaultInstanceRoute
108- : defaultInstanceRouteUpOne ,
109- } ) ;
110- } ,
111- } ) ;
112- } , [ cluster , instance , instanceParams , navigate , queryClient , redirect , router , submitInstanceLogin ] ) ;
70+ const { submitForm, isPending } = useClusterInstanceSignIn ( {
71+ cluster,
72+ instance,
73+ instanceParams,
74+ } ) ;
11375
11476 if ( ! instanceId && cluster && ! cluster ?. fqdn ) {
11577 return < Navigate to = "../instances" replace = { true } /> ;
@@ -143,6 +105,7 @@ export function ClusterInstanceSignIn() {
143105 < FormControl >
144106 < Input
145107 autoComplete = "username"
108+ autoFocus = { true }
146109 type = "text"
147110 { ...field }
148111 />
0 commit comments