@walletpack/core
Version:
> TODO: description
139 lines (116 loc) • 4.78 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _Blockchains = require("./Blockchains");
var _IdGenerator = _interopRequireDefault(require("../util/IdGenerator"));
var _Token = _interopRequireDefault(require("./Token"));
var _PluginRepository = _interopRequireDefault(require("../plugins/PluginRepository"));
var _StoreService = _interopRequireDefault(require("../services/utility/StoreService"));
var Network =
/*#__PURE__*/
function () {
function Network() {
var _name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var _protocol = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'https';
var _host = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
var _port = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var blockchain = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
var chainId = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : '';
var _path = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : '';
(0, _classCallCheck2["default"])(this, Network);
this.id = _IdGenerator["default"].numeric(12);
this.name = _name;
this.protocol = _protocol;
this.host = _host;
this.port = _port;
this.path = _path;
this.blockchain = blockchain;
this.chainId = chainId.toString();
this.fromOrigin = null;
this.createdAt = +new Date();
this.token = null;
}
(0, _createClass2["default"])(Network, [{
key: "unique",
value: function unique() {
return ("".concat(this.blockchain, ":") + (this.chainId.length ? "chain:".concat(this.chainId) : "".concat(this.host, ":").concat(this.port))).toLowerCase();
}
}, {
key: "fullhost",
value: function fullhost() {
return "".concat(this.protocol, "://").concat(this.host).concat(this.port ? ':' : '').concat(this.port).concat(this.path ? this.path : '');
}
}, {
key: "clone",
value: function clone() {
return Network.fromJson(JSON.parse(JSON.stringify(this)));
}
}, {
key: "isValid",
value: function isValid() {
if (!_Blockchains.BlockchainsArray.map(function (x) {
return x.value;
}).includes(this.blockchain)) return false;
return this.host.length && this.port.toString().length && this.chainId.length;
}
}, {
key: "setPort",
value: function setPort() {
if (!this.port) this.port = 80;
if (![80, 443].includes(parseInt(this.port))) return;
this.port = this.protocol === 'http' ? 80 : 443;
}
}, {
key: "systemToken",
value: function systemToken() {
if (this.token) return this.token;
var token = _PluginRepository["default"].plugin(this.blockchain).defaultToken();
token.chainId = this.chainId;
return token;
}
}, {
key: "accounts",
value: function accounts() {
var _this = this;
var unique = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var accounts = _StoreService["default"].get().state.scatter.keychain.accounts.filter(function (x) {
return x.networkUnique === _this.unique();
});
if (!unique) return accounts;
return accounts.reduce(function (acc, account) {
if (!acc.find(function (x) {
return account.network().unique() === x.network().unique() && account.sendable() === x.sendable();
})) acc.push(account);
return acc;
}, []);
}
}], [{
key: "placeholder",
value: function placeholder() {
return new Network();
}
}, {
key: "fromJson",
value: function fromJson(json) {
var p = Object.assign(Network.placeholder(), json);
p.chainId = p.chainId ? p.chainId.toString() : '';
p.token = json.hasOwnProperty('token') && json.token ? _Token["default"].fromJson(json.token) : null;
return p;
}
}, {
key: "fromUnique",
value: function fromUnique(netString) {
var blockchain = netString.split(':')[0];
if (netString.indexOf(':chain:') > -1) return new Network('', '', '', '', blockchain, netString.replace("".concat(blockchain, ":chain:"), ''));
var splits = netString.replace("".concat(blockchain, ":"), '').split(':');
return new Network('', '', splits[0], parseInt(splits[1] || 80), blockchain);
}
}]);
return Network;
}();
exports["default"] = Network;