movie-web/src/pages/onboarding/onboardingHooks.ts

38 lines
939 B
TypeScript
Raw Normal View History

2024-01-16 20:28:33 +01:00
import { useCallback } from "react";
2024-01-21 20:41:09 +01:00
import { useLocation, useNavigate } from "react-router-dom";
2024-01-16 20:28:33 +01:00
import { useQueryParam } from "@/hooks/useQueryParams";
import { useOnboardingStore } from "@/stores/onboarding";
export function useRedirectBack() {
const [url] = useQueryParam("redirect");
const navigate = useNavigate();
2024-01-16 22:07:21 +01:00
const setCompleted = useOnboardingStore((s) => s.setCompleted);
2024-01-16 20:28:33 +01:00
const redirectBack = useCallback(() => {
navigate(url ?? "/");
}, [navigate, url]);
2024-01-16 22:07:21 +01:00
const completeAndRedirect = useCallback(() => {
setCompleted(true);
2024-01-16 20:28:33 +01:00
redirectBack();
2024-01-16 22:07:21 +01:00
}, [redirectBack, setCompleted]);
2024-01-16 20:28:33 +01:00
2024-01-16 22:07:21 +01:00
return { completeAndRedirect };
2024-01-16 20:28:33 +01:00
}
2024-01-21 20:41:09 +01:00
export function useNavigateOnboarding() {
const navigate = useNavigate();
const loc = useLocation();
const nav = useCallback(
(path: string) => {
navigate({
pathname: path,
search: loc.search,
});
},
[navigate, loc],
);
return nav;
}