@smartface/plugin-firebase
Version:
Smartface Firebase Plugin for Smartface Native Framework
525 lines • 23.1 kB
JavaScript
"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