nativescript-firebase-updated-new
Version:
237 lines • 7.99 kB
JavaScript
import { prompt, ApplicationSettings } from "@nativescript/core";
import * as admob from "./admob/admob";
import * as analytics from "./analytics/analytics";
import * as crashlytics from "./crashlytics/crashlytics";
import * as performance from "./performance/performance";
import * as storage from "./storage/storage";
import * as mlkit from "./mlkit";
export class FieldValue {
constructor(type, value) {
this.type = type;
this.value = value;
}
}
FieldValue.serverTimestamp = () => "SERVER_TIMESTAMP";
FieldValue.delete = () => "DELETE_FIELD";
FieldValue.arrayUnion = (...elements) => new FieldValue("ARRAY_UNION", elements);
FieldValue.arrayRemove = (...elements) => new FieldValue("ARRAY_REMOVE", elements);
FieldValue.increment = (n) => new FieldValue("INCREMENT", n);
export class GeoPoint {
constructor(latitude, longitude) {
this.latitude = latitude;
this.longitude = longitude;
}
}
export const firebase = {
initialized: false,
instance: null,
firebaseRemoteConfig: null,
currentAdditionalUserInfo: null,
authStateListeners: [],
_receivedNotificationCallback: null,
_dynamicLinkCallback: null,
admob,
analytics,
crashlytics,
performance,
storage,
mlkit,
firestore: {
FieldValue,
GeoPoint: (latitude, longitude) => new GeoPoint(latitude, longitude)
},
dynamicLinks: {
MATCH_CONFIDENCE: {
WEAK: 0,
STRONG: 1
}
},
LoginType: {
ANONYMOUS: "anonymous",
PASSWORD: "password",
PHONE: "phone",
CUSTOM: "custom",
FACEBOOK: "facebook",
GOOGLE: "google",
APPLE: "apple",
EMAIL_LINK: "emailLink"
},
LogComplexEventTypeParameter: {
STRING: "string",
INT: "int",
FLOAT: "float",
DOUBLE: "double",
LONG: "long",
ARRAY: "array",
BOOLEAN: "boolean"
},
QueryOrderByType: {
KEY: "key",
VALUE: "value",
CHILD: "child",
PRIORITY: "priority"
},
QueryLimitType: {
FIRST: "first",
LAST: "last"
},
QueryRangeType: {
START_AT: "startAt",
END_AT: "endAt",
EQUAL_TO: "equalTo"
},
addAuthStateListener: listener => {
if (firebase.authStateListeners.indexOf(listener) === -1) {
firebase.authStateListeners.push(listener);
}
return true;
},
removeAuthStateListener: listener => {
const index = firebase.authStateListeners.indexOf(listener);
if (index >= 0) {
firebase.authStateListeners.splice(index, 1);
return true;
}
else {
return false;
}
},
removeAllAuthStateListeners: () => {
firebase.authStateListeners = [];
},
hasAuthStateListener: listener => {
return firebase.authStateListeners.indexOf(listener) >= 0;
},
notifyAuthStateListeners: data => {
firebase.authStateListeners.forEach(listener => {
try {
if (listener.thisArg) {
listener.onAuthStateChanged.call(listener.thisArg, data);
}
else if (listener.onAuthStateChanged) {
listener.onAuthStateChanged(data);
}
else {
listener(data);
}
}
catch (ex) {
console.error("Firebase AuthStateListener failed to trigger", listener, ex);
}
});
},
rememberEmailForEmailLinkLogin: (email) => {
ApplicationSettings.setString("FirebasePlugin.EmailLinkLogin", email);
},
getRememberedEmailForEmailLinkLogin: () => {
return ApplicationSettings.getString("FirebasePlugin.EmailLinkLogin");
},
strongTypeify: value => {
if (value === "true") {
value = true;
}
else if (value === "false") {
value = false;
}
else if (parseFloat(value) === value) {
value = parseFloat(value);
}
else if (parseInt(value) === value) {
value = parseInt(value);
}
return value;
},
requestPhoneAuthVerificationCode: (onUserResponse, verificationPrompt) => {
if (verificationPrompt.promise) {
verificationPrompt.promise().then(result => onUserResponse(result));
}
else {
prompt(verificationPrompt || "Verification code").then(promptResult => {
if (!promptResult.result) {
onUserResponse(undefined);
}
else {
onUserResponse(promptResult.text);
}
});
}
},
moveLoginOptionsToObjects: loginOptions => {
if (loginOptions.email) {
console.log("Please update your code: the 'email' property is deprecated and now expected at 'passwordOptions.email'");
if (!loginOptions.passwordOptions) {
loginOptions.passwordOptions = {};
}
if (!loginOptions.passwordOptions.email) {
loginOptions.passwordOptions.email = loginOptions.email;
}
}
if (loginOptions.password) {
console.log("Please update your code: the 'password' property is deprecated and now expected at 'passwordOptions.password'");
if (!loginOptions.passwordOptions) {
loginOptions.passwordOptions = {};
}
if (!loginOptions.passwordOptions.password) {
loginOptions.passwordOptions.password = loginOptions.password;
}
}
if (loginOptions.token) {
console.log("Please update your code: the 'token' property is deprecated and now expected at 'customOptions.token'");
if (!loginOptions.customOptions) {
loginOptions.customOptions = {};
}
if (!loginOptions.customOptions.token) {
loginOptions.customOptions.token = loginOptions.token;
}
}
if (loginOptions.tokenProviderFn) {
console.log("Please update your code: the 'tokenProviderFn' property is deprecated and now expected at 'customOptions.tokenProviderFn'");
if (!loginOptions.customOptions) {
loginOptions.customOptions = {};
}
if (!loginOptions.customOptions.tokenProviderFn) {
loginOptions.customOptions.tokenProviderFn = loginOptions.tokenProviderFn;
}
}
if (loginOptions.scope) {
console.log("Please update your code: the 'scope' property is deprecated and now expected at 'facebookOptions.scope'");
if (!loginOptions.facebookOptions) {
loginOptions.facebookOptions = {};
}
if (!loginOptions.facebookOptions.scope) {
loginOptions.facebookOptions.scope = loginOptions.scope;
}
}
},
merge: (obj1, obj2) => {
const result = {};
for (let i in obj1) {
if ((i in obj2) && (typeof obj1[i] === "object") && (i !== null)) {
result[i] = firebase.merge(obj1[i], obj2[i]);
}
else {
result[i] = obj1[i];
}
}
for (let i in obj2) {
if (i in result) {
continue;
}
result[i] = obj2[i];
}
return result;
}
};
export const firestore = firebase.firestore;
export class DocumentSnapshot {
constructor(id, exists, documentData, ref) {
this.id = id;
this.exists = exists;
this.ref = ref;
this.data = () => exists ? documentData : undefined;
}
}
export function isDocumentReference(object) {
return object && object.discriminator === "docRef";
}
//# sourceMappingURL=firebase-common.js.map