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

@@ -41,15 +41,16 @@ export default function SiteGeneralTab({ siteId, onDirtyChange }: { siteId: stri
const canEdit = user?.role === 'owner' || user?.role === 'admin'
const initialRef = useRef('')
const hasInitialized = useRef(false)
const [isDirty, setIsDirty] = useState(false)
useEffect(() => {
if (site) {
setName(site.name || '')
setTimezone(site.timezone || 'UTC')
initialRef.current = JSON.stringify({ name: site.name || '', timezone: site.timezone || 'UTC' })
setIsDirty(false)
}
if (!site || hasInitialized.current) return
setName(site.name || '')
setTimezone(site.timezone || 'UTC')
initialRef.current = JSON.stringify({ name: site.name || '', timezone: site.timezone || 'UTC' })
hasInitialized.current = true
setIsDirty(false)
}, [site])
// Track dirty state