UNPKG

@venly/connect

Version:

Venly Connect SDK

178 lines • 9.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Flows = void 0; var tslib_1 = require("tslib"); var Utils_1 = tslib_1.__importDefault(require("../utils/Utils")); var GeneralPopup_1 = require("../popup/GeneralPopup"); var PopupActions_1 = require("../popup/PopupActions"); var Security_1 = require("./Security"); var WindowMode_1 = require("../models/WindowMode"); var DialogWindow_1 = require("../dialog/DialogWindow"); var Flows = /** @class */ (function () { function Flows(venlyConnect, clientId) { this.clientId = clientId; this.connect = venlyConnect; } Flows.prototype.authenticate = function (options) { return tslib_1.__awaiter(this, void 0, void 0, function () { var authOptions, loginResult; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: authOptions = tslib_1.__assign({}, options); authOptions.windowMode = authOptions.windowMode || this.connect.windowMode; authOptions.windowMode = authOptions.windowMode === WindowMode_1.WindowMode.POPUP && !authOptions.forcePopup ? WindowMode_1.WindowMode.DIALOG : authOptions.windowMode; return [4 /*yield*/, Security_1.Security.login(this.clientId, authOptions)]; case 1: loginResult = _a.sent(); return [2 /*return*/, this.connect._afterAuthenticationForFlowUse(loginResult)]; } }); }); }; Flows.prototype.manageWallets = function (chain, options) { var windowMode = options && options.windowMode || this.connect.windowMode; var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup; var closePopup = options ? options.closePopup : undefined; if (windowMode === WindowMode_1.WindowMode.REDIRECT) { return this.manageWalletsRedirect(chain, options); } else { return this.manageWalletsPopup(chain, { useOverlay: useOverlayWithPopup, closePopup: closePopup }); } }; Flows.prototype.linkWallets = function (options) { var windowMode = options && options.windowMode || this.connect.windowMode; var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup; if (windowMode === WindowMode_1.WindowMode.REDIRECT) { return this.linkWalletsRedirect(options); } else { return this.linkWalletsPopup({ useOverlay: useOverlayWithPopup }); } }; Flows.prototype.claimWallets = function (options) { var windowMode = options && options.windowMode || this.connect.windowMode; var useOverlayWithPopup = options && options.useOverlayWithPopup || this.connect.useOverlayWithPopup; if (windowMode === WindowMode_1.WindowMode.REDIRECT) { return this.claimWalletsRedirect(options); } else { return this.claimWalletsPopup({ useOverlay: useOverlayWithPopup }); } }; Flows.prototype.performKYC = function (options) { var windowMode = options && options.windowMode || this.connect.windowMode; var useOverlayWithPopup = options && options.useOverlayWithPopup != undefined ? options.useOverlayWithPopup : this.connect.useOverlayWithPopup; if (windowMode === WindowMode_1.WindowMode.REDIRECT) { return this.performKYCRedirect(options); } else { return this.performKYCPopup({ useOverlay: useOverlayWithPopup }); } }; Flows.prototype.getAccount = function (chain, options) { return tslib_1.__awaiter(this, void 0, void 0, function () { var loginResult, wallets, correlationId, authenticationOptions, result, popupResult, e_1; return tslib_1.__generator(this, function (_a) { switch (_a.label) { case 0: loginResult = this.connect.loginResult || {}; wallets = []; correlationId = Utils_1.default.uuidv4(); _a.label = 1; case 1: _a.trys.push([1, 8, , 9]); authenticationOptions = { windowMode: WindowMode_1.WindowMode.POPUP }; if (options && options.idpHint) { authenticationOptions.idpHint = options.idpHint; } if (options && options.emailHint) { authenticationOptions.emailHint = options.emailHint; } if (!(!loginResult || !loginResult.authenticated)) return [3 /*break*/, 3]; return [4 /*yield*/, Security_1.Security.login(this.clientId, authenticationOptions, correlationId)]; case 2: loginResult = _a.sent(); _a.label = 3; case 3: result = this.connect._afterAuthenticationForFlowUse(loginResult); if (!result.isAuthenticated) return [3 /*break*/, 7]; return [4 /*yield*/, this.connect.api.getWallets({ secretType: chain.toUpperCase() })]; case 4: wallets = _a.sent(); if (!!(wallets && wallets.length > 0)) return [3 /*break*/, 7]; return [4 /*yield*/, this.manageWallets(chain, { windowMode: WindowMode_1.WindowMode.POPUP })]; case 5: popupResult = _a.sent(); if (!(popupResult && popupResult.status === 'SUCCESS')) return [3 /*break*/, 7]; return [4 /*yield*/, this.connect.api.getWallets({ secretType: chain.toUpperCase() })]; case 6: wallets = _a.sent(); _a.label = 7; case 7: if (!result.isAuthenticated || wallets.length === 0) { throw Error('Something went wrong.'); } return [3 /*break*/, 9]; case 8: e_1 = _a.sent(); console.error(e_1); return [3 /*break*/, 9]; case 9: if (Security_1.Security.hasPopupWindow()) { Security_1.Security.closePopupWindow(); } return [2 /*return*/, { wallets: wallets, auth: loginResult.keycloak, isAuthenticated: loginResult.authenticated }]; } }); }); }; Flows.prototype.manageWalletsRedirect = function (chain, options) { Utils_1.default.http().postInForm(Utils_1.default.urls.connect + "/wallets/manage", { chain: chain.toLowerCase() }, this.connect._bearerTokenProvider, options); return Promise.resolve(); }; Flows.prototype.manageWalletsPopup = function (chain, options) { var _this = this; return DialogWindow_1.DialogWindow.openActionDialog(this.clientId, 'connect-wallet') .then(function () { return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.MANAGE_WALLETS, _this.connect._bearerTokenProvider, { chain: chain.toLowerCase() }, options); }); }; Flows.prototype.linkWalletsRedirect = function (options) { Utils_1.default.http().postInForm(Utils_1.default.urls.connect + "/wallets/link", {}, this.connect._bearerTokenProvider, options); return Promise.resolve(); }; Flows.prototype.performKYCRedirect = function (options) { Utils_1.default.http().postInForm(Utils_1.default.urls.connect + "/verification/sessions", {}, this.connect._bearerTokenProvider, options); return Promise.resolve(); }; Flows.prototype.linkWalletsPopup = function (options) { var _this = this; return DialogWindow_1.DialogWindow.openActionDialog(this.clientId, 'connect-wallet') .then(function () { return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.LINK_WALLET, _this.connect._bearerTokenProvider, undefined, options); }); }; Flows.prototype.performKYCPopup = function (options) { return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.PERFORM_KYC, this.connect._bearerTokenProvider, undefined, options); }; Flows.prototype.claimWalletsRedirect = function (options) { Utils_1.default.http().postInForm(Utils_1.default.urls.connect + "/wallets/claim", {}, this.connect._bearerTokenProvider, options); return Promise.resolve(); }; Flows.prototype.claimWalletsPopup = function (options) { var _this = this; return DialogWindow_1.DialogWindow.openActionDialog(this.clientId, 'claim-wallet') .then(function () { return GeneralPopup_1.GeneralPopup.openNewPopup(PopupActions_1.PopupActions.CLAIM_WALLETS, _this.connect._bearerTokenProvider, undefined, options); }); }; return Flows; }()); exports.Flows = Flows; //# sourceMappingURL=Flows.js.map