@walletpack/core
Version:
> TODO: description
420 lines (360 loc) • 13.9 kB
JavaScript
;
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;