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
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -17,11 +17,7 @@ export class AccountStore extends EntityStore<IAccountResponse, AccountState> {
private readonly service = inject(AccountsService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -64,11 +60,7 @@ export class AccountStore extends EntityStore<IAccountResponse, AccountState> {
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -20,11 +20,7 @@ export class BusinessActivityStore extends EntityStore<
private readonly service = inject(BusinessActivitiesService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -68,11 +64,7 @@ export class BusinessActivityStore extends EntityStore<
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -17,11 +17,7 @@ export class ConsumerComplexStore extends EntityStore<IComplexResponse, ComplexS
private readonly service = inject(ConsumerComplexesService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -63,11 +59,7 @@ export class ConsumerComplexStore extends EntityStore<IComplexResponse, ComplexS
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -17,11 +17,7 @@ export class PosStore extends EntityStore<IPosResponse, PosState> {
private readonly service = inject(ConsumerPosesService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -64,11 +60,7 @@ export class PosStore extends EntityStore<IPosResponse, PosState> {
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -17,11 +17,7 @@ export class ConsumerCustomerStore extends EntityStore<ICustomerResponse, Consum
private readonly service = inject(CustomersService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -67,11 +63,7 @@ export class ConsumerCustomerStore extends EntityStore<ICustomerResponse, Consum
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -20,11 +20,7 @@ export class ConsumerCustomerSaleInvoiceStore extends EntityStore<
private readonly service = inject(CustomerSaleInvoicesService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -71,11 +67,7 @@ export class ConsumerCustomerSaleInvoiceStore extends EntityStore<
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -1,4 +1,4 @@
import { EntityState, EntityStore } from '@/core/state';
import { defaultBaseStateData, EntityState, EntityStore } from '@/core/state';
import { computed, inject, Injectable } from '@angular/core';
import { MenuItem } from 'primeng/api';
import { catchError, finalize } from 'rxjs';
@@ -17,11 +17,7 @@ export class ConsumerPosStore extends EntityStore<IPosResponse, ConsumerPosState
private readonly service = inject(ConsumerPosesService);
constructor() {
super({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
@@ -64,11 +60,7 @@ export class ConsumerPosStore extends EntityStore<IPosResponse, ConsumerPosState
override reset(): void {
this.setState({
loading: false,
error: null,
entity: null,
initialized: false,
isRefreshing: false,
...defaultBaseStateData,
breadcrumbItems: [],
});
}
+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,
});
}
}