ui5plugin-parser
Version:
39 lines (38 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SAPIcons = void 0;
const URLBuilder_1 = require("../http/URLBuilder");
const IFileReader_1 = require("../parsing/util/filereader/IFileReader");
class SAPIcons {
constructor(parser) {
this.icons = [];
this.parser = parser;
}
async preloadIcons() {
this.icons = this.parser.fileReader.getCache(IFileReader_1.IFileReader.CacheType.Icons);
if (!this.icons) {
this.icons = await this._loadIcons();
this.parser.fileReader.setCache(IFileReader_1.IFileReader.CacheType.Icons, JSON.stringify(this.icons));
}
}
async _loadIcons() {
const uris = new URLBuilder_1.URLBuilder(this.parser.configHandler).getIconURIs();
let icons = [];
const aIconResponses = await Promise.all(uris.map(uri => this._requestJSONData(uri)));
aIconResponses.forEach((iconResponse) => {
let uniqueIcons = [];
iconResponse.groups.forEach((group) => {
uniqueIcons = uniqueIcons.concat(group.icons);
});
uniqueIcons = uniqueIcons.map(icon => `sap-icon://${icon.name}`);
icons = icons.concat(uniqueIcons);
});
icons = [...new Set(icons)];
return icons;
}
async _requestJSONData(uri) {
const data = await this.parser.httpHandler.get(uri);
return data;
}
}
exports.SAPIcons = SAPIcons;