Files
standardnotes-app-web/app/assets/javascripts/components/Premium/usePremiumModal.tsx
Karol Sójko b57350c899 Revert "feat: native smart tags (#782)"
This reverts commit c3772e06b4.
2022-01-05 16:11:17 +01:00

50 lines
1.2 KiB
TypeScript

import { FunctionalComponent } from 'preact';
import { useCallback, useContext, useState } from 'preact/hooks';
import { createContext } from 'react';
import { PremiumFeaturesModal } from '../PremiumFeaturesModal';
type PremiumModalContextData = {
activate: (featureName: string) => void;
};
const PremiumModalContext = createContext<PremiumModalContextData | null>(null);
const PremiumModalProvider_ = PremiumModalContext.Provider;
export const usePremiumModal = (): PremiumModalContextData => {
const value = useContext(PremiumModalContext);
if (!value) {
throw new Error('invalid PremiumModal context');
}
return value;
};
export const PremiumModalProvider: FunctionalComponent = ({ children }) => {
const [featureName, setFeatureName] = useState<null | string>(null);
const activate = setFeatureName;
const closeModal = useCallback(() => {
setFeatureName(null);
}, [setFeatureName]);
const showModal = !!featureName;
return (
<>
{showModal && (
<PremiumFeaturesModal
showModal={!!featureName}
featureName={featureName}
onClose={closeModal}
/>
)}
<PremiumModalProvider_ value={{ activate }}>
{children}
</PremiumModalProvider_>
</>
);
};