mirror of
https://github.com/documenso/documenso.git
synced 2025-11-12 07:43:16 +10:00
64 lines
1.4 KiB
TypeScript
64 lines
1.4 KiB
TypeScript
'use client';
|
|
|
|
import { createContext, useContext, useState } from 'react';
|
|
|
|
export type SigningContextValue = {
|
|
fullName: string;
|
|
setFullName: (_value: string) => void;
|
|
email: string;
|
|
setEmail: (_value: string) => void;
|
|
signature: string | null;
|
|
setSignature: (_value: string | null) => void;
|
|
};
|
|
|
|
const SigningContext = createContext<SigningContextValue | null>(null);
|
|
|
|
export const useSigningContext = () => {
|
|
return useContext(SigningContext);
|
|
};
|
|
|
|
export const useRequiredSigningContext = () => {
|
|
const context = useSigningContext();
|
|
|
|
if (!context) {
|
|
throw new Error('Signing context is required');
|
|
}
|
|
|
|
return context;
|
|
};
|
|
|
|
export interface SigningProviderProps {
|
|
fullName?: string;
|
|
email?: string;
|
|
signature?: string;
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export const SigningProvider = ({
|
|
fullName: initialFullName,
|
|
email: initialEmail,
|
|
signature: initialSignature,
|
|
children,
|
|
}: SigningProviderProps) => {
|
|
const [fullName, setFullName] = useState(initialFullName || '');
|
|
const [email, setEmail] = useState(initialEmail || '');
|
|
const [signature, setSignature] = useState(initialSignature || null);
|
|
|
|
return (
|
|
<SigningContext.Provider
|
|
value={{
|
|
fullName,
|
|
setFullName,
|
|
email,
|
|
setEmail,
|
|
signature,
|
|
setSignature,
|
|
}}
|
|
>
|
|
{children}
|
|
</SigningContext.Provider>
|
|
);
|
|
};
|
|
|
|
SigningProvider.displayName = 'SigningProvider';
|