import { Injectable } from '@angular/core'; import { APIAdminClient } from '@core/typings/api/admin-client.typing'; import { FormLogicService } from '@features/formio/services/form-logic/form-logic.service'; import { AttachYCState, BaseYCService } from '@yourcause/common/state'; import { ProgramFormsResources } from './program-forms.resources'; import { ProgramFormsState } from './program-forms.state'; @Injectable({ providedIn: 'root' }) @AttachYCState(ProgramFormsState) export class ProgramFormsService extends BaseYCService { constructor ( private programFormsResources: ProgramFormsResources, private formLogicService: FormLogicService ) { super(); } get programFormsMap () { return this.get('programFormsMap'); } async getProgramForms (programId: number) { if (!this.programFormsMap[programId]) { const forms = await this.programFormsResources.fetchFormsByProgramId(programId); const adapted = forms.map((form) => { return this.formLogicService.adaptFormForTabs( form, form.formId, form.formRevisionId ); }); this.set('programFormsMap', { ...this.programFormsMap, [programId]: adapted }); } return this.programFormsMap[programId]; } }