deepsite / components /contexts /login-context.tsx
enzostvs's picture
enzostvs HF Staff
handle free request
e710a1b
"use client";
import React, { createContext, useContext, useState, ReactNode } from "react";
import { LoginModal } from "@/components/login-modal";
import { Page } from "@/types";
interface LoginContextType {
isOpen: boolean;
openLoginModal: (options?: LoginModalOptions) => void;
closeLoginModal: () => void;
}
interface LoginModalOptions {
pages?: Page[];
title?: string;
prompt?: string;
description?: string;
}
const LoginContext = createContext<LoginContextType | undefined>(undefined);
export function LoginProvider({ children }: { children: ReactNode }) {
const [isOpen, setIsOpen] = useState(false);
const [modalOptions, setModalOptions] = useState<LoginModalOptions>({});
const openLoginModal = (options: LoginModalOptions = {}) => {
setModalOptions(options);
setIsOpen(true);
};
const closeLoginModal = () => {
setIsOpen(false);
setModalOptions({});
};
const value = {
isOpen,
openLoginModal,
closeLoginModal,
};
return (
<LoginContext.Provider value={value}>
{children}
<LoginModal
open={isOpen}
onClose={setIsOpen}
title={modalOptions.title}
prompt={modalOptions.prompt}
description={modalOptions.description}
/>
</LoginContext.Provider>
);
}
export function useLoginModal() {
const context = useContext(LoginContext);
if (context === undefined) {
throw new Error("useLoginModal must be used within a LoginProvider");
}
return context;
}