Files
zellyy-finance/src/components/SyncSettings.tsx
gpt-engineer-app[bot] 043db23836 Ensure sync is disabled
The sync setting was not consistently being disabled in certain scenarios. This change ensures that the sync setting is properly disabled when expected.
2025-03-18 01:48:38 +00:00

85 lines
2.6 KiB
TypeScript

import React, { useEffect } from 'react';
import { Switch } from "@/components/ui/switch";
import { Label } from "@/components/ui/label";
import { CloudUpload } from "lucide-react";
import { useSyncSettings } from '@/hooks/useSyncSettings';
import SyncStatus from '@/components/sync/SyncStatus';
import SyncExplanation from '@/components/sync/SyncExplanation';
import { isSyncEnabled } from '@/utils/sync/syncSettings';
const SyncSettings = () => {
const {
enabled,
syncing,
user,
lastSync,
handleSyncToggle,
handleManualSync
} = useSyncSettings();
// 동기화 설정 변경 모니터링
useEffect(() => {
const checkSyncStatus = () => {
const currentStatus = isSyncEnabled();
console.log('현재 동기화 상태:', currentStatus ? '활성화됨' : '비활성화됨');
};
// 초기 상태 확인
checkSyncStatus();
// 스토리지 변경 이벤트에도 동기화 상태 확인 추가
const handleStorageChange = () => {
checkSyncStatus();
};
window.addEventListener('storage', handleStorageChange);
window.addEventListener('auth-state-changed', handleStorageChange);
return () => {
window.removeEventListener('storage', handleStorageChange);
window.removeEventListener('auth-state-changed', handleStorageChange);
};
}, []);
return (
<div className="space-y-6">
{/* 동기화 토글 컨트롤 */}
<div className="flex items-center justify-between">
<div className="space-y-0.5">
<div className="flex items-center gap-2">
<CloudUpload className="h-5 w-5 text-neuro-income" />
<Label htmlFor="sync-toggle" className="text-base font-medium">
</Label>
</div>
<p className="text-sm text-muted-foreground">
.
</p>
</div>
<Switch
id="sync-toggle"
checked={enabled}
onCheckedChange={handleSyncToggle}
className="data-[state=checked]:bg-neuro-income"
disabled={!user && enabled} // 사용자가 로그아웃 상태이면서 동기화가 켜져있을 때 비활성화
/>
</div>
{/* 동기화 상태 및 동작 */}
<SyncStatus
enabled={enabled}
syncing={syncing}
lastSync={lastSync}
user={user}
onManualSync={handleManualSync}
/>
{/* 동기화 설명 */}
<SyncExplanation enabled={enabled} />
</div>
);
};
export default SyncSettings;