diff --git a/web/components/routes/OnboardingRoute.tsx b/web/components/routes/OnboardingRoute.tsx
index 017c856c..fff5daea 100644
--- a/web/components/routes/OnboardingRoute.tsx
+++ b/web/components/routes/OnboardingRoute.tsx
@@ -1,7 +1,15 @@
"use client"
+import React, { useEffect } from "react"
+import { atomWithStorage } from "jotai/utils"
import { LaIcon } from "../custom/la-icon"
-import { useState } from "react"
+import { useAccount } from "@/lib/providers/jazz-provider"
+import { useAtom } from "jotai"
+
+const isCreateLinkDoneAtom = atomWithStorage("isCreateLinkDone", false)
+const isCreatePageDoneAtom = atomWithStorage("isCreatePageDone", false)
+const isStartTrackingDoneAtom = atomWithStorage("isStartTrackingDone", false)
+const isAddLinkDoneAtom = atomWithStorage("isAddLinkDone", false)
const steps = [
{
@@ -55,7 +63,7 @@ const StepItem = ({
{title}
{description}
@@ -63,13 +71,40 @@ const StepItem = ({
)
export default function OnboardingRoute() {
- const [completedSteps, setCompletedSteps] = useState([])
+ const { me } = useAccount({
+ root: {
+ personalPages: [],
+ personalLinks: [],
+ topicsWantToLearn: []
+ }
+ })
- const stepComplete = (stepNumber: number) => {
- setCompletedSteps(prev =>
- prev.includes(stepNumber) ? prev.filter(num => num !== stepNumber) : [...prev, stepNumber]
- )
- }
+ const [isCreateLinkDone, setIsCreateLinkDone] = useAtom(isCreateLinkDoneAtom)
+ const [isCreatePageDone, setIsCreatePageDone] = useAtom(isCreatePageDoneAtom)
+ const [isStartTrackingDone, setIsStartTrackingDone] = useAtom(isStartTrackingDoneAtom)
+ const [isAddLinkDone, setIsAddLinkDone] = useAtom(isAddLinkDoneAtom)
+
+ useEffect(() => {
+ if (!me) return
+
+ if (me.root.personalLinks.length > 0 && !isCreateLinkDone) {
+ setIsCreateLinkDone(true)
+ }
+
+ if (me.root.personalPages.length > 0 && !isCreatePageDone) {
+ setIsCreatePageDone(true)
+ }
+
+ if (me.root.topicsWantToLearn.length > 0 && !isStartTrackingDone) {
+ setIsStartTrackingDone(true)
+ }
+
+ if (me.root.personalLinks.some(link => link?.topic?.name === "typescript") && !isAddLinkDone) {
+ setIsAddLinkDone(true)
+ }
+ }, [me, isCreateLinkDone, isCreatePageDone, setIsCreateLinkDone, setIsCreatePageDone])
+
+ const completedSteps = [isCreateLinkDone, isCreatePageDone, isStartTrackingDone, isAddLinkDone].filter(Boolean).length
return (
@@ -78,9 +113,16 @@ export default function OnboardingRoute() {
Complete the steps below to get started
+
+ Completed {completedSteps} out of {steps.length} steps
+
- {steps.map(step => (
-
+ {steps.map((step, index) => (
+
))}