11"use client"
22
33import { useOnboardingStorage } from "@hooks/use-onboarding-storage"
4+ import { useOrgOnboarding } from "@hooks/use-org-onboarding"
45import { useAuth } from "@lib/auth-context"
56import { ChevronsDown , LoaderIcon } from "lucide-react"
67import { useRouter } from "next/navigation"
7- import { useEffect } from "react"
8+ import { useEffect , useMemo } from "react"
89import { InstallPrompt } from "@/components/install-prompt"
910import { ChromeExtensionButton } from "@/components/chrome-extension-button"
1011import { ChatInput } from "@/components/chat-input"
@@ -14,11 +15,37 @@ import { useFeatureFlagEnabled } from "posthog-js/react"
1415
1516export default function Page ( ) {
1617 const { user, session } = useAuth ( )
17- const { shouldShowOnboarding, isLoading : onboardingLoading } =
18- useOnboardingStorage ( )
1918 const router = useRouter ( )
2019 const flagEnabled = useFeatureFlagEnabled ( "nova-alpha-access" )
2120
21+ // TODO: remove this flow after the feature flag is removed
22+ // Old app: localStorage-backed onboarding
23+ const {
24+ shouldShowOnboarding : shouldShowOldOnboarding ,
25+ isLoading : oldOnboardingLoading ,
26+ } = useOnboardingStorage ( )
27+
28+ // New app: DB-backed onboarding (org.metadata.isOnboarded)
29+ const {
30+ shouldShowOnboarding : shouldShowNewOnboarding ,
31+ isLoading : newOnboardingLoading ,
32+ } = useOrgOnboarding ( )
33+
34+ // Select the appropriate onboarding state based on feature flag
35+ const isOnboardingLoading = useMemo ( ( ) => {
36+ if ( flagEnabled ) {
37+ return newOnboardingLoading
38+ }
39+ return oldOnboardingLoading
40+ } , [ flagEnabled , newOnboardingLoading , oldOnboardingLoading ] )
41+
42+ const shouldShowOnboarding = useMemo ( ( ) => {
43+ if ( flagEnabled ) {
44+ return shouldShowNewOnboarding ( )
45+ }
46+ return shouldShowOldOnboarding ( )
47+ } , [ flagEnabled , shouldShowNewOnboarding , shouldShowOldOnboarding ] )
48+
2249 useEffect ( ( ) => {
2350 const url = new URL ( window . location . href )
2451 const authenticateChromeExtension = url . searchParams . get (
@@ -46,16 +73,16 @@ export default function Page() {
4673 } , [ user , session ] )
4774
4875 useEffect ( ( ) => {
49- if ( user && ! onboardingLoading && shouldShowOnboarding ( ) ) {
76+ if ( user && ! isOnboardingLoading && shouldShowOnboarding ) {
5077 if ( flagEnabled ) {
5178 router . push ( "/new/onboarding?step=input&flow=welcome" )
5279 } else {
5380 router . push ( "/onboarding" )
5481 }
5582 }
56- } , [ user , shouldShowOnboarding , onboardingLoading , router , flagEnabled ] )
83+ } , [ user , shouldShowOnboarding , isOnboardingLoading , router , flagEnabled ] )
5784
58- if ( ! user || onboardingLoading ) {
85+ if ( ! user || isOnboardingLoading ) {
5986 return (
6087 < div className = "min-h-screen flex items-center justify-center bg-[#0f1419]" >
6188 < div className = "flex flex-col items-center gap-4" >
@@ -66,7 +93,7 @@ export default function Page() {
6693 )
6794 }
6895
69- if ( shouldShowOnboarding ( ) ) {
96+ if ( shouldShowOnboarding ) {
7097 return null
7198 }
7299
0 commit comments