diff --git a/apps/studio/app/(main)/(dashboard)/settings/components/SyncSection.tsx b/apps/studio/app/(main)/(dashboard)/settings/components/SyncSection.tsx index 0c6ee4a..0ea6e6b 100644 --- a/apps/studio/app/(main)/(dashboard)/settings/components/SyncSection.tsx +++ b/apps/studio/app/(main)/(dashboard)/settings/components/SyncSection.tsx @@ -4,6 +4,7 @@ import { useState, useEffect } from "react"; import { CloudSync, CheckCircle2, History, LucideIcon } from "lucide-react"; import { cn } from "@/lib/utils"; +import { useUserStore } from "@/store/useUserStore"; import { Switch } from "@veriworkly/ui"; @@ -17,6 +18,7 @@ import { loadWorkspaceSettingsFromLocalStorage, } from "@/features/documents/services/workspace-settings"; import { setAllResumesSyncEnabled } from "@/features/resume/services/resume-service"; +import { getAutoSyncControlState } from "./sync-section-state"; interface TelemetryState { lastAttemptAt: string | null; @@ -24,6 +26,7 @@ interface TelemetryState { } export default function SyncSection() { + const isLoggedIn = useUserStore((state) => state.isLoggedIn); const [loading, setLoading] = useState(false); const [autoSync, setAutoSync] = useState(false); @@ -56,6 +59,8 @@ export default function SyncSection() { }, []); const handleToggle = async (checked: boolean) => { + if (!isLoggedIn) return; + setAutoSync(checked); setAutoSyncEnabledInLocalStorage(checked); setAllResumesSyncEnabled(checked); @@ -67,6 +72,8 @@ export default function SyncSection() { } }; + const autoSyncControl = getAutoSyncControlState({ autoSync, isLoggedIn, loading }); + return (
@@ -75,7 +82,7 @@ export default function SyncSection() { Cloud & Data -

Manage background synchronization.

+

{autoSyncControl.description}

@@ -83,7 +90,11 @@ export default function SyncSection() { Auto-Sync - +
diff --git a/apps/studio/app/(main)/(dashboard)/settings/components/sync-section-state.ts b/apps/studio/app/(main)/(dashboard)/settings/components/sync-section-state.ts new file mode 100644 index 0000000..a8b9248 --- /dev/null +++ b/apps/studio/app/(main)/(dashboard)/settings/components/sync-section-state.ts @@ -0,0 +1,17 @@ +export function getAutoSyncControlState({ + autoSync, + isLoggedIn, + loading, +}: { + autoSync: boolean; + isLoggedIn: boolean; + loading: boolean; +}) { + return { + checked: isLoggedIn && autoSync, + disabled: loading || !isLoggedIn, + description: isLoggedIn + ? "Manage background synchronization." + : "Sign in to enable background synchronization.", + }; +}