import { API_BASE_URL } from '~/main' import { getToken } from './auth' import { reactive } from 'vue' export const notificationState = reactive({ unreadCount: 0, }) export async function fetchUnreadCount() { try { const token = getToken() if (!token) { notificationState.unreadCount = 0 return 0 } const res = await fetch(`${API_BASE_URL}/api/notifications/unread-count`, { headers: { Authorization: `Bearer ${token}` }, }) if (!res.ok) { notificationState.unreadCount = 0 return 0 } const data = await res.json() notificationState.unreadCount = data.count return data.count } catch (e) { notificationState.unreadCount = 0 return 0 } } export async function markNotificationsRead(ids) { try { const token = getToken() if (!token || !ids || ids.length === 0) return false const res = await fetch(`${API_BASE_URL}/api/notifications/read`, { method: 'POST', headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ ids }), }) return res.ok } catch (e) { return false } } export async function fetchNotificationPreferences() { try { const token = getToken() if (!token) return [] const res = await fetch(`${API_BASE_URL}/api/notifications/prefs`, { headers: { Authorization: `Bearer ${token}` }, }) if (!res.ok) return [] return await res.json() } catch (e) { return [] } } export async function updateNotificationPreference(type, enabled) { try { const token = getToken() if (!token) return false const res = await fetch(`${API_BASE_URL}/api/notifications/prefs`, { method: 'POST', headers: { Authorization: `Bearer ${token}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ type, enabled }), }) return res.ok } catch (e) { return false } }