Allmine API

DuoCrowd funding balance — mobil

~5 dkMobil / WebKararlı

DuoCrowd bakiye endpoint mobil entegrasyonu

DuoCrowd Funding Balance Socket - Mobil Entegrasyon Güncellemesi

Migration rehberi

Yapılandırma sırası için Migration şablonu. Yeni düzenlemelerde Amaç → Önkoşullar → Endpoint → Request/Response → Hata kodları → Client adımları → İlgili sayfalar bölümlerini tercih edin.

Bu doküman, FundLiveStreamUseCase güncellemesi sonrası mobil tarafta yapılması gereken değişiklikleri açıklar.

Özet

POST /live-stream/:id/fund başarılı olduğunda backend artık bağış yapan kullanıcıya /balance namespace'i üzerinden balanceChange eventi yayınlar.

Yeni transactionType:

DUOCROWD_FUNDING_SUPPORT

Backend'den Gelecek Event

Event adı: balanceChange

{
  userId: string;
  previousBalance: number;
  newBalance: number;
  changeAmount: number; // negatif (ör: -30)
  transactionType: 'DUOCROWD_FUNDING_SUPPORT';
  description: 'DuoCrowd yayınına bağış yapıldı';
  metadata: {
    streamId: string;
    amount: number;
    transactionId: string;
  };
  timestamp: string | Date;
}

Mobilde Zorunlu Değişiklikler

1) Transaction type enum'una yeni değer ekleyin

export enum BalanceTransactionType {
  DEPOSIT = 'DEPOSIT',
  WITHDRAWAL = 'WITHDRAWAL',
  GIFT_SENT = 'GIFT_SENT',
  GIFT_RECEIVED = 'GIFT_RECEIVED',
  GIFT_REVENUE = 'GIFT_REVENUE',
  STREAM_REVENUE = 'STREAM_REVENUE',
  STREAM_CHARGE = 'STREAM_CHARGE',
  SUPERLIKE = 'SUPERLIKE',
  SUPERLIKE_REVENUE = 'SUPERLIKE_REVENUE',
  CREDIT_TRANSFER_SENT = 'CREDIT_TRANSFER_SENT',
  CREDIT_TRANSFER_RECEIVED = 'CREDIT_TRANSFER_RECEIVED',
  MINI_CROWD_FUNDING_SUPPORT = 'MINI_CROWD_FUNDING_SUPPORT',
  DUOCROWD_FUNDING_SUPPORT = 'DUOCROWD_FUNDING_SUPPORT',
}

2) balanceChange handler'ında yeni tipi işleyin

  • Bakiye state'i her zaman event.newBalance ile güncellensin.
  • İşlem geçmişi/listesi varsa bu tip için yeni bir satır üretin.
  • metadata.streamId ile yalnızca ilgili stream ekranına özel UI güncellemesi yapın.

Önerilen metin:

  • Başlık: DuoCrowd desteği
  • Alt metin: ${metadata.amount} kredi destek gönderildi

3) Fund ekranı akışını socket ile senkronize edin

  • API başarı döndüğünde ekranı güncelleyin.
  • Nihai bakiye kaynağı balanceChange.newBalance olmalı.
  • Socket event geç gelirse, önce API response ile stream funding bilgisini güncelleyip bakiyeyi socket event ile kesinleştirin.

4) İşlem geçmişi / filtreleme ekranlarını güncelleyin

  • DUOCROWD_FUNDING_SUPPORT için ikon/renk/label ekleyin.
  • Gider işlemi olarak sınıflandırın (eksi bakiye hareketi).

5) Geriye dönük uyumluluk koruyun

  • Bilinmeyen transactionType geldiğinde uygulama crash etmemeli.
  • default case ile generic bir işlem satırı gösterin.

React Native Örnek (Handler)

const handleBalanceChange = (event: BalanceChangeEvent) => {
  // Tek kaynak: socket'ten gelen newBalance
  dispatch(setCurrentBalance(event.newBalance));

  if (event.transactionType === BalanceTransactionType.DUOCROWD_FUNDING_SUPPORT) {
    dispatch(
      addBalanceActivity({
        type: event.transactionType,
        title: 'DuoCrowd desteği',
        amount: event.changeAmount, // negatif gelir
        streamId: event.metadata?.streamId,
        transactionId: event.metadata?.transactionId,
        createdAt: event.timestamp,
      }),
    );
  }
};

QA / Test Senaryoları

  1. Kullanıcı 30 kredi fund eder:
  • API 200 döner.
  • balanceChange gelir.
  • Bakiye previousBalance - 30 olur.
  • İşlem geçmişinde DUOCROWD_FUNDING_SUPPORT görünür.
  1. Arka arkaya fund (ör. 10 + 20) yapılır:
  • Her işlem için ayrı event alınır.
  • Bakiye her event'te doğru azalır.
  • Transaction listesinde 2 ayrı kayıt görünür.
  1. Socket geçici kopuk:
  • API başarılı olsa da anlık event gecikebilir.
  • Reconnect sonrası currentBalance veya sonraki balanceChange ile state toparlanır.
  1. Unknown transaction type:
  • Uygulama crash etmez.
  • Generic işlem satırı gösterilir.

Release Checklist

  • Mobil enum güncellendi (DUOCROWD_FUNDING_SUPPORT)
  • Balance socket handler güncellendi
  • Transaction history mapping güncellendi
  • Fund ekranı socket ile senkron çalışıyor
  • QA senaryoları doğrulandı

Not

/live-stream/:id/fund endpoint kontratı değişmedi. Bu güncelleme yalnızca balance socket tarafında yeni transaction type üretilmesini ve mobilde bu type'ın handle edilmesini gerektirir.

On this page