rename example
This commit is contained in:
@@ -0,0 +1,150 @@
|
||||
package com.bitcointxoko.gudariwallet.ui
|
||||
|
||||
import com.bitcointxoko.gudariwallet.api.LnurlScanResponse
|
||||
import com.bitcointxoko.gudariwallet.api.PaymentDetailResponse
|
||||
import com.bitcointxoko.gudariwallet.api.PaymentRecord
|
||||
import com.bitcointxoko.gudariwallet.api.RouteHintHop
|
||||
import com.bitcointxoko.gudariwallet.util.RouteHintRisk
|
||||
import com.bitcointxoko.gudariwallet.util.SendInputType
|
||||
|
||||
sealed class UiState<out T> {
|
||||
data object Loading : UiState<Nothing>()
|
||||
data class Success<T>(val data: T) : UiState<T>()
|
||||
data class Error(val message: String) : UiState<Nothing>()
|
||||
}
|
||||
|
||||
sealed class ReceiveState {
|
||||
data object Idle : ReceiveState()
|
||||
data object AwaitingInvoice : ReceiveState()
|
||||
data class InvoiceReady(
|
||||
val bolt11 : String,
|
||||
val paymentHash : String,
|
||||
val amountSats : Long,
|
||||
val memo : String,
|
||||
val expiresAt : Long
|
||||
) : ReceiveState()
|
||||
data class PaymentReceived(
|
||||
val amountSats: Long,
|
||||
val memo : String?
|
||||
) : ReceiveState()
|
||||
data class Error(val message: String) : ReceiveState()
|
||||
data class LnurlWithdrawReady(
|
||||
val k1 : String,
|
||||
val callback : String,
|
||||
val defaultDescription : String,
|
||||
val minSats : Long,
|
||||
val maxSats : Long,
|
||||
val domain : String,
|
||||
val lnurl : String // original encoded string, for display
|
||||
) : ReceiveState()
|
||||
}
|
||||
|
||||
|
||||
|
||||
sealed class SendState {
|
||||
data object Idle : SendState()
|
||||
data object Scanning : SendState()
|
||||
data class Bolt11Decoded(
|
||||
override val bolt11 : String,
|
||||
override val amountSats : Long,
|
||||
override val memo : String,
|
||||
override val payee : String? = null,
|
||||
override val nodeAlias : String? = null,
|
||||
override val routeRisk : RouteHintRisk? = null,
|
||||
override val allRouteHints : List<RouteHintHop> = emptyList(),
|
||||
override val routeHintAliases : Map<String, String> = emptyMap()
|
||||
) : SendState(), DecodedInvoice
|
||||
data class LnurlReady(
|
||||
val callback : String,
|
||||
val description : String,
|
||||
val domain : String,
|
||||
val minSats : Long,
|
||||
val maxSats : Long,
|
||||
val commentAllowed : Int,
|
||||
val lnurl : String,
|
||||
val rawRes : LnurlScanResponse
|
||||
) : SendState()
|
||||
data class LnurlInvoiceReady(
|
||||
override val bolt11 : String,
|
||||
override val amountSats : Long,
|
||||
override val memo : String,
|
||||
val domain : String,
|
||||
val lnurl : String,
|
||||
val rawRes : LnurlScanResponse,
|
||||
val amountMsat : Long,
|
||||
val comment : String?,
|
||||
override val payee : String? = null,
|
||||
override val nodeAlias : String? = null,
|
||||
override val routeRisk : RouteHintRisk? = null,
|
||||
override val allRouteHints : List<RouteHintHop> = emptyList(),
|
||||
override val routeHintAliases : Map<String, String> = emptyMap()
|
||||
) : SendState(), DecodedInvoice
|
||||
data object Paying : SendState()
|
||||
data class PaymentSent(
|
||||
val amountSats : Long,
|
||||
val feeSats : Long? = null
|
||||
) : SendState()
|
||||
data class Error(val message: String) : SendState()
|
||||
}
|
||||
|
||||
// ── History list states ────────────────────────────────────────────────────────
|
||||
sealed interface HistoryState {
|
||||
data object Loading : HistoryState
|
||||
data class Success(
|
||||
val payments : List<PaymentRecord>,
|
||||
val canLoadMore : Boolean,
|
||||
val isRefreshing: Boolean = false
|
||||
) : HistoryState
|
||||
data class Error(val message: String) : HistoryState
|
||||
}
|
||||
|
||||
// ── Payment detail states ──────────────────────────────────────────────────────
|
||||
sealed interface DetailState {
|
||||
data object Idle : DetailState
|
||||
data object Loading : DetailState
|
||||
data class Partial(val record: PaymentRecord) : DetailState
|
||||
data class Success(val detail: PaymentDetailResponse) : DetailState
|
||||
data class Error(val message: String) : DetailState
|
||||
}
|
||||
|
||||
// ── Balance states ─────────────────────────────────────────────────────────────
|
||||
sealed interface BalanceState {
|
||||
data object Loading : BalanceState
|
||||
data class Success(
|
||||
val sats : Long,
|
||||
val isRefreshing: Boolean = false,
|
||||
val lastUpdated : Long = System.currentTimeMillis(),
|
||||
val fiatAmount : Double? = null,
|
||||
val fiatCurrency : String? = null
|
||||
) : BalanceState
|
||||
data class Error(
|
||||
val message : String,
|
||||
val staleSats: Long? = null
|
||||
) : BalanceState
|
||||
}
|
||||
|
||||
// ── Clipboard offer states ─────────────────────────────────────────────────────
|
||||
|
||||
sealed interface ClipboardOfferState {
|
||||
data object None : ClipboardOfferState
|
||||
data class Detected(
|
||||
val raw : String,
|
||||
val inputType: SendInputType
|
||||
) : ClipboardOfferState
|
||||
}
|
||||
|
||||
/**
|
||||
* Shared interface for send states that represent a fully decoded invoice
|
||||
* ready for user confirmation. Allows ConfirmCardContent to accept either
|
||||
* Bolt11Decoded or LnurlInvoiceReady without knowing which it is.
|
||||
*/
|
||||
interface DecodedInvoice {
|
||||
val amountSats : Long
|
||||
val memo : String
|
||||
val payee : String?
|
||||
val nodeAlias : String?
|
||||
val bolt11 : String
|
||||
val routeRisk : RouteHintRisk?
|
||||
val allRouteHints : List<RouteHintHop>
|
||||
val routeHintAliases : Map<String, String>
|
||||
}
|
||||
Reference in New Issue
Block a user