import { EntityState, EntityStore } from '@/core/state'; import { LayoutService } from '@/layout/service/layout.service'; import { inject, Injectable } from '@angular/core'; import { catchError, finalize } from 'rxjs'; import { IPartnerResponse } from '../models'; import { PartnerService } from '../services/main.service'; interface PartnerState extends EntityState {} @Injectable({ providedIn: 'root', }) export class PartnerStore extends EntityStore { private readonly service = inject(PartnerService); private readonly layoutService = inject(LayoutService); constructor() { super({ loading: false, error: null, entity: null, initialized: false, isRefreshing: false, }); } getData() { this.patchState({ loading: true }); this.service .getMe() .pipe( finalize(() => { this.patchState({ loading: false }); }), catchError((error) => { this.setError(error); throw error; }), ) .subscribe((entity) => { this.layoutService.setPanelInfo({ title: `پنل مدیریتی ${entity.partner.name}`, }); this.setEntity(entity); }); } override reset(): void { this.setState({ loading: false, error: null, entity: null, initialized: false, isRefreshing: false, }); } }