import * as Notifications from 'expo-notifications' import { Platform } from 'react-native' import { getApiBaseUrl } from './api-url' Notifications.setNotificationHandler({ handleNotification: async () => ({ shouldShowAlert: true, shouldPlaySound: true, shouldSetBadge: true, shouldShowBanner: true, shouldShowList: true, }), }) export async function setupPushNotifications() { if (Platform.OS === 'web') return const { status: existingStatus } = await Notifications.getPermissionsAsync() let finalStatus = existingStatus if (existingStatus !== 'granted') { const { status } = await Notifications.requestPermissionsAsync() finalStatus = status } if (finalStatus !== 'granted') return const token = await Notifications.getExpoPushTokenAsync({ projectId: process.env.EXPO_PUBLIC_PROJECT_ID, }) // Store push token on the server. const apiUrl = getApiBaseUrl() await fetch(`${apiUrl}/api/push-token`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ token: token.data }), }).catch(() => { // Silently fail — push is optional }) }