import { Injectable } from '@angular/core'; import { Resolve } from '@angular/router'; import { BudgetResolver } from '@features/budgets/resolvers/budget.resolver'; import { FundingSourceResolver } from '@features/funding-sources/resolvers/funding-source.resolver'; import { EmailResolver } from '@features/system-emails/resolvers/email.resolver'; import { SystemTagsResolver } from '@features/system-tags/resolvers/system-tags.resolver'; import { SystemTagsService } from '@features/system-tags/system-tags.service'; import { SystemTags } from '@features/system-tags/typings/system-tags.typing'; import { TypeaheadSelectOption } from '@yourcause/common'; @Injectable({ providedIn: 'root' }) export class AwardModalResolver implements Resolve<{ availableTags: TypeaheadSelectOption[]; }> { constructor ( private emailResolver: EmailResolver, private budgetResolver: BudgetResolver, private fundingSourceResolver: FundingSourceResolver, private systemTagsResolver: SystemTagsResolver, private tagsService: SystemTagsService ) { } async resolve () { await Promise.all([ this.emailResolver.resolve(), this.budgetResolver.resolve(), this.fundingSourceResolver.resolve(), this.systemTagsResolver.resolve() ]); return { availableTags: this.tagsService.getTagOptions(SystemTags.Buckets.Payment) }; } }