clean all items from local storage on finish onboarding

This commit is contained in:
Lucas Oliveira 2025-11-18 17:12:38 -03:00
parent b7e364a240
commit 5d83a40f76
5 changed files with 799 additions and 786 deletions

View file

@ -10,6 +10,7 @@ import {
AccordionItem,
AccordionTrigger,
} from "@/components/ui/accordion";
import { ONBOARDING_CARD_STEPS_KEY } from "@/lib/constants";
import { cn } from "@/lib/utils";
export function AnimatedProviderSteps({
@ -17,7 +18,7 @@ export function AnimatedProviderSteps({
isCompleted,
setCurrentStep,
steps,
storageKey = "provider-steps",
storageKey = ONBOARDING_CARD_STEPS_KEY,
processingStartTime,
hasError = false,
}: {
@ -34,7 +35,7 @@ export function AnimatedProviderSteps({
// Initialize start time from prop or local storage
useEffect(() => {
const storedElapsedTime = localStorage.getItem(`${storageKey}-elapsed`);
const storedElapsedTime = localStorage.getItem(storageKey);
if (isCompleted && storedElapsedTime) {
// If completed, use stored elapsed time
@ -60,7 +61,7 @@ export function AnimatedProviderSteps({
if (isCompleted && startTime) {
const elapsed = Date.now() - startTime;
setElapsedTime(elapsed);
localStorage.setItem(`${storageKey}-elapsed`, elapsed.toString());
localStorage.setItem(storageKey, elapsed.toString());
}
}, [isCompleted, startTime, storageKey]);

View file

@ -24,6 +24,7 @@ import {
TooltipContent,
TooltipTrigger,
} from "@/components/ui/tooltip";
import { ONBOARDING_CARD_STEPS_KEY } from "@/lib/constants";
import { cn } from "@/lib/utils";
import { AnimatedProviderSteps } from "./animated-provider-steps";
import { AnthropicOnboarding } from "./anthropic-onboarding";
@ -527,6 +528,7 @@ const OnboardingCard = ({
setCurrentStep={setCurrentStep}
steps={isEmbedding ? EMBEDDING_STEP_LIST : STEP_LIST}
processingStartTime={processingStartTime}
storageKey={ONBOARDING_CARD_STEPS_KEY}
hasError={!!error}
/>
</motion.div>

View file

@ -4,6 +4,7 @@ import { useGetNudgesQuery } from "@/app/api/queries/useGetNudgesQuery";
import { useGetTasksQuery } from "@/app/api/queries/useGetTasksQuery";
import { AnimatedProviderSteps } from "@/app/onboarding/_components/animated-provider-steps";
import { Button } from "@/components/ui/button";
import { ONBOARDING_UPLOAD_STEPS_KEY } from "@/lib/constants";
import { uploadFile } from "@/lib/upload-utils";
interface OnboardingUploadProps {
@ -147,6 +148,7 @@ const OnboardingUpload = ({ onComplete }: OnboardingUploadProps) => {
setCurrentStep={setCurrentStep}
isCompleted={false}
steps={STEP_LIST}
storageKey={ONBOARDING_UPLOAD_STEPS_KEY}
/>
</motion.div>
)}

View file

@ -19,8 +19,10 @@ import {
ANIMATION_DURATION,
HEADER_HEIGHT,
ONBOARDING_ASSISTANT_MESSAGE_KEY,
ONBOARDING_CARD_STEPS_KEY,
ONBOARDING_SELECTED_NUDGE_KEY,
ONBOARDING_STEP_KEY,
ONBOARDING_UPLOAD_STEPS_KEY,
SIDEBAR_WIDTH,
TOTAL_ONBOARDING_STEPS,
} from "@/lib/constants";
@ -85,6 +87,8 @@ export function ChatRenderer({
localStorage.removeItem(ONBOARDING_STEP_KEY);
localStorage.removeItem(ONBOARDING_ASSISTANT_MESSAGE_KEY);
localStorage.removeItem(ONBOARDING_SELECTED_NUDGE_KEY);
localStorage.removeItem(ONBOARDING_CARD_STEPS_KEY);
localStorage.removeItem(ONBOARDING_UPLOAD_STEPS_KEY);
}
setShowLayout(true);
}
@ -102,6 +106,8 @@ export function ChatRenderer({
localStorage.removeItem(ONBOARDING_STEP_KEY);
localStorage.removeItem(ONBOARDING_ASSISTANT_MESSAGE_KEY);
localStorage.removeItem(ONBOARDING_SELECTED_NUDGE_KEY);
localStorage.removeItem(ONBOARDING_CARD_STEPS_KEY);
localStorage.removeItem(ONBOARDING_UPLOAD_STEPS_KEY);
}
setShowLayout(true);
};

View file

@ -36,6 +36,8 @@ export const TOTAL_ONBOARDING_STEPS = 5;
export const ONBOARDING_STEP_KEY = "onboarding_current_step";
export const ONBOARDING_ASSISTANT_MESSAGE_KEY = "onboarding_assistant_message";
export const ONBOARDING_SELECTED_NUDGE_KEY = "onboarding_selected_nudge";
export const ONBOARDING_CARD_STEPS_KEY = "onboarding_card_steps";
export const ONBOARDING_UPLOAD_STEPS_KEY = "onboarding_upload_steps";
export const FILES_REGEX =
/(?<=I'm uploading a document called ['"])[^'"]+\.[^.]+(?=['"]\. Here is its content:)/;