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

NetworkManager Hata Sınıfları

utils/NetworkManager.ts — Hata sınıfları ve network state yönetimi.

Hata Sınıfı Hiyerarşisi

Error
  └── NetworkError (base)
       ├── ServerError    ← HTTP 4xx/5xx
       ├── TimeoutError   ← 30s timeout
       ├── ConnectionError ← Bağlantı kurulamadı
       └── NetworkError   ← Genel ağ hatası

ServerError Detayları

class ServerError extends NetworkError {
  status: number;         // HTTP status kodu (400, 401, 403, 404, 422, 500...)
  responseBody: any;      // Ham API yanıt body'si
  
  getApiMessage(): string | null;     // API'den gelen hata mesajı
  getFieldErrors(): Record<string, string[]> | null;  // Validation hataları
}

getFieldErrors() Kullanımı

const fieldErrors = error.getFieldErrors();
// { title: ["Bu alan zorunludur"], text: ["En az 150 karakter olmalı"] }

SchoolContentService bu yöntemi form validation hatalarını göstermek için kullanır.

checkNetworkBeforeRequest()

ApiClient her istekte önce bağlantı kontrolü yapar:

import { checkNetworkBeforeRequest } from '@/utils/NetworkManager';
 
await checkNetworkBeforeRequest(); // Offline ise ConnectionError fırlatır

NetworkStatusBanner

components/ui/NetworkStatusBanner.tsx — Uygulama genelinde bağlantı durumu banner’ı.

NetworkManager singleton’a subscribe olarak bağlantı değişimlerini dinler.