UNPKG

@sendbird/uikit-react-native

Version:

Sendbird UIKit for React Native: A feature-rich and customizable chat UI kit with messaging, channel management, and user authentication.

76 lines (72 loc) 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _reactNative = require("react-native"); // Type definitions for Firebase Messaging Module instance // This represents the instance returned by messaging() or getMessaging() // We use a type alias to handle both v14 and v22+ types // Type definitions for modular API support (Firebase v22+) // The modular API provides standalone functions that accept a messaging instance // Create a flexible type that can handle both v14 and v22+ Firebase modules const isModularAPI = module => { return typeof module.getMessaging === 'function'; }; const createNativeNotificationService = ({ messagingModule, permissionModule }) => { const isModular = isModularAPI(messagingModule); const modularMessaging = isModular ? messagingModule : null; const messaging = isModular ? modularMessaging.getMessaging() : messagingModule(); const authorizedStatus = [messagingModule.AuthorizationStatus.AUTHORIZED, messagingModule.AuthorizationStatus.PROVISIONAL]; return { getAPNSToken() { if (modularMessaging) { return modularMessaging.getAPNSToken(messaging); } return messaging.getAPNSToken(); }, getFCMToken() { if (modularMessaging) { return modularMessaging.getToken(messaging); } return messaging.getToken(); }, async hasPushPermission() { if (_reactNative.Platform.OS === 'android') { const result = await permissionModule.checkNotifications(); return result.status === 'granted'; } if (_reactNative.Platform.OS === 'ios') { const status = modularMessaging ? await modularMessaging.hasPermission(messaging) : await messaging.hasPermission(); return authorizedStatus.includes(status); } return false; }, async requestPushPermission() { if (_reactNative.Platform.OS === 'android') { const result = await permissionModule.requestNotifications([]); return result.status === 'granted'; } if (_reactNative.Platform.OS === 'ios') { const status = modularMessaging ? await modularMessaging.requestPermission(messaging) : await messaging.requestPermission(); return authorizedStatus.includes(status); } return false; }, onTokenRefresh(handler) { if (modularMessaging) { return modularMessaging.onTokenRefresh(messaging, token => { if (_reactNative.Platform.OS === 'android') handler(token); }); } return messaging.onTokenRefresh(token => { if (_reactNative.Platform.OS === 'android') handler(token); }); } }; }; var _default = exports.default = createNativeNotificationService; //# sourceMappingURL=createNotificationService.native.js.map