import { IProductData } from '@nitrots/api'; import { GetConfiguration } from '@nitrots/configuration'; import { loadGamedata } from '@nitrots/utils'; import { ProductData } from './ProductData'; export class ProductDataLoader { private _products: Map; constructor(products: Map) { this._products = products; } public async init(): Promise { const url = GetConfiguration().getValue('productdata.url'); if(!url || !url.length) throw new Error('Missing "productdata.url" in config — add the product data URL to your renderer-config.json'); let responseData: any; try { responseData = await loadGamedata(url); } catch(err) { throw new Error(`Could not load product data from "${ url }" — check "productdata.url" in renderer-config.json (${ err?.message || err })`); } this.parseProducts(responseData.productdata); } private parseProducts(data: { [index: string]: any }): void { if(!data) return; for(const product of data.product) (product && this._products.set(product.code, new ProductData(product.code, product.name, product.description))); } }