UNPKG

@smartface/plugin-firebase

Version:

Smartface Firebase Plugin for Smartface Native Framework

525 lines 23.1 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); // @ts-ignore var NativeOnSuccessListener = requireClass('com.google.android.gms.tasks.OnSuccessListener'); // @ts-ignore var NativeOnFailureListener = requireClass('com.google.android.gms.tasks.OnFailureListener'); // @ts-ignore var NativeUserProfileChangeRequest = requireClass('com.google.firebase.auth.UserProfileChangeRequest'); // @ts-ignore var NativeEmailAuthProvider = requireClass('com.google.firebase.auth.EmailAuthProvider'); // @ts-ignore var NativeUri = requireClass('android.net.Uri'); var authErrors_1 = __importDefault(require("../Auth/authErrors")); var androidconfig_1 = __importDefault(require("@smartface/native/util/Android/androidconfig")); var User = /** @class */ (function () { function User(nativeUser) { var _this = this; this.ios = {}; /** * Returns the main email address of the user, as stored in the Firebase project's user database. * * @method getEmail * @android * @ios * @since 0.1 */ this.getEmail = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.getEmail(); } }; /** * Returns the main display name of this user from the Firebase project's user database. * * @method getDisplayName * @android * @ios * @since 0.1 */ this.getDisplayName = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.getDisplayName(); } }; /** * Set displayName. * * @method setDisplayName * @param {String} displayName * @param {Function} callback * @param {String} callback.token * @param {String} callback.error * @android * @ios * @since 0.1 */ this.setDisplayName = function (name, callback) { if (!androidconfig_1.default.isEmulator) { var profileUpdates = new NativeUserProfileChangeRequest.Builder(); profileUpdates = profileUpdates.setDisplayName(name); var request = profileUpdates.build(); var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { callback(false, e.getMessage()); } }); var tokenTask = _this.nativeObject.updateProfile(request); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Returns the URL of this user's main profile picture, as stored in the Firebase project's user database. * * @method getPhotoURL * @android * @ios * @since 0.1 */ this.getPhotoURL = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.getPhotoUrl(); } }; /** * Set photoURL. * * @method setPhotoURL * @param {String} photoURL * @param {Function} callback * @param {String} callback.token * @param {String} callback.error * @android * @ios * @since 0.1 */ this.setPhotoURL = function (url, callback) { if (!androidconfig_1.default.isEmulator) { var profileUpdates = new NativeUserProfileChangeRequest.Builder(); profileUpdates = profileUpdates.setPhotoUri(NativeUri.parse(url)); var request = profileUpdates.build(); var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { callback(false, e.getMessage()); } }); var tokenTask = _this.nativeObject.updateProfile(request); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Initiates email verification for the user. * * Possible error code; * + `UserNotFound` - Indicates the user account was not found. * + `UserDisabled` * + `InvalidUserToken` * + `UserTokenExpired` * * @method sendEmailVerification * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.sendEmailVerification = function (callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('ERROR_USER_DISABLED')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.UserDisabled, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_USER_NOT_FOUND')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.UserNotFound, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_USER_TOKEN_EXPIRED')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.UserTokenExpired, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_INVALID_USER_TOKEN')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.InvalidUserToken, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.sendEmailVerification(); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Indicates the email address associated with this user has been verified. * * @method isEmailVerified * @return {Boolean} verified * @android * @ios * @since 0.1 */ this.isEmailVerified = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.isEmailVerified(); } }; /** * Update email. * * Possible error code; * + `EmailAlreadyInUse` * + `InvalidEmail` * + `RequiresRecentLogin` * * @method updateEmail * @param {String} email * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.updateEmail = function (email, callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('ERROR_OPERATION_NOT_ALLOWED')) { callback(false, { error: { code: authErrors_1.default.OperationNotAllowed, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_INVALID_EMAIL')) { callback(false, { error: { code: authErrors_1.default.InvalidEmail, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_EMAIL_ALREADY_IN_USE')) { callback(false, { error: { code: authErrors_1.default.EmailAlreadyInUse, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_WEAK_PASSWORD')) { callback(false, { error: { code: authErrors_1.default.WeakPassword, description: e.getMessage() } }); } else if (errorCode.includes('recent')) { callback(false, { error: { code: authErrors_1.default.RequiresRecentLogin, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.updateEmail(email); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Update password. * * Possible error code; * + `OperationNotAllowed` * + `WeakPassword` * + `RequiresRecentLogin` * * @method updatePassword * @param {String} password * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.updatePassword = function (password, callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('ERROR_OPERATION_NOT_ALLOWED')) { callback(false, { error: { code: authErrors_1.default.OperationNotAllowed, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_INVALID_EMAIL')) { callback(false, { error: { code: authErrors_1.default.InvalidEmail, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_EMAIL_ALREADY_IN_USE')) { callback(false, { error: { code: authErrors_1.default.EmailAlreadyInUse, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_WEAK_PASSWORD')) { callback(false, { error: { code: authErrors_1.default.WeakPassword, description: e.getMessage() } }); } else if (errorCode.includes('recent')) { callback(false, { error: { code: authErrors_1.default.RequiresRecentLogin, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.updatePassword(password); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Reloads the user’s profile data from the server. * * Possible error code; * `RequiresRecentLogin` - Updating email is a security sensitive operation that requires a recent login from the user. This error indicates the user has not signed in recently enough. * * @method reload * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.reload = function (callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('recent')) { callback(false, { error: { code: authErrors_1.default.RequiresRecentLogin, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.reload(); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Deletes the user record from your Firebase project's database. * If the operation is successful, the user will be signed out. * * Possible error code; * `RequiresRecentLogin` - Updating email is a security sensitive operation that requires a recent login from the user. This error indicates the user has not signed in recently enough. * * @method delete * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.delete = function (callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('recent')) { callback(false, { error: { code: authErrors_1.default.RequiresRecentLogin, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.delete(); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Reauthenticate. * * Possible error code; * + `OperationNotAllowed` * + `UserDisabled` * + `WrongPassword` * + `UserMismatch` * + `InvalidEmail` * * @method reauthenticate * @param {String} email * @param {String} password * @param {Function} callback * @param {Boolean} callback.isSuccess * @param {Object} callback.error * @param {String} callback.error.code * @param {String} callback.error.description * @android * @ios * @since 0.1 */ this.reauthenticate = function (email, password, callback) { if (!androidconfig_1.default.isEmulator) { var credential = NativeEmailAuthProvider.getCredential(email, password); var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(true); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { var errorCode = '' + e.getErrorCode(); if (errorCode.includes('ERROR_USER_DISABLED')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.UserDisabled, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_USER_NOT_FOUND')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.UserMismatch, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_WRONG_PASSWORD')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.WrongPassword, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_INVALID_EMAIL')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.InvalidEmail, description: e.getMessage() } }); } else if (errorCode.includes('ERROR_OPERATION_NOT_ALLOWED')) { // thrown if the password is not strong enough callback(false, { error: { code: authErrors_1.default.OperationNotAllowed, description: e.getMessage() } }); } else { callback(false, { error: { code: undefined, description: e.getMessage() } }); } } }); var tokenTask = _this.nativeObject.reauthenticate(credential); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; /** * Returns the phone number of the user, as stored in the Firebase project's user database, or null if none exists * * @method getPhoneNumber * @android * @ios * @since 0.1 */ this.getPhoneNumber = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.getPhoneNumber(); } }; /** * Returns a string used to uniquely identify your user in your Firebase project's user database. * * @method getUID * @android * @ios * @since 0.1 */ this.getUID = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.getUid(); } }; /** * Returns true if the user is anonymous. * * @method isAnonymous * @android * @ios * @since 0.1 */ this.isAnonymous = function () { if (!androidconfig_1.default.isEmulator) { return _this.nativeObject.isAnonymous(); } }; /** * Returns token. * * @method getIdToken * @param {Boolean} forceRefresh * @param {Function} callback * @param {String} callback.token * @param {String} callback.error * @android * @ios * @since 0.1 */ this.getIdToken = function (forceRefresh, callback) { if (!androidconfig_1.default.isEmulator) { var innerSuccessCallback = NativeOnSuccessListener.implement({ onSuccess: function (result) { callback(result.getToken()); } }); var innerFailureCallback = NativeOnFailureListener.implement({ onFailure: function (e) { callback(undefined, e.getMessage()); } }); var tokenTask = _this.nativeObject.getToken(forceRefresh); tokenTask.addOnSuccessListener(innerSuccessCallback); tokenTask.addOnFailureListener(innerFailureCallback); } }; if (!androidconfig_1.default.isEmulator) { this.nativeObject = nativeUser; } } User.ios = {}; return User; }()); exports.default = User; module.exports = User; //# sourceMappingURL=user-Android.js.map