aboutsummaryrefslogtreecommitdiff
path: root/packages/hooks/use-onboarding-storage.ts
blob: ce7a155d716536b46a674c16d16632dd68ae4328 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"use client"

import { useCallback, useEffect, useState } from "react"

const ONBOARDING_STORAGE_KEY = "supermemory_onboarding_completed"

export function useOnboardingStorage() {
	const [isOnboardingCompleted, setIsOnboardingCompleted] = useState<
		boolean | null
	>(null)

	useEffect(() => {
		const completed = localStorage.getItem(ONBOARDING_STORAGE_KEY)
		setIsOnboardingCompleted(completed === "true")
	}, [])

	const markOnboardingCompleted = useCallback(() => {
		localStorage.setItem(ONBOARDING_STORAGE_KEY, "true")
		setIsOnboardingCompleted(true)
	}, [])

	const shouldShowOnboarding = useCallback(() => {
		if (isOnboardingCompleted === null) return null // Still loading
		return !isOnboardingCompleted
	}, [isOnboardingCompleted])

	return {
		isOnboardingCompleted,
		markOnboardingCompleted,
		shouldShowOnboarding,
		isLoading: isOnboardingCompleted === null,
	}
}