import { useEffect, useState, useCallback } from 'react' import * as Notifications from 'expo-notifications' import { getOpenSRCount } from '../services/api' const REFRESH_MS = 5 * 60 * 1000 // 5분 /** * 기능 #15 — 앱 아이콘 뱃지 카운트 훅 * 미처리(open) + 내 담당 SR 수를 5분마다 갱신하여 앱 뱃지에 반영. * expo-notifications 플러그인은 app.json 에 등록하지 않고 * Notifications.setBadgeCountAsync 만 사용한다. */ export function useBadgeCount() { const [count, setCount] = useState(0) const refresh = useCallback(async () => { try { const res = await getOpenSRCount() const c: number = res.data?.total ?? res.data?.totalElements ?? (Array.isArray(res.data?.content) ? res.data.content.length : undefined) ?? (Array.isArray(res.data) ? res.data.length : 0) setCount(c) try { await Notifications.setBadgeCountAsync(c) } catch {} } catch { // 네트워크 오류 시 뱃지 유지 } }, []) useEffect(() => { refresh() const interval = setInterval(refresh, REFRESH_MS) return () => clearInterval(interval) }, [refresh]) return { count, refresh } }