Start integrating the onboarding flow with backend 12

This commit is contained in:
Urtzi Alfaro
2025-09-07 17:25:30 +02:00
parent 9005286ada
commit b73f3b4993
32 changed files with 3172 additions and 3087 deletions

View File

@@ -0,0 +1,70 @@
/**
* Tenant creation service - Clean, standardized implementation
*/
import { useCallback } from 'react';
import { useRegisterBakery } from '../../../../api';
import { useTenantStore } from '../../../../stores/tenant.store';
import { useOnboardingStore } from '../core/store';
import { createServiceHook } from '../utils/createServiceHook';
import type { TenantCreationState } from '../core/types';
import type { BakeryRegistration, TenantResponse } from '../../../../api';
const useTenantCreationService = createServiceHook<TenantCreationState>({
initialState: {
tenantData: null,
},
});
export const useTenantCreation = () => {
const service = useTenantCreationService();
const registerBakeryMutation = useRegisterBakery();
const { setCurrentTenant, loadUserTenants } = useTenantStore();
const { setStepData } = useOnboardingStore();
const createTenant = useCallback(async (bakeryData: BakeryRegistration): Promise<boolean> => {
if (!bakeryData) {
service.setError('Los datos de la panadería son requeridos');
return false;
}
const result = await service.executeAsync(async () => {
// Call API to register bakery
const tenantResponse: TenantResponse = await registerBakeryMutation.mutateAsync(bakeryData);
// Update tenant store
console.log('useTenantCreation - Setting current tenant:', tenantResponse);
setCurrentTenant(tenantResponse);
// Reload user tenants
await loadUserTenants();
// Update onboarding data
setStepData('setup', {
bakery: {
...bakeryData,
tenantCreated: true,
tenant_id: tenantResponse.id,
} as any,
});
console.log('useTenantCreation - Tenant created and set successfully');
return tenantResponse;
});
return result.success;
}, [service, registerBakeryMutation, setCurrentTenant, loadUserTenants, setStepData]);
return {
// State
isLoading: service.isLoading,
error: service.error,
isSuccess: service.isSuccess,
tenantData: service.tenantData,
// Actions
createTenant,
clearError: service.clearError,
reset: service.reset,
};
};