Add subcription feature 3

This commit is contained in:
Urtzi Alfaro
2026-01-15 20:45:49 +01:00
parent a4c3b7da3f
commit b674708a4c
83 changed files with 9451 additions and 6828 deletions

View File

@@ -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>
) => {