@web3auth/modal
Version:
Multi chain wallet aggregator for web3Auth
122 lines (118 loc) • 4.5 kB
JavaScript
'use strict';
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
var httpHelpers = require('@toruslabs/http-helpers');
var auth = require('@web3auth/auth');
var noModal = require('@web3auth/no-modal');
var config = require('../../config.js');
var config$1 = require('../config.js');
var utils = require('../utils.js');
class PasswordlessHandler {
constructor(params) {
_defineProperty(this, "authBaseApiUrl", void 0);
_defineProperty(this, "passwordlessParams", void 0);
_defineProperty(this, "trackingIdentifier", void 0);
_defineProperty(this, "version", `web3auth-${config.version.split(".")[0]}`);
if (!params.authConnection) throw noModal.WalletInitializationError.invalidParams("authConnection is required");
if (!params.web3authClientId) throw noModal.WalletInitializationError.invalidParams("web3authClientId is required");
if (!params.loginHint) throw noModal.WalletInitializationError.invalidParams("loginHint is required");
if (!params.network) throw noModal.WalletInitializationError.invalidParams("network is required");
if (!params.authBuildEnv) params.authBuildEnv = auth.BUILD_ENV.PRODUCTION;
this.authBaseApiUrl = `${config$1.PASSWORDLESS_BUILD_ENV_MAP[params.authBuildEnv]}/api/v3/auth`;
this.passwordlessParams = params;
}
get name() {
if (this.passwordlessParams.authConnection === auth.AUTH_CONNECTION.EMAIL_PASSWORDLESS) return "Email";
if (this.passwordlessParams.authConnection === auth.AUTH_CONNECTION.SMS_PASSWORDLESS) return "Mobile";
throw noModal.WalletInitializationError.invalidParams("Invalid authConnection");
}
get connection() {
if (this.passwordlessParams.authConnection === auth.AUTH_CONNECTION.EMAIL_PASSWORDLESS) return "email";
if (this.passwordlessParams.authConnection === auth.AUTH_CONNECTION.SMS_PASSWORDLESS) return "sms";
throw noModal.WalletInitializationError.invalidParams("Invalid authConnection");
}
get trackingId() {
return this.trackingIdentifier;
}
get sessionStorageAvailable() {
return auth.storageAvailable("sessionStorage");
}
get whiteLabelParams() {
var _ref;
const {
uiConfig
} = this.passwordlessParams;
if (!uiConfig) return {};
const {
appName,
appUrl,
defaultLanguage,
mode,
logoLight,
logoDark,
theme
} = uiConfig;
const finalLogo = (_ref = mode === "dark" ? logoDark : logoLight) !== null && _ref !== void 0 ? _ref : "";
return {
mode: mode !== null && mode !== void 0 ? mode : "light",
name: appName !== null && appName !== void 0 ? appName : "",
url: appUrl !== null && appUrl !== void 0 ? appUrl : "",
language: defaultLanguage !== null && defaultLanguage !== void 0 ? defaultLanguage : "en",
logo: finalLogo.includes(".svg") ? "" : finalLogo,
theme: theme !== null && theme !== void 0 ? theme : {}
};
}
set trackingId(value) {
this.trackingIdentifier = value;
}
async start(params) {
try {
const result = await httpHelpers.post(`${this.authBaseApiUrl}/passwordless/start`, params);
if (result && result.success) {
var _result$data;
this.trackingId = (_result$data = result.data) === null || _result$data === void 0 ? void 0 : _result$data.trackingId;
if (this.sessionStorageAvailable) window.sessionStorage.setItem("trackingId", this.trackingId);
}
return result;
} catch (e) {
return this.handleError(e);
}
}
async verify(params) {
try {
const result = await httpHelpers.post(`${this.authBaseApiUrl}/passwordless/verify`, params);
if (result.success) {
if (this.sessionStorageAvailable) window.sessionStorage.removeItem("trackingId");
return {
success: true,
data: {
id_token: result.id_token
}
};
}
return {
success: false,
error: result.message
};
} catch (e) {
return this.handleError(e);
}
}
async handleError(e) {
let error;
if (e.status === 429) {
error = "passwordless.error-too-many-requests";
} else {
try {
const err = await e.json();
error = err.error_code ? utils.getErrorMessages(err.error_code) : err.message;
} catch {
error = "passwordless.something-wrong-error";
}
}
return {
success: false,
error: error
};
}
}
exports.PasswordlessHandler = PasswordlessHandler;