@nativescript/firebase-messaging
Version:
NativeScript Firebase - Messaging
140 lines • 4.65 kB
JavaScript
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