Improve the frontend 3
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { useState, useCallback, useEffect } from 'react';
|
||||
import { driver, Driver } from 'driver.js';
|
||||
import { useNavigate } from 'react-router-dom';
|
||||
import { ROUTES } from '../../../router/routes.config';
|
||||
import { getDriverConfig } from '../config/driver-config';
|
||||
import { getDemoTourSteps, getMobileTourSteps } from '../config/tour-steps';
|
||||
import { getTourState, saveTourState, clearTourState, clearTourStartPending } from '../utils/tour-state';
|
||||
import { getTourState, saveTourState, clearTourStartPending, clearTourState } from '../utils/tour-state';
|
||||
import { trackTourEvent } from '../utils/tour-analytics';
|
||||
import '../styles.css';
|
||||
|
||||
@@ -73,19 +74,35 @@ export const useDemoTour = () => {
|
||||
const startTour = useCallback((fromStep: number = 0) => {
|
||||
console.log('[useDemoTour] startTour called with fromStep:', fromStep);
|
||||
|
||||
// Check if we're already on the dashboard
|
||||
const currentPath = window.location.pathname;
|
||||
if (currentPath !== ROUTES.DASHBOARD) {
|
||||
console.log('[useDemoTour] Not on dashboard, navigating to:', ROUTES.DASHBOARD);
|
||||
// Store tour intent in sessionStorage before navigation
|
||||
sessionStorage.setItem('demo_tour_should_start', 'true');
|
||||
sessionStorage.setItem('demo_tour_start_step', fromStep.toString());
|
||||
|
||||
// Navigate to dashboard
|
||||
navigate(ROUTES.DASHBOARD);
|
||||
return;
|
||||
}
|
||||
|
||||
const steps = isMobile ? getMobileTourSteps() : getDemoTourSteps();
|
||||
console.log('[useDemoTour] Using', isMobile ? 'mobile' : 'desktop', 'steps, total:', steps.length);
|
||||
|
||||
// Check if first element exists
|
||||
const firstElement = steps[0]?.element;
|
||||
if (firstElement) {
|
||||
const el = document.querySelector(firstElement);
|
||||
console.log('[useDemoTour] First element exists:', !!el, 'selector:', firstElement);
|
||||
if (!el) {
|
||||
console.warn('[useDemoTour] First tour element not found in DOM! Delaying tour start...');
|
||||
// Retry after DOM is ready
|
||||
setTimeout(() => startTour(fromStep), 500);
|
||||
return;
|
||||
// Check if first element exists (only if we're on the dashboard)
|
||||
if (currentPath === ROUTES.DASHBOARD) {
|
||||
const firstElement = steps[0]?.element;
|
||||
if (firstElement) {
|
||||
const selector = typeof firstElement === 'string' ? firstElement : String(firstElement);
|
||||
const el = document.querySelector(selector);
|
||||
console.log('[useDemoTour] First element exists:', !!el, 'selector:', selector);
|
||||
if (!el) {
|
||||
console.warn('[useDemoTour] First tour element not found in DOM! Delaying tour start...');
|
||||
// Retry after DOM is ready
|
||||
setTimeout(() => startTour(fromStep), 500);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +149,7 @@ export const useDemoTour = () => {
|
||||
});
|
||||
|
||||
clearTourStartPending();
|
||||
}, [isMobile, handleTourDestroy, handleStepComplete, handleTourComplete]);
|
||||
}, [isMobile, handleTourDestroy, handleStepComplete, handleTourComplete, navigate]);
|
||||
|
||||
const resumeTour = useCallback(() => {
|
||||
const state = getTourState();
|
||||
|
||||
Reference in New Issue
Block a user