import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state'; import { LayoutService } from '@/layout/service/layout.service'; import { inject, Injectable } from '@angular/core'; import { catchError, finalize } from 'rxjs'; import { IConsumerInfoResponse } from '../models'; import { consumerProfileNamedRoutes } from '../modules/profile/constants'; import { ConsumerService } from '../services/main.service'; interface ConsumerState extends EntityState {} @Injectable({ providedIn: 'root', }) export class ConsumerStore extends EntityStore { private readonly service = inject(ConsumerService); private readonly layoutService = inject(LayoutService); constructor() { super({ ...defaultBaseStateData, }); } getData() { this.patchState({ loading: true }); this.service .getInfo() .pipe( finalize(() => { this.patchState({ loading: false }); }), catchError((error) => { this.setError(error); throw error; }), ) .subscribe((entity) => { this.layoutService.setPanelInfo({ title: 'پنل مدیریت صورت‌حساب‌های مالیاتی', }); this.layoutService.setProfilePageRoute( consumerProfileNamedRoutes.profile.meta!.pagePath!(), ); this.patchState({ entity }); }); } override reset(): void { this.setState({ ...defaultBaseStateData, }); } }