'use client' import { useState, useEffect } from 'react' import { Button, Select, Toggle, toast, Spinner } from '@ciphera-net/ui' import { useSite } from '@/lib/swr/dashboard' import { updateSite } from '@/lib/api/sites' const GEO_OPTIONS = [ { value: 'full', label: 'Full (country, region, city)' }, { value: 'country', label: 'Country only' }, { value: 'none', label: 'Disabled' }, ] export default function SitePrivacyTab({ siteId }: { siteId: string }) { const { data: site, mutate } = useSite(siteId) const [collectPagePaths, setCollectPagePaths] = useState(true) const [collectReferrers, setCollectReferrers] = useState(true) const [collectDeviceInfo, setCollectDeviceInfo] = useState(true) const [collectScreenRes, setCollectScreenRes] = useState(true) const [collectGeoData, setCollectGeoData] = useState('full') const [hideUnknownLocations, setHideUnknownLocations] = useState(false) const [dataRetention, setDataRetention] = useState(6) const [saving, setSaving] = useState(false) useEffect(() => { if (site) { setCollectPagePaths(site.collect_page_paths ?? true) setCollectReferrers(site.collect_referrers ?? true) setCollectDeviceInfo(site.collect_device_info ?? true) setCollectScreenRes(site.collect_screen_resolution ?? true) setCollectGeoData(site.collect_geo_data ?? 'full') setHideUnknownLocations(site.hide_unknown_locations ?? false) setDataRetention(site.data_retention_months ?? 6) } }, [site]) const handleSave = async () => { setSaving(true) try { await updateSite(siteId, { name: site?.name || '', collect_page_paths: collectPagePaths, collect_referrers: collectReferrers, collect_device_info: collectDeviceInfo, collect_screen_resolution: collectScreenRes, collect_geo_data: collectGeoData as 'full' | 'country' | 'none', hide_unknown_locations: hideUnknownLocations, }) await mutate() toast.success('Privacy settings updated') } catch { toast.error('Failed to save') } finally { setSaving(false) } } if (!site) return
Control what data is collected from your visitors.
{item.label}
{item.desc}
Controls location granularity. "Disabled" collects no geographic data at all.
Currently retaining data for {dataRetention} months. Manage retention in the full site settings.