Skip to content

Commit 5dbc145

Browse files
committed
refactor: create uiState method
1 parent 72f3f90 commit 5dbc145

File tree

2 files changed

+54
-1
lines changed

2 files changed

+54
-1
lines changed

app/src/main/java/to/bitkit/viewmodels/ActivityDetailViewModel.kt

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import kotlinx.coroutines.flow.update
1111
import kotlinx.coroutines.launch
1212
import to.bitkit.data.SettingsStore
1313
import to.bitkit.di.BgDispatcher
14+
import to.bitkit.ext.isSent
15+
import to.bitkit.ext.isTransfer
1416
import to.bitkit.ext.rawId
1517
import to.bitkit.services.CoreService
1618
import to.bitkit.utils.AddressChecker
@@ -28,13 +30,46 @@ class ActivityDetailViewModel @Inject constructor(
2830
private val _txDetails = MutableStateFlow<TxDetails?>(null)
2931
val txDetails = _txDetails.asStateFlow()
3032

33+
private val _uiState = MutableStateFlow(ActivityDetailUiState(screenState = ActivityDetailScreenState.Loading))
34+
val uiState = _uiState.asStateFlow()
35+
3136
private val _tags = MutableStateFlow<List<String>>(emptyList())
3237
val tags = _tags.asStateFlow()
3338

3439
private val _boostSheetVisible = MutableStateFlow(false)
3540
val boostSheetVisible = _boostSheetVisible.asStateFlow()
3641

3742
private var activity: Activity? = null
43+
set(value) {
44+
value?.let { activity ->
45+
val paymentValue = when (activity) {
46+
is Activity.Lightning -> activity.v1.value
47+
is Activity.Onchain -> activity.v1.value
48+
}
49+
_uiState.update {
50+
it.copy( //TODO EXTRACT
51+
screenState = ActivityDetailScreenState.Success(
52+
isLightning = activity is Activity.Lightning,
53+
isSent = activity.isSent(),
54+
timeStamp= when (activity) {
55+
is Activity.Lightning -> activity.v1.timestamp
56+
is Activity.Onchain -> when (activity.v1.confirmed) {
57+
true -> activity.v1.confirmTimestamp ?: activity.v1.timestamp
58+
else -> activity.v1.timestamp
59+
}
60+
},
61+
paymentValue = paymentValue,
62+
fee = when (activity) {
63+
is Activity.Lightning -> activity.v1.fee
64+
is Activity.Onchain -> activity.v1.fee
65+
},
66+
isSelfSend = activity.isSent() && paymentValue == 0uL,
67+
isTransfer = activity.isTransfer()
68+
)
69+
)
70+
}
71+
}
72+
}
3873

3974
fun setActivity(activity: Activity) {
4075
this.activity = activity
@@ -109,3 +144,21 @@ class ActivityDetailViewModel @Inject constructor(
109144
const val TAG = "ActivityDetailViewModel"
110145
}
111146
}
147+
148+
149+
data class ActivityDetailUiState(
150+
val screenState: ActivityDetailScreenState = ActivityDetailScreenState.Loading,
151+
)
152+
153+
sealed interface ActivityDetailScreenState {
154+
data object Loading : ActivityDetailScreenState
155+
data class Success(
156+
val isLightning: Boolean,
157+
val isSent: Boolean,
158+
val timeStamp: ULong,
159+
val paymentValue: ULong,
160+
val fee: ULong?,
161+
val isSelfSend: Boolean,
162+
val isTransfer: Boolean,
163+
) : ActivityDetailScreenState
164+
}

app/src/main/java/to/bitkit/viewmodels/AppViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1028,7 +1028,7 @@ class AppViewModel @Inject constructor(
10281028
}
10291029

10301030
fun onClickActivityDetail() {
1031-
// TODO This method is being called before the activity is added
1031+
10321032
val filter = newTransaction.type.toActivityFilter()
10331033
val paymentType = newTransaction.direction.toTxType()
10341034

0 commit comments

Comments
 (0)