mirror of
https://github.com/eliasstepanik/core.git
synced 2026-01-10 23:48:26 +00:00
fix: show loading in onboarding form
This commit is contained in:
parent
62fdf6181a
commit
1509e8d502
@ -15,6 +15,7 @@ interface OnboardingQuestionProps {
|
||||
isLast: boolean;
|
||||
currentStep: number;
|
||||
totalSteps: number;
|
||||
loading?: boolean;
|
||||
}
|
||||
|
||||
export default function OnboardingQuestionComponent({
|
||||
@ -27,6 +28,7 @@ export default function OnboardingQuestionComponent({
|
||||
isLast,
|
||||
currentStep,
|
||||
totalSteps,
|
||||
loading,
|
||||
}: OnboardingQuestionProps) {
|
||||
const [selectedValue, setSelectedValue] = useState<string | string[]>(
|
||||
answer || (question.type === "multi-select" ? [] : ""),
|
||||
@ -148,6 +150,7 @@ export default function OnboardingQuestionComponent({
|
||||
variant="secondary"
|
||||
size="xl"
|
||||
onClick={onNext}
|
||||
isLoading={!!loading}
|
||||
disabled={!isValid()}
|
||||
className="rounded-lg px-4 py-2"
|
||||
>
|
||||
|
||||
@ -85,7 +85,7 @@ export async function action({ request }: ActionFunctionArgs) {
|
||||
export default function Onboarding() {
|
||||
const { user } = useLoaderData<typeof loader>();
|
||||
const submit = useSubmit();
|
||||
|
||||
const [loading, setLoading] = useState(false); // Add loading state
|
||||
const [currentQuestion, setCurrentQuestion] = useState(0);
|
||||
const [answers, setAnswers] = useState<OnboardingAnswer[]>([]);
|
||||
// Initialize with default identity statement converted to triplets
|
||||
@ -152,6 +152,7 @@ export default function Onboarding() {
|
||||
if (currentQuestion < ONBOARDING_QUESTIONS.length - 1) {
|
||||
setCurrentQuestion(currentQuestion + 1);
|
||||
} else {
|
||||
setLoading(true);
|
||||
// Submit all answers
|
||||
submitAnswers();
|
||||
}
|
||||
@ -164,12 +165,17 @@ export default function Onboarding() {
|
||||
};
|
||||
|
||||
const submitAnswers = async () => {
|
||||
const formData = new FormData();
|
||||
formData.append("answers", JSON.stringify(answers));
|
||||
try {
|
||||
const formData = new FormData();
|
||||
formData.append("answers", JSON.stringify(answers));
|
||||
|
||||
submit(formData, {
|
||||
method: "POST",
|
||||
});
|
||||
submit(formData, {
|
||||
method: "POST",
|
||||
});
|
||||
setLoading(false);
|
||||
} catch (e) {
|
||||
setLoading(false);
|
||||
}
|
||||
};
|
||||
|
||||
// Convert episode and statements structure to triplets for visualization
|
||||
@ -243,6 +249,7 @@ export default function Onboarding() {
|
||||
onAnswer={handleAnswer}
|
||||
onNext={handleNext}
|
||||
onPrevious={handlePrevious}
|
||||
loading={loading}
|
||||
isFirst={currentQuestion === 0}
|
||||
isLast={currentQuestion === ONBOARDING_QUESTIONS.length - 1}
|
||||
currentStep={currentQuestion + 1}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user