Fix toast and sync settings
- Fix issue where toast notifications were not disappearing. - Ensure sync settings are turned off upon logout.
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import { Switch } from "@/components/ui/switch";
|
||||
import { Label } from "@/components/ui/label";
|
||||
@@ -16,21 +17,41 @@ const SyncSettings = () => {
|
||||
const { user } = useAuth();
|
||||
const navigate = useNavigate();
|
||||
|
||||
// 사용자 로그인 상태 변경 감지
|
||||
useEffect(() => {
|
||||
// 마지막 동기화 시간 업데이트
|
||||
setLastSync(getLastSyncTime());
|
||||
|
||||
// 세션 상태 변경 감지
|
||||
const handleAuthChange = () => {
|
||||
// 사용자 로그인 상태에 따라 동기화 설정 업데이트
|
||||
const updateSyncState = () => {
|
||||
if (!user && isSyncEnabled()) {
|
||||
// 사용자가 로그아웃했고 동기화가 활성화되어 있으면 비활성화
|
||||
setSyncEnabled(false);
|
||||
setEnabled(false);
|
||||
setLastSync(null);
|
||||
console.log('로그아웃으로 인해 동기화 설정이 비활성화되었습니다.');
|
||||
}
|
||||
|
||||
// 동기화 상태 업데이트
|
||||
setEnabled(isSyncEnabled());
|
||||
setLastSync(getLastSyncTime());
|
||||
};
|
||||
|
||||
// 초기 호출
|
||||
updateSyncState();
|
||||
|
||||
window.addEventListener('auth-state-changed', handleAuthChange);
|
||||
// 인증 상태 변경 이벤트 리스너
|
||||
window.addEventListener('auth-state-changed', updateSyncState);
|
||||
|
||||
return () => {
|
||||
window.removeEventListener('auth-state-changed', handleAuthChange);
|
||||
window.removeEventListener('auth-state-changed', updateSyncState);
|
||||
};
|
||||
}, [user]);
|
||||
|
||||
// 마지막 동기화 시간 정기적으로 업데이트
|
||||
useEffect(() => {
|
||||
const intervalId = setInterval(() => {
|
||||
setLastSync(getLastSyncTime());
|
||||
}, 10000); // 10초마다 업데이트
|
||||
|
||||
return () => clearInterval(intervalId);
|
||||
}, []);
|
||||
|
||||
const handleSyncToggle = async (checked: boolean) => {
|
||||
@@ -171,6 +192,7 @@ const SyncSettings = () => {
|
||||
checked={enabled}
|
||||
onCheckedChange={handleSyncToggle}
|
||||
className="data-[state=checked]:bg-neuro-income"
|
||||
disabled={!user && enabled} // 사용자가 로그아웃 상태이면서 동기화가 켜져있을 때 비활성화
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user