feat: add nfc step 1

This commit is contained in:
2026-06-05 01:47:39 +02:00
parent 8e53a927a0
commit cc50ff08df
7 changed files with 340 additions and 9 deletions
@@ -1,6 +1,7 @@
package com.bitcointxoko.gudariwallet.ui
import android.util.Log
import androidx.annotation.VisibleForTesting
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.bitcointxoko.gudariwallet.api.LnurlScanResponse
@@ -16,6 +17,7 @@ import com.bitcointxoko.gudariwallet.data.LightningAddressStore
import com.bitcointxoko.gudariwallet.ui.balance.BalanceViewModel
import com.bitcointxoko.gudariwallet.ui.clipboard.ClipboardViewModel
import com.bitcointxoko.gudariwallet.ui.fiat.FiatViewModel
import com.bitcointxoko.gudariwallet.ui.nfc.NfcViewModel
import com.bitcointxoko.gudariwallet.ui.receive.ReceiveViewModel
import com.bitcointxoko.gudariwallet.ui.send.SendViewModel
import kotlinx.coroutines.flow.SharingStarted
@@ -33,7 +35,8 @@ class WalletViewModel(
val fiatVm : FiatViewModel,
val receiveVm : ReceiveViewModel,
val sendVm : SendViewModel,
val clipboardVm : ClipboardViewModel,
val clipboardVm : ClipboardViewModel,
val nfcVm : NfcViewModel
) : ViewModel() {
val balanceState: StateFlow<BalanceState> get() = balanceVm.balanceState
val balanceHidden: StateFlow<Boolean> get() = fiatVm.balanceHidden
@@ -62,9 +65,7 @@ class WalletViewModel(
fun requestPayment(activity: FragmentActivity, subtitle: String, pay: () -> Unit) =
sendVm.requestPayment(activity, subtitle, pay)
fun resetSendState() = sendVm.resetSendState()
val clipboardOfferState: StateFlow<ClipboardOfferState> get() = clipboardVm.clipboardOfferState
fun checkClipboard(text: String?) = clipboardVm.checkClipboard(text)
fun dismissClipboardOffer() = clipboardVm.dismissClipboardOffer()
val lightningAddress: StateFlow<String?> = lnAddressStore.lightningAddressFlow
.stateIn(
scope = viewModelScope,
@@ -72,6 +73,21 @@ class WalletViewModel(
initialValue = null
)
val clipboardOfferState: StateFlow<ClipboardOfferState> get() = clipboardVm.clipboardOfferState
fun checkClipboard(text: String?) = clipboardVm.checkClipboard(text)
fun dismissClipboardOffer() = clipboardVm.dismissClipboardOffer()
val nfcOfferState: StateFlow<NfcOfferState> = nfcVm.nfcOfferState
fun onNfcTagDiscovered(tag: android.nfc.Tag) = nfcVm.onTagDiscovered(tag)
@VisibleForTesting
fun onNfcTagRead(text: String?) = nfcVm.onNfcTagRead(text)
fun dismissNfcOffer() = nfcVm.dismissNfcOffer()
val nfcBroadcastState: StateFlow<NfcViewModel.NfcBroadcastState> get() = nfcVm.broadcastState
fun startNfcBroadcast(payload: String) = nfcVm.startBroadcast(payload)
fun cancelNfcBroadcast() = nfcVm.cancelBroadcast()
fun dismissNfcBroadcastResult() = nfcVm.dismissBroadcastResult()
init {
observePaymentEvents()
fetchLightningAddress()