Skip to content

Latest commit

 

History

History
217 lines (171 loc) · 6.26 KB

File metadata and controls

217 lines (171 loc) · 6.26 KB

بازسازی کد پروژه PtMedia

خلاصه تغییرات

این سند تغییرات اعمال شده در بازسازی کد پروژه PtMedia را مستند می‌کند.

🏗️ تغییرات اصلی

1. بازسازی ShareService

فایل: 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;

2. بازسازی SessionService

فایل: src/app/shared/structure/session/session.service.ts

تغییرات:

  • اضافه کردن generic types
  • بهبود error handling
  • اضافه کردن متدهای جدید
  • حفظ backward compatibility

قابلیت‌های جدید:

  • setItem<T>() و getItem<T>() با type safety
  • hasItem() برای بررسی وجود آیتم
  • getKeys() برای دریافت تمام کلیدها
  • setMultipleItems() برای تنظیم چندین آیتم

3. ایجاد ErrorHandlerService

فایل: src/app/shared/services/error-handler.service.ts

ویژگی‌ها:

  • مدیریت متمرکز خطاها
  • پشتیبانی از انواع مختلف خطا (HTTP, Application)
  • نمایش toast messages خودکار
  • متدهای utility برای نمایش پیام‌های مختلف

4. ایجاد ApiService

فایل: src/app/shared/services/api.service.ts

ویژگی‌ها:

  • سرویس پایه برای تمام API calls
  • Error handling خودکار
  • پشتیبانی از تمام HTTP methods
  • مدیریت پارامترها و headers

5. ایجاد StateService

فایل: src/app/shared/services/state.service.ts

ویژگی‌ها:

  • مدیریت متمرکز state اپلیکیشن
  • پشتیبانی از localStorage
  • Observable برای تغییرات state
  • Type safety کامل

6. بازسازی LoadingService

فایل: src/app/shared/structure/loading/loading/loading.service.ts

تغییرات:

  • استفاده از StateService
  • اضافه کردن متدهای جدید
  • بهبود performance

7. بازسازی Interceptor

فایل: src/app/shared/interceptor/fx.interceptor.ts

تغییرات:

  • ساده‌سازی کد
  • استفاده از ErrorHandlerService
  • بهبود error handling
  • حذف کد تکراری

8. ایجاد Constants

فایل: 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

9. بازسازی Toast Model

فایل: src/app/shared/model/Toast.ts

تغییرات:

  • سازگاری با Message interface از PrimeNG
  • بهبود type safety
  • اضافه کردن properties جدید

🔧 نحوه استفاده

استفاده از ApiService

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);
});

استفاده از ErrorHandlerService

constructor(private errorHandler: ErrorHandlerService) {}

// نمایش پیام موفقیت
this.errorHandler.showSuccess('Data saved successfully');

// نمایش پیام خطا
this.errorHandler.showError('Something went wrong');

استفاده از StateService

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 (بازسازی شده)

🚀 مزایای بازسازی

  1. خوانایی بهتر: کد تمیزتر و قابل فهم‌تر
  2. Type Safety: پشتیبانی کامل از TypeScript
  3. Error Handling: مدیریت متمرکز خطاها
  4. Maintainability: نگهداری آسان‌تر
  5. Reusability: کامپوننت‌های قابل استفاده مجدد
  6. Performance: بهبود عملکرد
  7. Testing: تست‌پذیری بهتر

🔄 Migration Guide

برای سرویس‌های موجود:

  1. جایگزینی HttpClient با ApiService
  2. استفاده از ErrorHandlerService برای نمایش پیام‌ها
  3. استفاده از StateService برای مدیریت state

برای کامپوننت‌ها:

  1. استفاده از ShareService جدید
  2. استفاده از LoadingService جدید
  3. استفاده از constants برای مقادیر ثابت

📝 نکات مهم

  • تمام تغییرات backward compatible هستند
  • تست‌های موجود باید به‌روزرسانی شوند
  • مستندات API باید به‌روزرسانی شوند
  • کدهای قدیمی به تدریج حذف شوند

🔮 مراحل بعدی

  1. بازسازی سایر سرویس‌ها با استفاده از ApiService
  2. اضافه کردن unit tests
  3. بهبود error handling
  4. اضافه کردن logging
  5. بهینه‌سازی performance