UNPKG

@walletpack/core

Version:

> TODO: description

185 lines (166 loc) 6.34 kB
"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 _PluginRepository = _interopRequireDefault(require("../plugins/PluginRepository")); var _Blockchains = require("./Blockchains"); var _Token = _interopRequireDefault(require("./Token")); var _StoreService = _interopRequireDefault(require("../services/utility/StoreService")); var Account = /*#__PURE__*/ function () { function Account() { (0, _classCallCheck2["default"])(this, Account); this.keypairUnique = ''; this.networkUnique = ''; this.publicKey = ''; this.name = ''; this.authority = ''; this.logins = 0; this.createdAt = +new Date(); this.fromOrigin = null; } (0, _createClass2["default"])(Account, [{ key: "sendable", value: function sendable() { return _PluginRepository["default"].plugin(this.blockchain()).accountsAreImported() ? this.name : this.publicKey; } }, { key: "formatted", value: function formatted() { return _PluginRepository["default"].plugin(this.blockchain()).accountFormatter(this); } }, { key: "network", value: function network() { var _this = this; return _StoreService["default"].get().state.scatter.settings.networks.find(function (x) { return x.unique() === _this.networkUnique; }); } }, { key: "keypair", value: function keypair() { var _this2 = this; return _StoreService["default"].get().state.scatter.keychain.keypairs.find(function (x) { return x.unique() === _this2.keypairUnique; }); } }, { key: "blockchain", value: function blockchain() { var _this3 = this; if (!this.keypair()) return console.error('account.blockchain() error'); return this.keypair().publicKeys.find(function (x) { return x.key === _this3.publicKey; }).blockchain; } }, { key: "authorities", value: function authorities() { var _this4 = this; var thisKeyOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; if (!this.authority.length) return []; return _StoreService["default"].get().state.scatter.keychain.accounts.filter(function (x) { return x.identifiable() === _this4.identifiable() && (!thisKeyOnly || x.keypairUnique === _this4.keypairUnique); }).sort(function (a, b) { return a.authority.localeCompare(b.authority); }); } }, { key: "hasDangerousAuthority", value: function hasDangerousAuthority() { return this.authorities().find(function (x) { return x.authority === 'owner'; }); } }, { key: "unique", value: function unique() { return this.keypairUnique + this.networkUnique + this.name + this.authority + this.publicKey; } }, { key: "identifiable", value: function identifiable() { return this.networkUnique + this.sendable(); } }, { key: "clone", value: function clone() { return Account.fromJson(JSON.parse(JSON.stringify(this))); } }, { key: "asReturnable", value: function asReturnable() { var returnable = _PluginRepository["default"].plugin(this.blockchain()).returnableAccount(this); returnable.chainId = this.network().chainId; returnable.isHardware = !!this.keypair().external; return returnable; } }, { key: "tokenCount", value: function tokenCount() { var systemToken = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; if (!_StoreService["default"].get().state.balances) return 0; if (!_StoreService["default"].get().state.balances.hasOwnProperty(this.identifiable())) return 0; if (!_StoreService["default"].get().state.balances[this.identifiable()]) return 0; return _StoreService["default"].get().state.balances[this.identifiable()].filter(function (x) { return !systemToken ? true : x.identifiable() !== systemToken.identifiable(); }).length; } }, { key: "tokens", value: function tokens() { var base = [this.network().systemToken()]; if (!_StoreService["default"].get().state.balances) return base; if (!_StoreService["default"].get().state.balances.hasOwnProperty(this.identifiable())) return base; if (!_StoreService["default"].get().state.balances[this.identifiable()]) return base; return _StoreService["default"].get().state.balances[this.identifiable()]; } }, { key: "balanceFor", value: function balanceFor(token) { return this.tokens().find(function (x) { return x.uniqueWithChain() === token.uniqueWithChain(); }); } }, { key: "systemBalance", value: function systemBalance() { var _this5 = this; var withSymbol = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; if (!_StoreService["default"].get().state.balances) return 0; if (!_StoreService["default"].get().state.balances.hasOwnProperty(this.identifiable())) return 0; if (!_StoreService["default"].get().state.balances[this.identifiable()]) return 0; var systemBalance = _StoreService["default"].get().state.balances[this.identifiable()].find(function (x) { return _Token["default"].fromJson(x).identifiable() === _this5.network().systemToken().identifiable(); }); if (!systemBalance) return 0; return "".concat(systemBalance.amount, " ").concat(withSymbol ? systemBalance.symbol : ''); } }, { key: "totalFiatBalance", value: function totalFiatBalance() { return this.tokens().reduce(function (acc, x) { acc += x.fiatBalance(false) ? parseFloat(x.fiatBalance(false)) : 0; return acc; }, 0).toFixed(2); } }], [{ key: "placeholder", value: function placeholder() { return new Account(); } }, { key: "fromJson", value: function fromJson(json) { return Object.assign(this.placeholder(), json); } }]); return Account; }(); exports["default"] = Account;