47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { useEffect } from "react";
|
|
import { useNavigate } from "@remix-run/react";
|
|
import { useServiceGetProfile } from "../requestHandler/use-profile-hooks";
|
|
|
|
export function useStoreOwnership(storeId: string | undefined, mode?: string) {
|
|
const navigate = useNavigate();
|
|
const { data: profileData, isLoading } = useServiceGetProfile();
|
|
useEffect(() => {
|
|
// Wait for profile data to load
|
|
if (isLoading) return;
|
|
|
|
// If no storeId provided, redirect to home
|
|
if (!storeId && mode !== "create") {
|
|
navigate("/");
|
|
return;
|
|
}
|
|
|
|
// If user doesn't have profile data, redirect to home
|
|
if (!profileData) {
|
|
navigate("/");
|
|
return;
|
|
}
|
|
|
|
// If user doesn't have a seller account, redirect to home
|
|
if (!profileData.sellerUsername && mode !== "create") {
|
|
navigate("/");
|
|
return;
|
|
}
|
|
|
|
// If the storeId doesn't match the user's seller username, redirect to their own store
|
|
if (
|
|
profileData.sellerUsername !== storeId &&
|
|
mode !== "create" &&
|
|
storeId
|
|
) {
|
|
navigate(`/store/${profileData.sellerUsername}`);
|
|
return;
|
|
}
|
|
}, [profileData, storeId, isLoading, navigate, mode]);
|
|
|
|
return {
|
|
isOwner: profileData?.sellerUsername === storeId,
|
|
isLoading,
|
|
userStoreId: profileData?.sellerUsername,
|
|
};
|
|
}
|