diff --git a/apps/client/src/app/(tabs)/calendar.tsx b/apps/client/src/app/(tabs)/calendar.tsx index 7c87b30..ce0453b 100644 --- a/apps/client/src/app/(tabs)/calendar.tsx +++ b/apps/client/src/app/(tabs)/calendar.tsx @@ -17,7 +17,6 @@ import { Ionicons } from "@expo/vector-icons"; import { useThemeStore } from "../../stores/ThemeStore"; import BaseBackground from "../../components/BaseBackground"; import { EventService } from "../../services"; -import { CaldavConfigService } from "../../services/CaldavConfigService"; import { useEventsStore } from "../../stores"; import { useDropdownPosition } from "../../hooks/useDropdownPosition"; @@ -108,25 +107,11 @@ const Calendar = () => { } }, [monthIndex, currentYear, setEvents]); - // Sync CalDAV in background, then reload events - const syncAndReload = useCallback(async () => { - try { - await CaldavConfigService.sync(); - await loadEvents(); - } catch { - // Sync failed — not critical - } - }, [loadEvents]); - - // Load events instantly on focus, then sync in background periodically + // Load events from DB on focus useFocusEffect( useCallback(() => { loadEvents(); - syncAndReload(); - - const interval = setInterval(syncAndReload, 10_000); - return () => clearInterval(interval); - }, [loadEvents, syncAndReload]), + }, [loadEvents]), ); // Re-open overlay after back navigation from editEvent diff --git a/apps/client/src/components/AuthGuard.tsx b/apps/client/src/components/AuthGuard.tsx index ddde39b..5e8dcfa 100644 --- a/apps/client/src/components/AuthGuard.tsx +++ b/apps/client/src/components/AuthGuard.tsx @@ -62,11 +62,6 @@ export const AuthGuard = ({ children }: AuthGuardProps) => { if (!useAuthStore.getState().isAuthenticated) return; await preloadAppData(); setDataReady(true); - try { - await CaldavConfigService.sync(); - } catch { - // No CalDAV config or sync failed — not critical - } }; init(); }, [loadStoredUser]); diff --git a/apps/server/src/app.ts b/apps/server/src/app.ts index 3ccba6f..543156a 100644 --- a/apps/server/src/app.ts +++ b/apps/server/src/app.ts @@ -63,12 +63,7 @@ const aiProvider = new GPTAdapter(); const authService = new AuthService(userRepo); const eventService = new EventService(eventRepo); const caldavService = new CaldavService(caldavRepo, eventService); -const chatService = new ChatService( - chatRepo, - eventService, - aiProvider, - caldavService, -); +const chatService = new ChatService(chatRepo, eventService, aiProvider); // Initialize controllers const authController = new AuthController(authService); diff --git a/apps/server/src/services/ChatService.ts b/apps/server/src/services/ChatService.ts index 739af91..2bec23e 100644 --- a/apps/server/src/services/ChatService.ts +++ b/apps/server/src/services/ChatService.ts @@ -14,7 +14,6 @@ import { } from "@calchat/shared"; import { ChatRepository, AIProvider } from "./interfaces"; import { EventService } from "./EventService"; -import { CaldavService } from "./CaldavService"; import { getWeeksOverview, getMonthOverview } from "../utils/eventFormatters"; type TestResponse = { @@ -543,7 +542,6 @@ export class ChatService { private chatRepo: ChatRepository, private eventService: EventService, private aiProvider: AIProvider, - private caldavService: CaldavService, ) {} async processMessage( @@ -578,32 +576,17 @@ export class ChatService { limit: 20, }); - // Lazy CalDAV sync: only sync once when the AI first accesses event data - let hasSynced = false; - const syncOnce = async () => { - if (hasSynced) return; - hasSynced = true; - try { - await this.caldavService.sync(userId); - } catch { - // CalDAV sync is not critical for AI responses - } - }; - response = await this.aiProvider.processMessage(data.content, { userId, conversationHistory: history, currentDate: new Date(), fetchEventsInRange: async (start, end) => { - await syncOnce(); return this.eventService.getByDateRange(userId, start, end); }, searchEvents: async (query) => { - await syncOnce(); return this.eventService.searchByTitle(userId, query); }, fetchEventById: async (eventId) => { - await syncOnce(); return this.eventService.getById(eventId, userId); }, });