Add subcription feature 3
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
/**
|
||||
* Auth React Query hooks
|
||||
* Updated for atomic registration architecture with 3DS support
|
||||
*/
|
||||
import { useMutation, useQuery, useQueryClient, UseQueryOptions, UseMutationOptions } from '@tanstack/react-query';
|
||||
import { authService } from '../services/auth';
|
||||
@@ -11,7 +12,10 @@ import {
|
||||
PasswordReset,
|
||||
UserResponse,
|
||||
UserUpdate,
|
||||
TokenVerification
|
||||
TokenVerification,
|
||||
RegistrationStartResponse,
|
||||
RegistrationCompletionResponse,
|
||||
RegistrationVerification,
|
||||
} from '../types/auth';
|
||||
import { ApiError } from '../client';
|
||||
import { useAuthStore } from '../../stores/auth.store';
|
||||
@@ -61,15 +65,15 @@ export const useVerifyToken = (
|
||||
};
|
||||
|
||||
// Mutations
|
||||
export const useRegister = (
|
||||
options?: UseMutationOptions<TokenResponse, ApiError, UserRegistration>
|
||||
export const useStartRegistration = (
|
||||
options?: UseMutationOptions<RegistrationStartResponse, ApiError, UserRegistration>
|
||||
) => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation<TokenResponse, ApiError, UserRegistration>({
|
||||
mutationFn: (userData: UserRegistration) => authService.register(userData),
|
||||
return useMutation<RegistrationStartResponse, ApiError, UserRegistration>({
|
||||
mutationFn: (userData: UserRegistration) => authService.startRegistration(userData),
|
||||
onSuccess: (data) => {
|
||||
// Update profile query with new user data
|
||||
// If no 3DS required, update profile query with new user data
|
||||
if (data.user) {
|
||||
queryClient.setQueryData(authKeys.profile(), data.user);
|
||||
}
|
||||
@@ -78,6 +82,32 @@ export const useRegister = (
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Hook for completing registration after 3DS verification
|
||||
* This is the second step in the atomic registration flow
|
||||
*/
|
||||
export const useCompleteRegistration = (
|
||||
options?: UseMutationOptions<RegistrationCompletionResponse, ApiError, RegistrationVerification>
|
||||
) => {
|
||||
const queryClient = useQueryClient();
|
||||
|
||||
return useMutation<RegistrationCompletionResponse, ApiError, RegistrationVerification>({
|
||||
mutationFn: (verificationData: RegistrationVerification) => authService.completeRegistration(verificationData),
|
||||
onSuccess: (data) => {
|
||||
// Update profile query with new user data
|
||||
if (data.user) {
|
||||
queryClient.setQueryData(authKeys.profile(), data.user);
|
||||
}
|
||||
// Invalidate all queries to refresh data
|
||||
queryClient.invalidateQueries({ queryKey: ['auth'] });
|
||||
},
|
||||
...options,
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
export const useLogin = (
|
||||
options?: UseMutationOptions<TokenResponse, ApiError, UserLogin>
|
||||
) => {
|
||||
|
||||
Reference in New Issue
Block a user