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_SUPPORTBackend'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.newBalanceile güncellensin. - İşlem geçmişi/listesi varsa bu tip için yeni bir satır üretin.
metadata.streamIdile 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.newBalanceolmalı. - 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_SUPPORTiç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
transactionTypegeldiğinde uygulama crash etmemeli. defaultcase 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ı
- Kullanıcı
30kredi fund eder:
- API
200döner. balanceChangegelir.- Bakiye
previousBalance - 30olur. - İşlem geçmişinde
DUOCROWD_FUNDING_SUPPORTgörünür.
- 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.
- Socket geçici kopuk:
- API başarılı olsa da anlık event gecikebilir.
- Reconnect sonrası
currentBalanceveya sonrakibalanceChangeile state toparlanır.
- 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.