diff --git a/package-lock.json b/package-lock.json index 3314280..8257090 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,6 +95,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -505,6 +506,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -528,6 +530,7 @@ } ], "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -3566,6 +3569,7 @@ "integrity": "sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -3632,6 +3636,7 @@ "integrity": "sha512-EHrrEsyhOhxYt8MTg4zTF+DJMuNBzWwgvvOYNj/zm1vnaD/IC5zCXFehZv94Piqa2cRFfXrTFxIvO95L7Qc/cw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.44.1", "@typescript-eslint/types": "8.44.1", @@ -4155,6 +4160,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4602,6 +4608,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.3", "caniuse-lite": "^1.0.30001741", @@ -4995,7 +5002,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -5419,6 +5427,7 @@ "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -5593,6 +5602,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -8106,6 +8116,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -8824,6 +8835,7 @@ "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8916,6 +8928,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -8925,6 +8938,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -8937,6 +8951,7 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.63.0.tgz", "integrity": "sha512-ZwueDMvUeucovM2VjkCf7zIHcs1aAlDimZu2Hvel5C5907gUzMpm4xCrQXtRzCvsBqFjonB4m3x4LzCFI1ZKWA==", "license": "MIT", + "peer": true, "engines": { "node": ">=18.0.0" }, @@ -9743,7 +9758,8 @@ "version": "4.1.13", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.13.tgz", "integrity": "sha512-i+zidfmTqtwquj4hMEwdjshYYgMbOrPzb9a0M3ZgNa0JMoZeFC6bxZvO8yr8ozS6ix2SDz0+mvryPeBs2TFE+w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/tapable": { "version": "2.2.3", @@ -9841,6 +9857,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -10017,6 +10034,7 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" diff --git a/src/app/login/hooks/useLogin.ts b/src/app/login/hooks/useLogin.ts index badf83c..481d246 100644 --- a/src/app/login/hooks/useLogin.ts +++ b/src/app/login/hooks/useLogin.ts @@ -77,8 +77,59 @@ export function useLogin() { console.log('✅ Login successful:', data.user) - // Redirect to dashboard - router.push('/dashboard') + // Fetch user status-progress + let redirectPath = '/quickaction-dashboard' // Default redirect + + try { + const statusUrl = `${process.env.NEXT_PUBLIC_API_BASE_URL}/api/user/status-progress` + console.log('Fetching user status-progress:', statusUrl) + + const statusResponse = await fetch(statusUrl, { + method: 'GET', + headers: { + 'Authorization': `Bearer ${data.accessToken}`, + 'Content-Type': 'application/json', + }, + credentials: 'include', + }) + + console.log('Status-progress response status:', statusResponse.status) + + if (statusResponse.ok) { + const statusData = await statusResponse.json() + console.log('📊 User status-progress data:', statusData) + + // Check if all 4 steps are completed and status is active + // The API returns: statusData.progress.status and statusData.progress.steps + const progressData = statusData.progress || statusData + const steps = progressData.steps || [] + const allStepsCompleted = steps.length === 4 && steps.every((step: any) => step.completed === true) + const isActive = progressData.status === 'active' + + console.log('🔍 Status check:', { + allStepsCompleted, + isActive, + totalSteps: steps.length, + completedSteps: steps.filter((step: any) => step.completed).length, + status: progressData.status + }) + + // Redirect to dashboard only if all steps completed AND status is active + if (allStepsCompleted && isActive) { + redirectPath = '/dashboard' + console.log('✅ User fully onboarded, redirecting to dashboard') + } else { + console.log('⚠️ User needs to complete onboarding, redirecting to quickaction-dashboard') + } + } else { + console.warn('⚠️ Failed to fetch user status-progress:', statusResponse.status) + } + } catch (statusError) { + console.error('❌ Error fetching user status-progress:', statusError) + } + + // Redirect based on status check + router.push(redirectPath) return { success: true, user: data.user } } else {