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.

88 lines (83 loc) 3.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _react = require("react"); var _reactNative = require("react-native"); var _uikitUtils = require("@sendbird/uikit-utils"); var _useContext = require("./useContext"); const usePushTokenRegistration = () => { const { sdk } = (0, _useContext.useSendbirdChat)(); const { notificationService } = (0, _useContext.usePlatformService)(); const refreshListener = (0, _react.useRef)(); const [registerToken, unregisterToken, getToken] = (0, _uikitUtils.useIIFE)(() => { return [_reactNative.Platform.select({ ios: token => sdk.registerAPNSPushTokenForCurrentUser(token), default: token => sdk.registerFCMPushTokenForCurrentUser(token) }), _reactNative.Platform.select({ ios: token => sdk.unregisterAPNSPushTokenForCurrentUser(token), default: token => sdk.unregisterFCMPushTokenForCurrentUser(token) }), _reactNative.Platform.select({ ios: () => notificationService.getAPNSToken(), default: () => notificationService.getFCMToken() })]; }); const registerPushTokenForCurrentUser = (0, _uikitUtils.useFreshCallback)(async () => { // Check and request push permission const hasPermission = await notificationService.hasPushPermission(); if (!hasPermission) { const pushPermission = await notificationService.requestPushPermission(); if (!pushPermission) { _uikitUtils.Logger.warn('[usePushTokenRegistration]', 'Not granted push permission'); return; } } // Register token refresh listener refreshListener.current = notificationService.onTokenRefresh(registerToken); // Register token const token = await getToken(); if (token) { try { await registerToken(token); _uikitUtils.Logger.log('[usePushTokenRegistration]', 'registered token:', token); } catch (error) { _uikitUtils.Logger.error('[usePushTokenRegistration]', 'failed to register token:', error); } } // Remove listener refreshListener.current = notificationService.onTokenRefresh(async token => { try { await registerToken(token); _uikitUtils.Logger.log('[usePushTokenRegistration]', 'registered token:', token); } catch (error) { _uikitUtils.Logger.error('[usePushTokenRegistration]', 'failed to register token:', error); } }); }); const unregisterPushTokenForCurrentUser = (0, _uikitUtils.useFreshCallback)(async () => { var _refreshListener$curr; // Unregister token refresh listener (_refreshListener$curr = refreshListener.current) === null || _refreshListener$curr === void 0 || _refreshListener$curr.call(refreshListener); // Unregister token const token = await getToken(); if (token) { try { await unregisterToken(token); _uikitUtils.Logger.log('[usePushTokenRegistration]', 'unregistered token:', token); } catch (error) { _uikitUtils.Logger.error('[usePushTokenRegistration]', 'failed to unregister token:', error); } } }); return { registerPushTokenForCurrentUser, unregisterPushTokenForCurrentUser }; }; var _default = exports.default = usePushTokenRegistration; //# sourceMappingURL=usePushTokenRegistration.js.map