@walletpack/core
Version:
> TODO: description
292 lines (248 loc) • 9.68 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 _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;