@venly/connect
Version:
Venly Connect SDK
178 lines • 9.64 kB
JavaScript
"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