UNPKG

@nativescript/firebase-messaging

Version:
140 lines 4.65 kB
import { Utils } from '@nativescript/core'; import { FirebaseApp, FirebaseError, firebase } from '@nativescript/firebase-core'; import { MessagingCore, AuthorizationStatus } from '@nativescript/firebase-messaging-core'; export { AuthorizationStatus }; let defaultMessaging; const fb = firebase(); Object.defineProperty(fb, 'messaging', { value: () => { if (!defaultMessaging) { defaultMessaging = new Messaging(); } return defaultMessaging; }, writable: false, }); export class Messaging { constructor() { if (defaultMessaging) { return defaultMessaging; } defaultMessaging = this; this._instance = MessagingCore.getInstance(); } getToken() { return new Promise((resolve, reject) => { org.nativescript.firebase.messaging.FirebaseMessaging.getToken(this.native, new org.nativescript.firebase.messaging.FirebaseMessaging.Callback({ onSuccess(result) { resolve(result); }, onError(error) { reject(FirebaseError.fromNative(error)); }, })); }); } getAPNSToken() { return null; } hasPermission() { return this._instance.hasPermission(); } onMessage(listener) { if (!listener && this._onMessage) { this._instance.removeOnMessage(this._onMessage); } else { this._instance.addOnMessage(listener); } this._onMessage = listener; } onNotificationTap(listener) { if (!listener && this._onNotificationTap) { this._instance.removeOnNotificationTap(this._onNotificationTap); } else { this._instance.addOnNotificationTap(listener); } this._onNotificationTap = listener; } onToken(listener) { if (!listener && this._onToken) { this._instance.removeOnToken(this._onToken); } else { this._instance.addOnToken(listener); } this._onToken = listener; } registerDeviceForRemoteMessages() { return Promise.resolve(); } requestPermission(permissions) { return this._instance.requestPermission(permissions); } subscribeToTopic(topic) { return new Promise((resolve, reject) => { org.nativescript.firebase.messaging.FirebaseMessaging.subscribeToTopic(topic, this.native, new org.nativescript.firebase.messaging.FirebaseMessaging.Callback({ onSuccess(result) { resolve(); }, onError(error) { reject(FirebaseError.fromNative(error)); }, })); }); } unregisterDeviceForRemoteMessages() { return Promise.resolve(); } unsubscribeFromTopic(topic) { return new Promise((resolve, reject) => { org.nativescript.firebase.messaging.FirebaseMessaging.unsubscribeFromTopic(topic, this.native, new org.nativescript.firebase.messaging.FirebaseMessaging.Callback({ onSuccess(result) { resolve(); }, onError(error) { reject(FirebaseError.fromNative(error)); }, })); }); } deleteToken() { return new Promise((resolve, reject) => { org.nativescript.firebase.messaging.FirebaseMessaging.deleteToken(this.native, new org.nativescript.firebase.messaging.FirebaseMessaging.Callback({ onSuccess(result) { resolve(); }, onError(error) { reject(FirebaseError.fromNative(error)); }, })); }); } get isDeviceRegisteredForRemoteMessages() { return org.nativescript.firebase.messaging.FirebaseMessaging.hasPermission(Utils.android.getApplicationContext()); } get autoInitEnabled() { return this.native?.isAutoInitEnabled?.(); } set autoInitEnabled(value) { this.native?.setAutoInitEnabled?.(value); } get app() { if (!this._app) { // @ts-ignore this._app = FirebaseApp.fromNative(FIRApp.defaultApp()); } return this._app; } get native() { if (!this._native) { this._native = com.google.firebase.messaging.FirebaseMessaging.getInstance(); } return this._native; } get android() { return this.native; } } //# sourceMappingURL=index.android.js.map