Çevrimdışı kuyruk ve otomatik yeniden deneme
Mobil uygulama, internet bağlantısı yokken yaptığınız işlemleri yerel kuyrukta saklar ve bağlantı geri geldiğinde otomatik olarak sunucuya gönderir.
Hangi işlemler kuyruklanır?
- Geri yükleme onayı (yöneticiye gönderilen onay isteği)
- Cihaz çıkışı (uzak oturum kapatma)
- Hesap silme onayı (3 adımlı wizard'ın son adımı)
- Push token güncellemesi
Yedek görüntüleme ve dashboard verileri kuyruklanmaz; bunlar bağlantı geldiğinde canlı çekilir (cache değil).
Görsel uyarı — RetryBanner
Bağlantı yoksa veya bir istek 4xx/5xx ile başarısız olursa ekranın üst kısmında turuncu bir banner görünür:
⏳ 3 işlem sırada bekliyor · Bağlantı geldiğinde otomatik gönderilecek
Banner'a dokunarak kuyruktaki işlemleri görebilir, isterseniz tek tek iptal edebilirsiniz.
Otomatik replay mantığı
- NetInfo bağlantı değişimini dinler (
netinfo.logic.ts) - Bağlantı
online + reachableolduğunda kuyruk açılır - Her item için 3 deneme + exponential backoff (1s → 4s → 16s)
- 3 deneme sonrası başarısızsa kullanıcıya hata bildirimi + manuel "tekrar dene"
KVKK § 12 — Kuyrukta PII yok
Kuyruğa endpoint + headers + body yazılır ama hassas alanlar (parola, token, biyometrik) endpoint düzeyinde filtrelenir. Cihaz çalınırsa bile kuyruk dosyasından kullanıcı parolası elde edilemez.
Kuyruğu manuel temizleme
Hesap → Geliştirici → "Çevrimdışı kuyruğu temizle" (yalnızca Hesap → Geliştirici modunda görünür).
⚠️ Bu işlem bekleyen onayları siler. Onaylanmamış geri yükleme istekleri tekrar gönderilmez; baştan başlatmanız gerekir.
Edge case'ler
| Senaryo | Davranış |
|---|---|
| Uçak modu sırasında onay verdim | Kuyruğa yazılır; uçak modu kapanınca gönderilir |
| Bağlantı var ama sunucu 503 | 3 deneme; sonra "hata" durumuna düşer |
| Aynı işlemi 2 kez yaptım | Idempotency key ile sunucuda tek seferlik uygulanır |
| Telefonu kapatıp açtım | Kuyruk SQLite'da persiste edilir; uygulama açılınca devam eder |

