Skip to content

Commit 4cd9a09

Browse files
authored
Merge pull request #630 from bcgov/ccfri-4449-declaration-speed-2.3.x
Summary Declaration Performance Adjustments
2 parents 3d92d51 + 3cf13c0 commit 4cd9a09

File tree

2 files changed

+27
-28
lines changed

2 files changed

+27
-28
lines changed

frontend/src/store/summaryDeclaration.js

+22-28
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { defineStore } from 'pinia';
2+
import pLimit from 'p-limit';
23

34
import ApiService from '@/common/apiService.js';
45
import { useAppStore } from '@/store/app.js';
@@ -41,59 +42,49 @@ async function mapFacility(facility) {
4142
const appStore = useAppStore();
4243
let facilityLicenseResponse = undefined;
4344
try {
44-
facilityLicenseResponse = (
45-
await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}/licenseCategories`)
46-
).data;
47-
facility.licenseCategories = parseLicenseCategories(facilityLicenseResponse);
45+
facilityLicenseResponse = await ApiService.apiAxios.get(
46+
`${ApiRoutes.FACILITY}/${facility.facilityId}/licenseCategories`,
47+
);
48+
facility.licenseCategories = parseLicenseCategories(facilityLicenseResponse.data);
4849
} catch {
4950
console.log('error, unable to get childcare category for provider: ', facility.facilityId);
5051
}
5152

5253
// check for opt out - no need for more calls if opt-out
5354
if (facility.ccfri?.ccfriId && facility.ccfri?.ccfriOptInStatus == 1) {
54-
const ccfriPromises = [ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.ccfriId}`)];
55-
const afterLoadHooks = [
56-
(data) => {
57-
facility.ccfri.childCareTypes = data.childCareTypes;
58-
facility.ccfri.dates = data.dates;
59-
},
60-
];
55+
const ccfri = await ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.ccfriId}`);
56+
facility.ccfri.childCareTypes = ccfri.data.childCareTypes;
57+
facility.ccfri.dates = ccfri.data.dates;
6158

6259
// load up the previous ccfri app if it exists, so we can check that we are not missing any child care fee
6360
// categories from the last year.
6461
if (facility.ccfri.previousCcfriId) {
65-
ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.previousCcfriId}`));
66-
afterLoadHooks.push((data) => (facility.ccfri.prevYearCcfriApp = data));
62+
const previousCcfriid = await ApiService.apiAxios.get(
63+
`${ApiRoutes.CCFRIFACILITY}/${facility.ccfri.previousCcfriId}`,
64+
);
65+
facility.ccfri.prevYearCcfriApp = previousCcfriid.data;
6766
}
6867

6968
if (facility.ccfri?.hasRfi || facility.ccfri?.unlockRfi) {
70-
ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_RFI}/${facility.ccfri.ccfriId}/rfi`));
71-
afterLoadHooks.push((data) => (facility.rfiApp = data));
69+
const rfiApp = await ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_RFI}/${facility.ccfri.ccfriId}/rfi`);
70+
facility.rfiApp = rfiApp.data;
7271
}
7372

7473
if (facility.ccfri?.hasNmf || facility.ccfri?.unlockNmf) {
75-
ccfriPromises.push(ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_NMF}/${facility.ccfri.ccfriId}/nmf`));
76-
afterLoadHooks.push((data) => (facility.nmfApp = data));
74+
const nmfApp = await ApiService.apiAxios.get(`${ApiRoutes.APPLICATION_NMF}/${facility.ccfri.ccfriId}/nmf`);
75+
facility.nmfApp = nmfApp.data;
7776
}
7877

79-
const APIResponses = await Promise.all(ccfriPromises);
80-
const dataFromResponses = APIResponses.map((res) => res.data);
81-
8278
facility.ccfri.childCareLicenses = facilityLicenseResponse; // jb - so I can build the CCFRI section
8379
const ccofProgramYearId = applicationStore.programYearId;
8480
const programYearList = appStore.programYearList.list;
8581
facility.ccfri.currentYear = getProgramYear(ccofProgramYearId, programYearList);
8682
facility.ccfri.prevYear = getProgramYear(facility.ccfri.currentYear.previousYearId, programYearList);
87-
88-
for (let i = 0; i < afterLoadHooks.length; i++) {
89-
const hook = afterLoadHooks[i];
90-
const data = dataFromResponses[i];
91-
hook(data);
92-
}
9383
}
9484

9585
// jb changed below to work with renewel apps
96-
facility.facilityInfo = (await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}`)).data;
86+
const facilityInfo = await ApiService.apiAxios.get(`${ApiRoutes.FACILITY}/${facility.facilityId}`);
87+
facility.facilityInfo = facilityInfo.data;
9788

9889
return facility;
9990
}
@@ -289,9 +280,12 @@ export const useSummaryDeclarationStore = defineStore('summaryDeclaration', {
289280

290281
try {
291282
const mappedFacilities = [];
283+
const limit = pLimit(3);
284+
292285
for (const facility of summaryModel.facilities) {
293-
mappedFacilities.push(mapFacility(facility));
286+
mappedFacilities.push(limit(() => mapFacility(facility)));
294287
}
288+
295289
summaryModel.facilities = await Promise.all(mappedFacilities);
296290
} catch (error) {
297291
console.log(`Failed to load Summary - ${error}`);

package.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"dependencies": {
3+
"p-limit": "^6.2.0"
4+
}
5+
}

0 commit comments

Comments
 (0)