این سند تغییرات اعمال شده در بازسازی کد پروژه PtMedia را مستند میکند.
فایل: src/app/shared/structure/share/share.service.ts
تغییرات:
- بهبود خوانایی کد با استفاده از readonly properties
- اضافه کردن type safety بهتر
- بهبود error handling
- اضافه کردن متدهای utility جدید
قبل:
toast = new Subject<any>();
routeService = this.route;
FormBuilderService = this.fb;بعد:
public readonly toast$ = new Subject<Message>();
public readonly router = this._router;
public readonly formBuilder = this._formBuilder;فایل: src/app/shared/structure/session/session.service.ts
تغییرات:
- اضافه کردن generic types
- بهبود error handling
- اضافه کردن متدهای جدید
- حفظ backward compatibility
قابلیتهای جدید:
setItem<T>()وgetItem<T>()با type safetyhasItem()برای بررسی وجود آیتمgetKeys()برای دریافت تمام کلیدهاsetMultipleItems()برای تنظیم چندین آیتم
فایل: src/app/shared/services/error-handler.service.ts
ویژگیها:
- مدیریت متمرکز خطاها
- پشتیبانی از انواع مختلف خطا (HTTP, Application)
- نمایش toast messages خودکار
- متدهای utility برای نمایش پیامهای مختلف
فایل: src/app/shared/services/api.service.ts
ویژگیها:
- سرویس پایه برای تمام API calls
- Error handling خودکار
- پشتیبانی از تمام HTTP methods
- مدیریت پارامترها و headers
فایل: src/app/shared/services/state.service.ts
ویژگیها:
- مدیریت متمرکز state اپلیکیشن
- پشتیبانی از localStorage
- Observable برای تغییرات state
- Type safety کامل
فایل: src/app/shared/structure/loading/loading/loading.service.ts
تغییرات:
- استفاده از StateService
- اضافه کردن متدهای جدید
- بهبود performance
فایل: src/app/shared/interceptor/fx.interceptor.ts
تغییرات:
- سادهسازی کد
- استفاده از ErrorHandlerService
- بهبود error handling
- حذف کد تکراری
فایل: src/app/shared/constants/app.constants.ts
محتوای:
- API endpoints
- HTTP status codes
- Toast messages
- Validation rules
- File upload settings
- Pagination settings
- Storage keys
- Routes
- Themes
- Languages
- User roles
فایل: src/app/shared/model/Toast.ts
تغییرات:
- سازگاری با Message interface از PrimeNG
- بهبود type safety
- اضافه کردن properties جدید
constructor(private apiService: ApiService) {}
// GET request
this.apiService.get<User[]>('users').subscribe(users => {
console.log(users);
});
// POST request
this.apiService.post<User>('users', userData).subscribe(user => {
console.log(user);
});constructor(private errorHandler: ErrorHandlerService) {}
// نمایش پیام موفقیت
this.errorHandler.showSuccess('Data saved successfully');
// نمایش پیام خطا
this.errorHandler.showError('Something went wrong');constructor(private stateService: StateService) {}
// تنظیم loading state
this.stateService.setLoading(true);
// دریافت current user
const user = this.stateService.getStateProperty('currentUser');
// مشاهده تغییرات
this.stateService.observeProperty('isLoading').subscribe(isLoading => {
console.log('Loading:', isLoading);
});src/app/shared/
├── services/
│ ├── api.service.ts
│ ├── error-handler.service.ts
│ └── state.service.ts
├── constants/
│ └── app.constants.ts
├── structure/
│ ├── share/
│ │ └── share.service.ts (بازسازی شده)
│ ├── session/
│ │ └── session.service.ts (بازسازی شده)
│ └── loading/
│ └── loading.service.ts (بازسازی شده)
├── interceptor/
│ └── fx.interceptor.ts (بازسازی شده)
└── model/
└── Toast.ts (بازسازی شده)
- خوانایی بهتر: کد تمیزتر و قابل فهمتر
- Type Safety: پشتیبانی کامل از TypeScript
- Error Handling: مدیریت متمرکز خطاها
- Maintainability: نگهداری آسانتر
- Reusability: کامپوننتهای قابل استفاده مجدد
- Performance: بهبود عملکرد
- Testing: تستپذیری بهتر
- جایگزینی HttpClient با ApiService
- استفاده از ErrorHandlerService برای نمایش پیامها
- استفاده از StateService برای مدیریت state
- استفاده از ShareService جدید
- استفاده از LoadingService جدید
- استفاده از constants برای مقادیر ثابت
- تمام تغییرات backward compatible هستند
- تستهای موجود باید بهروزرسانی شوند
- مستندات API باید بهروزرسانی شوند
- کدهای قدیمی به تدریج حذف شوند
- بازسازی سایر سرویسها با استفاده از ApiService
- اضافه کردن unit tests
- بهبود error handling
- اضافه کردن logging
- بهینهسازی performance