UNPKG

@walletpack/core

Version:

> TODO: description

292 lines (248 loc) 9.68 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 _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); 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 _Blockchains = require("../../models/Blockchains"); var Actions = _interopRequireWildcard(require("../../store/constants")); var _BackendApiService = _interopRequireWildcard(require("../apis/BackendApiService")); var _StoreService = _interopRequireDefault(require("../utility/StoreService")); var _ObjectHelpers = _interopRequireDefault(require("../../util/ObjectHelpers")); var storeApps = function storeApps(res) {}; var AppsService = /*#__PURE__*/ function () { function AppsService() { (0, _classCallCheck2["default"])(this, AppsService); } (0, _createClass2["default"])(AppsService, null, [{ key: "getApps", /*** * Gets apps and binds them to state, * falls back to github if API is failing. * @returns {Promise<boolean>} */ value: function () { var _getApps = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee() { var include, store, imageBackend, filetype, apps, formattedApps, _args = arguments; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: include = _args.length > 0 && _args[0] !== undefined ? _args[0] : []; store = _args.length > 1 && _args[1] !== undefined ? _args[1] : true; imageBackend = _args.length > 2 && _args[2] !== undefined ? _args[2] : 'https://rawgit.com/GetScatter/ScatterApps/master/logos'; filetype = _args.length > 3 && _args[3] !== undefined ? _args[3] : 'svg'; _context.next = 6; return _BackendApiService["default"].apps(include); case 6: apps = _context.sent; formattedApps = apps.reduce(function (acc, x) { if (x.hasOwnProperty('hasimage')) x.img = "".concat(imageBackend, "/").concat(x.applink, ".").concat(filetype); acc[x.applink] = x; return acc; }, {}); if (store && _StoreService["default"].get()) { _StoreService["default"].get().dispatch(Actions.SET_DAPP_DATA, formattedApps); } return _context.abrupt("return", formattedApps); case 10: case "end": return _context.stop(); } } }, _callee); })); function getApps() { return _getApps.apply(this, arguments); } return getApps; }() }, { key: "getFeaturedApps", value: function () { var _getFeaturedApps = (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 (0, _BackendApiService.GET)('apps/featured'); case 2: return _context2.abrupt("return", _context2.sent); case 3: case "end": return _context2.stop(); } } }, _callee2); })); function getFeaturedApps() { return _getFeaturedApps.apply(this, arguments); } return getFeaturedApps; }() }, { key: "getAppDataFromServer", value: function () { var _getAppDataFromServer = (0, _asyncToGenerator2["default"])( /*#__PURE__*/ _regenerator["default"].mark(function _callee3(origin) { return _regenerator["default"].wrap(function _callee3$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: return _context3.abrupt("return", (0, _BackendApiService.GET)("app/".concat(origin))); case 1: case "end": return _context3.stop(); } } }, _callee3); })); function getAppDataFromServer(_x) { return _getAppDataFromServer.apply(this, arguments); } return getAppDataFromServer; }() }, { key: "appIsInLocalData", value: function appIsInLocalData(origin) { var dappData = _StoreService["default"].get().state.dappData || {}; var found = dappData[origin]; if (!found) { (function () { // Checking subdomains if (origin.split('.').length < 2) return; var _origin$split = origin.split('.'), _origin$split2 = (0, _slicedToArray2["default"])(_origin$split, 3), subdomain = _origin$split2[0], domain = _origin$split2[1], suffix = _origin$split2[2]; Object.keys(dappData).map(function (applink) { if (origin.indexOf(applink) === -1) return; var dapp = dappData[applink]; if (!dapp.hasOwnProperty('subdomains') || !dapp.subdomains.length) return; // Checking wildcards if (dapp.subdomains.find(function (x) { return x === '*'; })) { if ("*.".concat(applink) === "*.".concat(domain, ".").concat(suffix)) return found = dapp; } // Checking hardcoded domains else { dapp.subdomains.map(function (sub) { if ("".concat(sub, ".").concat(applink) === origin) return found = dapp; }); } }); })(); } return found; } }, { key: "getAppData", value: function getAppData(origin) { var emptyResult = { applink: origin, type: '', name: origin, description: '', logo: '', url: '' }; var found = AppsService.appIsInLocalData(origin); if (!found) return emptyResult; var maxDescriptionLength = 70; if (found.description.length > maxDescriptionLength) { found.description = "".concat(found.description.substr(0, 70)).concat(found.description.length > 70 ? '...' : ''); } return found; } }, { key: "categories", value: function categories() { var selectedCategory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; return AppsService.appsByCategory(selectedCategory).map(function (x) { return x.type; }); } }, { key: "appsByCategory", value: function appsByCategory() { var selectedCategory = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; var dappData = _StoreService["default"].get().state.dappData; if (!dappData) return {}; return Object.keys(dappData).reduce(function (acc, key) { var item = dappData[key]; if (!acc.find(function (x) { return x.type === item.type; })) acc.push({ type: item.type, apps: [] }); acc.find(function (x) { return x.type === item.type; }).apps.push(item); return acc; }, []).map(function (cat) { _ObjectHelpers["default"].shuffle(cat.apps); if (selectedCategory) return cat; cat.apps = cat.apps.filter(function (_ref) { var applink = _ref.applink; return AppsService.getAppData(applink).hasOwnProperty('img'); }); return cat; }).sort(function (a, b) { return b.apps.length - a.apps.length; }); } }, { key: "appsByTerm", value: function appsByTerm(searchTerm) { var dappData = _StoreService["default"].get().state.dappData; if (!dappData) return {}; return Object.keys(dappData).reduce(function (acc, key) { var item = dappData[key]; var found = function found(prop) { return prop.toLowerCase().trim().indexOf(searchTerm.toLowerCase().trim()) > -1; }; if (found(item.applink) || found(item.name) || found(item.description)) acc.push(item); return acc; }, []); } }, { key: "linkedApps", value: function linkedApps() { var terms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; var typeFilter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null; return _StoreService["default"].get().state.scatter.keychain.permissions.filter(function (x) { return x.isIdentity; }).map(function (_ref2) { var applink = _ref2.origin; return AppsService.getAppData(applink); }).filter(function (app) { return app.type === typeFilter || !typeFilter; }).filter(function (app) { return app.name.toLowerCase().indexOf(terms) > -1; }); } }]); return AppsService; }(); exports["default"] = AppsService;