Fix issues 3

This commit is contained in:
Urtzi Alfaro
2025-08-17 13:35:05 +02:00
parent d21094a940
commit cafd316c4b
5 changed files with 157 additions and 49 deletions

View File

@@ -1,7 +1,7 @@
import React, { useState, useEffect, useCallback, useRef } from 'react';
import { ChevronLeft, ChevronRight, Upload, MapPin, Store, Check, Brain, Clock, CheckCircle, AlertTriangle, Loader, TrendingUp } from 'lucide-react';
import { useNavigate } from 'react-router-dom';
import { useSelector } from 'react-redux';
import { useSelector, useDispatch } from 'react-redux';
import toast from 'react-hot-toast';
import SimplifiedTrainingProgress from '../../components/SimplifiedTrainingProgress';
@@ -19,6 +19,7 @@ import { useTraining } from '../../api/hooks/useTraining';
import { OnboardingRouter } from '../../utils/onboardingRouter';
import type { RootState } from '../../store';
import { completeOnboarding } from '../../store/slices/authSlice';
interface OnboardingPageProps {
user?: any;
@@ -53,13 +54,17 @@ const MADRID_PRODUCTS = [
const OnboardingPage: React.FC<OnboardingPageProps> = ({ user: propUser, onComplete: propOnComplete }) => {
const navigate = useNavigate();
const dispatch = useDispatch();
const { user: reduxUser } = useSelector((state: RootState) => state.auth);
// Use prop user if provided, otherwise use Redux user
const user = propUser || reduxUser;
// Use prop onComplete if provided, otherwise navigate to dashboard
const onComplete = propOnComplete || (() => navigate('/app/dashboard'));
// Use prop onComplete if provided, otherwise create a function that marks onboarding complete and navigates
const onComplete = propOnComplete || (() => {
dispatch(completeOnboarding());
navigate('/app/dashboard');
});
const [currentStep, setCurrentStep] = useState(1);
const [isLoading, setIsLoading] = useState(false);
@@ -600,12 +605,16 @@ const OnboardingPage: React.FC<OnboardingPageProps> = ({ user: propUser, onCompl
final_step: true
});
// Mark onboarding as complete in Redux state
dispatch(completeOnboarding());
// Complete onboarding
toast.success('¡Configuración completada exitosamente!');
onComplete();
} catch (error) {
// Failed to mark final step as completed
// Continue anyway for better UX
dispatch(completeOnboarding());
toast.success('¡Configuración completada exitosamente!');
onComplete();
}

View File

@@ -58,8 +58,13 @@ const authSlice = createSlice({
clearError: (state) => {
state.error = null;
},
completeOnboarding: (state) => {
if (state.user) {
state.user.isOnboardingComplete = true;
}
},
},
});
export const { loginStart, loginSuccess, loginFailure, logout, clearError } = authSlice.actions;
export const { loginStart, loginSuccess, loginFailure, logout, clearError, completeOnboarding } = authSlice.actions;
export default authSlice.reducer;