Fix issues 3
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
Reference in New Issue
Block a user