fix: dirty tracking — prevent SWR revalidation from resetting form state

This commit is contained in:
Usman Baig
2026-03-25 20:27:47 +01:00
parent 9dceca765c
commit 93401cc1a1
4 changed files with 59 additions and 52 deletions

View File

@@ -18,14 +18,15 @@ export default function SiteVisibilityTab({ siteId, onDirtyChange }: { siteId: s
const [linkCopied, setLinkCopied] = useState(false)
const [isDirty, setIsDirty] = useState(false)
const initialRef = useRef('')
const hasInitialized = useRef(false)
useEffect(() => {
if (site) {
setIsPublic(site.is_public ?? false)
setPasswordEnabled(site.has_password ?? false)
initialRef.current = JSON.stringify({ isPublic: site.is_public ?? false, passwordEnabled: site.has_password ?? false })
setIsDirty(false)
}
if (!site || hasInitialized.current) return
setIsPublic(site.is_public ?? false)
setPasswordEnabled(site.has_password ?? false)
initialRef.current = JSON.stringify({ isPublic: site.is_public ?? false, passwordEnabled: site.has_password ?? false })
hasInitialized.current = true
setIsDirty(false)
}, [site])
// Track dirty state