0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2026-01-07 14:12:43 +00:00

Small cleanup of Dialog component

Reduce number of `useEffects` needed
This commit is contained in:
Trevor Buckner
2024-06-04 12:29:13 -04:00
parent 24e67e2270
commit 491b38c330

View File

@@ -2,45 +2,30 @@
const React = require('react'); const React = require('react');
const { useState, useRef, useEffect } = React; const { useState, useRef, useEffect } = React;
function Dialog({ dismissKey, closeText = 'Close', blocking = false, children, ...rest }) { function Dialog({ dismissKey, closeText = 'Close', blocking = false, ...rest }) {
const ref = useRef(); const dialogRef = useRef();
const [open, setOpen] = useState(false); const [open, setOpen] = useState(false);
useEffect(()=>{ useEffect(()=>{
if(!window || !dismissKey) return; if(dismissKey && !localStorage.getItem(dismissKey)) {
if(!localStorage.getItem(dismissKey)){ blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
setOpen(true); setOpen(true);
} }
}, []); }, []);
useEffect(()=>{ const dismiss = ()=>{
if(open) {
blocking ? ref.current?.showModal() : ref.current?.show();
} else {
ref.current?.close();
}
}, [open]);
const dismiss = function(){
localStorage.setItem(dismissKey, true); localStorage.setItem(dismissKey, true);
dialogRef.current?.close();
setOpen(false); setOpen(false);
}; };
if(!open) return; if(!open) return null;
return ( return (
<dialog <dialog ref={dialogRef} onCancel={dismiss} {...rest}>
ref={ref} <button className='dismiss' onClick={dismiss}>
onCancel={()=>dismiss()}
{...rest}
>
<button
className='dismiss'
onClick={()=>dismiss()}
>
{closeText} {closeText}
</button> </button>
{children} {rest.children}
</dialog> </dialog>
); );
} }