refactor: streamline state initialization across stores using defaultBaseStateData

- Replaced individual state properties (loading, error, entity, initialized, isRefreshing) with a spread of defaultBaseStateData in various entity stores including AccountStore, BusinessActivityStore, ConsumerComplexStore, PosStore, and others.
- Updated imports to include defaultBaseStateData in relevant store files.
- Enhanced consistency in state management across multiple stores.

feat: add partner profile management components and services

- Introduced PartnerProfileFormComponent and PartnerResetPasswordCardComponent for profile editing and password reset functionalities.
- Created ProfileService to handle API interactions for partner profile management.
- Added routes and constants for partner profile API and navigation.
- Implemented UI components for displaying and editing partner profile information in single.component.html and single.component.ts.
This commit is contained in:
2026-05-18 13:19:58 +03:30
parent 79c00e0149
commit c135e1a85f
35 changed files with 352 additions and 198 deletions
+7 -11
View File
@@ -1,8 +1,9 @@
import { EntityState, EntityStore } from '@/core/state';
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<IConsumerInfoResponse> {}
@@ -16,11 +17,7 @@ export class ConsumerStore extends EntityStore<IConsumerInfoResponse, ConsumerSt
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
});
}
@@ -41,17 +38,16 @@ export class ConsumerStore extends EntityStore<IConsumerInfoResponse, ConsumerSt
this.layoutService.setPanelInfo({
title: 'پنل مدیریت صورت‌حساب‌های مالیاتی',
});
this.layoutService.setProfilePageRoute(
consumerProfileNamedRoutes.profile.meta!.pagePath!(),
);
this.patchState({ entity });
});
}
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
});
}
}