import { getMessaging, requestPermission, getToken, onTokenRefresh, AuthorizationStatus, } from '@react-native-firebase/messaging'; import { post } from '@/services/api'; export async function registerDeviceToken(authToken: string): Promise { const messaging = getMessaging(); const status = await requestPermission(messaging); const granted = status === AuthorizationStatus.AUTHORIZED || status === AuthorizationStatus.PROVISIONAL; if (!granted) return; const fcmToken = await getToken(messaging); await fetch(`${process.env.EXPO_PUBLIC_API_URL}/device-tokens/register`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${authToken}`, }, body: JSON.stringify({ token: fcmToken }), }); } export function listenForTokenRefresh(authToken: string): () => void { return onTokenRefresh(getMessaging(), async (newToken) => { await post('/device-tokens/register', { token: newToken }, authToken); }); }