Proje: Okul B2B App · Hub: Okul B2B App — Conventions

Async Operation Pattern (useAsyncOperation)

hooks/useAsyncOperation.ts — Loading/error state yönetimi ile async işlem wrapper.

Kullanım

const { execute, isLoading, data, hasError, retry } = useAsyncOperation(
  LeadsService.getLeads,
  {
    showErrors: true,       // Otomatik Toast error
    retryOnError: false,    // Hata sonrası retry
    maxRetries: 3,
    retryDelay: 1000,
    onSuccess: (data) => { /* işlem tamamlandı */ },
    onError: (error) => { /* hata */ },
  }
);
 
// Çalıştır
await execute(page, pageSize, schoolId);

State

{
  data: T | null,
  loading: boolean,
  error: Error | null,
  lastUpdated: Date | null
}

isMountedRef

Unmount olmuş bileşende state güncellemesini önler:

if (isMountedRef.current) {
  setState(...)
}

useErrorHandler Entegrasyonu

showErrors: trueuseErrorHandler.showError() ile Toast gösterilir.

Not

Bu hook günlük kullanımda pek görülmez. Çoğu yerde servis çağrıları useState + useEffect ile manual yapılmış. Yeni geliştirmelerde kullanılabilir.