Some checks are pending
E2E / Playwright e2e (push) Waiting to run
- Introduced turbopack alias for canvas in next.config.mjs. - Updated package.json scripts for development and branding tasks. - Added new dependencies for Tiptap extensions. - Implemented new demo layouts for agenda, contacts, drive, and mail applications. - Enhanced globals.css for improved theming and splash screen animations. - Added OAuth callback handling for drive mounts. - Updated layout components to integrate new demo shells and improve structure.
33 lines
869 B
TypeScript
33 lines
869 B
TypeScript
"use client"
|
|
|
|
import { useEffect, useRef } from "react"
|
|
import { useOrgSettings } from "@/lib/api/hooks/use-org-settings"
|
|
import {
|
|
apiOrgPolicyToStore,
|
|
apiOrgSettingsMeta,
|
|
} from "@/lib/admin-settings/map-api-org-settings"
|
|
import { useOrgSettingsStore } from "@/lib/admin-settings/org-settings-store"
|
|
|
|
export function OrgSettingsSync() {
|
|
const { data } = useOrgSettings()
|
|
const hydratingRef = useRef(false)
|
|
|
|
useEffect(() => {
|
|
if (!data) return
|
|
try {
|
|
hydratingRef.current = true
|
|
const mapped = apiOrgPolicyToStore(data.policy)
|
|
const meta = apiOrgSettingsMeta(data)
|
|
useOrgSettingsStore.getState().hydrateFromApi(mapped, meta)
|
|
} catch (err) {
|
|
console.error("org settings hydrate failed", err)
|
|
} finally {
|
|
queueMicrotask(() => {
|
|
hydratingRef.current = false
|
|
})
|
|
}
|
|
}, [data])
|
|
|
|
return null
|
|
}
|