From 35a71a9068573fe0ecc2c75b794b8305aee217f6 Mon Sep 17 00:00:00 2001 From: chahinebrini Date: Thu, 21 May 2026 18:09:42 +0200 Subject: [PATCH] feat(presence): Online-Presence-Provider + Hooks Co-Authored-By: Claude Opus 4.7 --- .../components/OnlinePresenceProvider.tsx | 11 ----------- apps/rebreak-native/hooks/useFollowing.ts | 1 - apps/rebreak-native/hooks/useLastSeenHeartbeat.ts | 1 - apps/rebreak-native/hooks/useOnlineUsers.ts | 11 ++--------- 4 files changed, 2 insertions(+), 22 deletions(-) diff --git a/apps/rebreak-native/components/OnlinePresenceProvider.tsx b/apps/rebreak-native/components/OnlinePresenceProvider.tsx index c12b91c..a367324 100644 --- a/apps/rebreak-native/components/OnlinePresenceProvider.tsx +++ b/apps/rebreak-native/components/OnlinePresenceProvider.tsx @@ -32,17 +32,6 @@ export function OnlinePresenceProvider({ children }: Props) { useLastSeenHeartbeat(!!user); - // Debug-Log nur bei tatsächlichen state-changes (size geändert) — sonst - // hängt's an jedem Re-Render und spammed Metro. - useMemo(() => { - console.log( - '[presence] state — self=%s, onlineGlobal=%d, following=%d', - user?.id ?? 'none', - ids.size, - following.size, - ); - }, [ids.size, following.size, user?.id]); - const ctx = useMemo( () => ({ onlineUserIds: ids, diff --git a/apps/rebreak-native/hooks/useFollowing.ts b/apps/rebreak-native/hooks/useFollowing.ts index 9e65980..b44bbe6 100644 --- a/apps/rebreak-native/hooks/useFollowing.ts +++ b/apps/rebreak-native/hooks/useFollowing.ts @@ -7,7 +7,6 @@ export function useFollowing(): Set { queryKey: ['me-following'], queryFn: async () => { const r = await apiFetch<{ userIds: string[] }>('/api/me/following'); - console.log('[presence] /api/me/following →', r.userIds?.length ?? 0, 'IDs:', r.userIds); return r; }, staleTime: 5 * 60_000, diff --git a/apps/rebreak-native/hooks/useLastSeenHeartbeat.ts b/apps/rebreak-native/hooks/useLastSeenHeartbeat.ts index 0c0c11e..a4d7570 100644 --- a/apps/rebreak-native/hooks/useLastSeenHeartbeat.ts +++ b/apps/rebreak-native/hooks/useLastSeenHeartbeat.ts @@ -4,7 +4,6 @@ import { apiFetch } from '../lib/api'; const ping = (reason: string) => { apiFetch('/api/me/last-seen', { method: 'POST' }) - .then((r) => console.log('[presence] heartbeat OK (' + reason + ')', r)) .catch((e) => console.warn('[presence] heartbeat FAIL (' + reason + '):', e?.message ?? e)); }; diff --git a/apps/rebreak-native/hooks/useOnlineUsers.ts b/apps/rebreak-native/hooks/useOnlineUsers.ts index c6d8232..53d5cd9 100644 --- a/apps/rebreak-native/hooks/useOnlineUsers.ts +++ b/apps/rebreak-native/hooks/useOnlineUsers.ts @@ -27,12 +27,8 @@ function notify() { } function ensureChannel(currentUserId: string) { - if (sharedChannel) { - console.log('[presence] channel already exists, skip ensure'); - return; - } + if (sharedChannel) return; - console.log('[presence] ensureChannel — opening for user', currentUserId); const ch = supabase.channel('presence:online', { config: { presence: { key: currentUserId } }, }); @@ -43,14 +39,11 @@ function ensureChannel(currentUserId: string) { const state = ch.presenceState(); const keys = Object.keys(state); onlineUserIds = new Set(keys); - console.log('[presence] sync — online users:', keys.length, keys); notify(); }) .subscribe(async (status: string) => { - console.log('[presence] subscribe status:', status); if (status === 'SUBSCRIBED') { - const result = await ch.track({ userId: currentUserId, online_at: new Date().toISOString() }); - console.log('[presence] track result:', result); + await ch.track({ userId: currentUserId, online_at: new Date().toISOString() }); } }); }