react-native-firebase-compiled
Version:
A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto
172 lines (129 loc) • 5.1 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.statics = exports.default = exports.NAMESPACE = exports.MODULE_NAME = void 0;
var _reactNative = require("react-native");
var _events = require("../../utils/events");
var _internals = _interopRequireDefault(require("../../utils/internals"));
var _log = require("../../utils/log");
var _ModuleBase = _interopRequireDefault(require("../../utils/ModuleBase"));
var _native = require("../../utils/native");
var _utils = require("../../utils");
var _RemoteMessage = _interopRequireDefault(require("./RemoteMessage"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
*
* Messaging (FCM) representation wrapper
*/
const NATIVE_EVENTS = ['messaging_message_received', 'messaging_token_refreshed'];
const MODULE_NAME = 'RNFirebaseMessaging';
exports.MODULE_NAME = MODULE_NAME;
const NAMESPACE = 'messaging';
/**
* @class Messaging
*/
exports.NAMESPACE = NAMESPACE;
class Messaging extends _ModuleBase.default {
constructor(app) {
super(app, {
events: NATIVE_EVENTS,
moduleName: MODULE_NAME,
hasMultiAppSupport: false,
hasCustomUrlSupport: false,
namespace: NAMESPACE
});
_events.SharedEventEmitter.addListener( // sub to internal native event - this fans out to
// public event name: onMessage
'messaging_message_received', message => {
_events.SharedEventEmitter.emit('onMessage', new _RemoteMessage.default(message));
});
_events.SharedEventEmitter.addListener( // sub to internal native event - this fans out to
// public event name: onMessage
'messaging_token_refreshed', token => {
_events.SharedEventEmitter.emit('onTokenRefresh', token);
}); // Tell the native module that we're ready to receive events
if (_reactNative.Platform.OS === 'ios') {
(0, _native.getNativeModule)(this).jsInitialised();
}
}
getToken() {
return (0, _native.getNativeModule)(this).getToken();
}
deleteToken(authorizedEntity, scope) {
return this.app.iid().deleteToken(authorizedEntity, scope);
}
onMessage(nextOrObserver) {
let listener;
if ((0, _utils.isFunction)(nextOrObserver)) {
// $FlowExpectedError: Not coping with the overloaded method signature
listener = nextOrObserver;
} else if ((0, _utils.isObject)(nextOrObserver) && (0, _utils.isFunction)(nextOrObserver.next)) {
listener = nextOrObserver.next;
} else {
throw new Error('Messaging.onMessage failed: First argument must be a function or observer object with a `next` function.');
}
(0, _log.getLogger)(this).info('Creating onMessage listener');
_events.SharedEventEmitter.addListener('onMessage', listener);
return () => {
(0, _log.getLogger)(this).info('Removing onMessage listener');
_events.SharedEventEmitter.removeListener('onMessage', listener);
};
}
onTokenRefresh(nextOrObserver) {
let listener;
if ((0, _utils.isFunction)(nextOrObserver)) {
// $FlowExpectedError: Not coping with the overloaded method signature
listener = nextOrObserver;
} else if ((0, _utils.isObject)(nextOrObserver) && (0, _utils.isFunction)(nextOrObserver.next)) {
listener = nextOrObserver.next;
} else {
throw new Error('Messaging.OnTokenRefresh failed: First argument must be a function or observer object with a `next` function.');
}
(0, _log.getLogger)(this).info('Creating onTokenRefresh listener');
_events.SharedEventEmitter.addListener('onTokenRefresh', listener);
return () => {
(0, _log.getLogger)(this).info('Removing onTokenRefresh listener');
_events.SharedEventEmitter.removeListener('onTokenRefresh', listener);
};
}
requestPermission() {
return (0, _native.getNativeModule)(this).requestPermission();
}
/**
* NON WEB-SDK METHODS
*/
hasPermission() {
return (0, _native.getNativeModule)(this).hasPermission();
}
sendMessage(remoteMessage) {
if (!(remoteMessage instanceof _RemoteMessage.default)) {
return Promise.reject(new Error(`Messaging:sendMessage expects a 'RemoteMessage' but got type ${typeof remoteMessage}`));
}
try {
return (0, _native.getNativeModule)(this).sendMessage(remoteMessage.build());
} catch (error) {
return Promise.reject(error);
}
}
subscribeToTopic(topic) {
return (0, _native.getNativeModule)(this).subscribeToTopic(topic);
}
unsubscribeFromTopic(topic) {
return (0, _native.getNativeModule)(this).unsubscribeFromTopic(topic);
}
/**
* KNOWN UNSUPPORTED METHODS
*/
setBackgroundMessageHandler() {
throw new Error(_internals.default.STRINGS.ERROR_UNSUPPORTED_MODULE_METHOD('messaging', 'setBackgroundMessageHandler'));
}
useServiceWorker() {
throw new Error(_internals.default.STRINGS.ERROR_UNSUPPORTED_MODULE_METHOD('messaging', 'useServiceWorker'));
}
}
exports.default = Messaging;
const statics = {
RemoteMessage: _RemoteMessage.default
};
exports.statics = statics;
;