packages/lib/reporting-components/fetcher/fetcher.js (33 lines of code) (raw):

const APP_NAMES = { YouTrack: 'YouTrack' }; const cachedParams = { services: {}, dashboardApi: null }; let fetcherInstance; class Fetcher { constructor(dashboardApi) { cachedParams.dashboardApi = dashboardApi; } setService(appName, id) { cachedParams.services[appName] = id; } setYouTrack(id) { this.setService(APP_NAMES.YouTrack, id); } async fetchYouTrack(url, params) { const youtrackId = cachedParams.services[APP_NAMES.YouTrack]; return await cachedParams.dashboardApi.fetch(youtrackId, url, params); } async fetchHub(url, params) { return await cachedParams.dashboardApi.fetchHub(url, params); } } function initFetcher(dashboardApi) { fetcherInstance = new Fetcher(dashboardApi); } export default function fetcher() { return fetcherInstance; } export {initFetcher};