UNPKG

@walletpack/core

Version:

> TODO: description

420 lines (360 loc) 13.9 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var Actions = _interopRequireWildcard(require("../../store/constants")); var _Token = _interopRequireDefault(require("../../models/Token")); var _BackendApiService = require("./BackendApiService"); var _StoreService = _interopRequireDefault(require("../utility/StoreService")); var _DateHelpers = require("../../util/DateHelpers"); // Once every 30 minutes. var intervalTime = 60000 * 30; var priceInterval; var PriceService = /*#__PURE__*/ function () { function PriceService() { (0, _classCallCheck2["default"])(this, PriceService); } (0, _createClass2["default"])(PriceService, null, [{ key: "watchPrices", value: function () { var _watchPrices = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee4() { var enable, _args4 = arguments; return _regenerator["default"].wrap(function _callee4$(_context4) { while (1) { switch (_context4.prev = _context4.next) { case 0: enable = _args4.length > 0 && _args4[0] !== undefined ? _args4[0] : true; clearInterval(priceInterval); if (enable) { _context4.next = 4; break; } return _context4.abrupt("return"); case 4: return _context4.abrupt("return", new Promise( /*#__PURE__*/ function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee3(resolve) { var setPrices; return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: setPrices = /*#__PURE__*/ function () { var _ref2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee() { return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.next = 2; return PriceService.setPrices(); case 2: resolve(true); case 3: case "end": return _context.stop(); } } }, _callee); })); return function setPrices() { return _ref2.apply(this, arguments); }; }(); _context3.next = 3; return setPrices(); case 3: priceInterval = setInterval( /*#__PURE__*/ (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee2() { return _regenerator["default"].wrap(function _callee2$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.next = 2; return setPrices(); case 2: case "end": return _context2.stop(); } } }, _callee2); })), intervalTime); case 4: case "end": return _context3.stop(); } } }, _callee3); })); return function (_x) { return _ref.apply(this, arguments); }; }())); case 5: case "end": return _context4.stop(); } } }, _callee4); })); function watchPrices() { return _watchPrices.apply(this, arguments); } return watchPrices; }() }, { key: "setPrices", value: function () { var _setPrices = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee5() { var prices; return _regenerator["default"].wrap(function _callee5$(_context5) { while (1) { switch (_context5.prev = _context5.next) { case 0: _context5.next = 2; return PriceService.getAll(); case 2: prices = _context5.sent; if (!(prices && Object.keys(prices).length)) { _context5.next = 6; break; } _context5.next = 6; return _StoreService["default"].get().dispatch(Actions.SET_PRICES, prices); case 6: case "end": return _context5.stop(); } } }, _callee5); })); function setPrices() { return _setPrices.apply(this, arguments); } return setPrices; }() }, { key: "getAll", value: function getAll() { return Promise.race([new Promise(function (resolve) { return setTimeout(function () { return resolve(false); }, 10000); }), (0, _BackendApiService.GET)("prices?v2=true")["catch"](function () { return { error: "Problem connecting to Prices API" }; })]); } }, { key: "getCurrencies", value: function () { var _getCurrencies = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee6() { return _regenerator["default"].wrap(function _callee6$(_context6) { while (1) { switch (_context6.prev = _context6.next) { case 0: return _context6.abrupt("return", Promise.race([new Promise(function (resolve) { return setTimeout(function () { return resolve(false); }, 10000); }), (0, _BackendApiService.GET)('currencies')["catch"](function () { return ['USD']; })])); case 1: case "end": return _context6.stop(); } } }, _callee6); })); function getCurrencies() { return _getCurrencies.apply(this, arguments); } return getCurrencies; }() }, { key: "getCurrencyPrices", value: function () { var _getCurrencyPrices = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee7() { return _regenerator["default"].wrap(function _callee7$(_context7) { while (1) { switch (_context7.prev = _context7.next) { case 0: return _context7.abrupt("return", Promise.race([new Promise(function (resolve) { return setTimeout(function () { return resolve(false); }, 10000); }), (0, _BackendApiService.GET)('currencies/prices')["catch"](function () { return null; })])); case 1: case "end": return _context7.stop(); } } }, _callee7); })); function getCurrencyPrices() { return _getCurrencyPrices.apply(this, arguments); } return getCurrencyPrices; }() }, { key: "loadPriceTimelineData", value: function () { var _loadPriceTimelineData = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee8() { var prices, yesterday, today; return _regenerator["default"].wrap(function _callee8$(_context8) { while (1) { switch (_context8.prev = _context8.next) { case 0: _context8.next = 2; return PriceService.getCurrencyPrices(); case 2: prices = _context8.sent; _context8.next = 5; return PriceService.getTimeline((0, _DateHelpers.dateId)(1)); case 5: yesterday = _context8.sent; _context8.next = 8; return PriceService.getTimeline(); case 8: today = _context8.sent; _context8.next = 11; return _StoreService["default"].get().dispatch(Actions.SET_PRICE_DATA, { prices: prices, yesterday: yesterday, today: today }); case 11: return _context8.abrupt("return", { prices: prices, yesterday: yesterday, today: today }); case 12: case "end": return _context8.stop(); } } }, _callee8); })); function loadPriceTimelineData() { return _loadPriceTimelineData.apply(this, arguments); } return loadPriceTimelineData; }() }, { key: "getTimeline", value: function () { var _getTimeline = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee9() { var date, query, _args9 = arguments; return _regenerator["default"].wrap(function _callee9$(_context9) { while (1) { switch (_context9.prev = _context9.next) { case 0: date = _args9.length > 0 && _args9[0] !== undefined ? _args9[0] : null; query = date ? "?date=".concat(date) : ''; return _context9.abrupt("return", Promise.race([new Promise(function (resolve) { return setTimeout(function () { return resolve(false); }, 10000); }), (0, _BackendApiService.GET)('prices/timeline' + query)["catch"](function () {})])); case 3: case "end": return _context9.stop(); } } }, _callee9); })); function getTimeline() { return _getTimeline.apply(this, arguments); } return getTimeline; }() }, { key: "getTotal", value: function getTotal(totals, displayCurrency, bypassDisplayToken, displayToken) { if (!displayCurrency) displayCurrency = _StoreService["default"].get().state.scatter.settings.displayCurrency; if (!bypassDisplayToken && displayToken) { if (totals.hasOwnProperty(displayToken)) return totals[displayToken];else { var token = (displayToken instanceof _Token["default"] ? displayToken : _Token["default"].fromUnique(displayToken)).clone(); token.amount = parseFloat(0).toFixed(token.decimals); return token; } } else { var total = 0; Object.keys(_StoreService["default"].get().state.prices).map(function (tokenUnique) { var balance = totals[tokenUnique]; if (balance) { var price = _StoreService["default"].get().state.prices[tokenUnique][displayCurrency]; var value = parseFloat(parseFloat(balance.amount) * parseFloat(price)); if (isNaN(value)) return; total += value; } }); return _Token["default"].fromJson({ symbol: this.fiatSymbol(displayCurrency), amount: total.toFixed(2), decimals: 2 }); } } }, { key: "fiatSymbol", value: function fiatSymbol(currency) { if (!currency) currency = _StoreService["default"].get().state.scatter.settings.displayCurrency; switch (currency) { case 'USD': case 'AUD': case 'CAD': return '$'; case 'CNY': case 'JPY': return '¥'; case 'EUR': return '€'; case 'GBP': return '£'; default: return currency; } } }]); return PriceService; }(); exports["default"] = PriceService;