Skip to content

Commit 0745180

Browse files
committed
fix(fc): observe balance directly on tip confirmation
Signed-off-by: Brandon McAnsh <[email protected]>
1 parent a98cdfc commit 0745180

File tree

6 files changed

+20
-23
lines changed

6 files changed

+20
-23
lines changed

flipchatApp/src/main/kotlin/xyz/flipchat/app/MainActivity.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import androidx.compose.runtime.CompositionLocalProvider
1111
import androidx.fragment.app.FragmentActivity
1212
import com.getcode.libs.opengraph.LocalOpenGraphParser
1313
import com.getcode.libs.opengraph.OpenGraphParser
14+
import com.getcode.network.BalanceController
15+
import com.getcode.network.LocalBalanceController
1416
import com.getcode.network.client.Client
1517
import com.getcode.network.exchange.ExchangeNull
1618
import com.getcode.network.exchange.LocalExchange
@@ -73,6 +75,9 @@ class MainActivity : FragmentActivity() {
7375
@Inject
7476
lateinit var openGraphParser: OpenGraphParser
7577

78+
@Inject
79+
lateinit var balanceController: BalanceController
80+
7681
override fun onCreate(savedInstanceState: Bundle?) {
7782
super.onCreate(savedInstanceState)
7883
handleUncaughtException()
@@ -90,6 +95,7 @@ class MainActivity : FragmentActivity() {
9095
LocalLabs provides betaFeatures,
9196
LocalBillingClient provides iapController,
9297
LocalOpenGraphParser provides openGraphParser,
98+
LocalBalanceController provides balanceController,
9399
) {
94100
Rinku {
95101
App(tipsEngine = tipsEngine)

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/payments/MessageTipPaymentConfirmation.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@ import androidx.compose.animation.core.animateFloatAsState
44
import androidx.compose.foundation.layout.fillMaxWidth
55
import androidx.compose.material.Text
66
import androidx.compose.runtime.Composable
7+
import androidx.compose.runtime.collectAsState
78
import androidx.compose.runtime.derivedStateOf
89
import androidx.compose.runtime.getValue
910
import androidx.compose.runtime.remember
1011
import androidx.compose.ui.Modifier
1112
import androidx.compose.ui.draw.alpha
1213
import androidx.compose.ui.res.stringResource
14+
import cafe.adriel.voyager.navigator.currentOrThrow
1315
import com.getcode.model.Currency
1416
import com.getcode.model.KinAmount
1517
import com.getcode.model.Rate
1618
import com.getcode.model.kin
1719
import com.getcode.models.ConfirmationState
1820
import com.getcode.models.MessageTipPaymentConfirmation
21+
import com.getcode.network.LocalBalanceController
1922
import com.getcode.theme.CodeTheme
2023
import com.getcode.ui.components.Modal
2124
import com.getcode.ui.components.SlideToConfirm
@@ -58,11 +61,14 @@ internal fun MessageTipPaymentConfirmation(
5861
)
5962
}
6063

64+
val balanceController = LocalBalanceController.currentOrThrow
65+
val currentBalance by balanceController.formattedBalance.collectAsState()
66+
6167
Modal(modifier) {
6268
if (state != null) {
6369
MessageTipConfirmationContent(
6470
pickerState = pickerState,
65-
balance = confirmation?.balance,
71+
balance = currentBalance?.formattedValue,
6672
isSending = isSending,
6773
state = state,
6874
onApproved = {

flipchatApp/src/main/kotlin/xyz/flipchat/app/features/payments/PaymentScaffold.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ fun PaymentScaffold(content: @Composable () -> Unit) {
7373

7474
AnimatedContent(
7575
modifier = Modifier.align(BottomCenter),
76-
targetState = state.billState.messageTipPaymentConfirmation?.balance,
76+
targetState = state.billState.messageTipPaymentConfirmation?.metadata,
7777
transitionSpec = AnimationUtils.modalAnimationSpec(speed = ModalAnimationSpeed.Fast),
7878
label = "message tip payments",
7979
) {

libs/requests/src/main/kotlin/com/getcode/models/BillState.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,6 @@ data class MessageTipPaymentConfirmation(
233233
override val state: ConfirmationState,
234234
val destination: PublicKey,
235235
val metadata: ExtendedMetadata,
236-
val balance: String?,
237236
override val showScrim: Boolean = true,
238237
override val cancellable: Boolean = true,
239238
): Confirmation(showScrim, state)

services/flipchat/payments/src/main/kotlin/com/getcode/network/BalanceController.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.getcode.network
22

3-
import com.codeinc.gen.user.v1.user
3+
import androidx.compose.runtime.staticCompositionLocalOf
44
import com.getcode.model.Currency
55
import com.getcode.model.CurrencyCode
66
import com.getcode.model.Rate
@@ -32,6 +32,7 @@ import kotlinx.coroutines.flow.stateIn
3232
import kotlinx.coroutines.launch
3333
import kotlinx.coroutines.suspendCancellableCoroutine
3434
import timber.log.Timber
35+
import xyz.flipchat.services.PaymentController
3536
import xyz.flipchat.services.user.AuthState
3637
import xyz.flipchat.services.user.UserManager
3738
import java.util.Locale
@@ -243,3 +244,5 @@ open class BalanceController @Inject constructor(
243244
}
244245
}
245246
}
247+
248+
val LocalBalanceController = staticCompositionLocalOf<BalanceController?> { null }

services/flipchat/payments/src/main/kotlin/xyz/flipchat/services/PaymentController.kt

Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,17 @@ package xyz.flipchat.services
33
import androidx.compose.runtime.staticCompositionLocalOf
44
import com.getcode.domain.BillController
55
import com.getcode.manager.TopBarManager
6-
import com.getcode.model.Currency
76
import com.getcode.model.ID
87
import com.getcode.model.KinAmount
98
import com.getcode.models.BillState
109
import com.getcode.models.ConfirmationState
1110
import com.getcode.models.MessageTipPaymentConfirmation
1211
import com.getcode.models.PublicPaymentConfirmation
13-
import com.getcode.network.BalanceController
1412
import com.getcode.network.repository.PaymentError
1513
import com.getcode.network.repository.PaymentRepository
1614
import com.getcode.services.model.ExtendedMetadata
1715
import com.getcode.solana.keys.PublicKey
1816
import com.getcode.util.resources.ResourceHelper
19-
import com.getcode.utils.CurrencyUtils
20-
import com.getcode.utils.Kin
21-
import com.getcode.utils.flagResId
22-
import com.getcode.utils.formatAmountString
2317
import kotlinx.coroutines.CoroutineScope
2418
import kotlinx.coroutines.Dispatchers
2519
import kotlinx.coroutines.delay
@@ -58,16 +52,14 @@ open class PaymentController @Inject constructor(
5852
private val paymentRepository: PaymentRepository,
5953
private val resources: ResourceHelper,
6054
private val billController: BillController,
61-
private val balanceController: BalanceController,
62-
private val currencyUtils: CurrencyUtils,
6355
) {
64-
protected val scope = CoroutineScope(Dispatchers.IO)
56+
private val scope = CoroutineScope(Dispatchers.IO)
6557

6658
val state = billController.state.map {
6759
PaymentState(it)
6860
}.stateIn(scope, started = SharingStarted.Eagerly, initialValue = PaymentState())
6961

70-
protected val _eventFlow: MutableSharedFlow<PaymentEvent> = MutableSharedFlow()
62+
private val _eventFlow: MutableSharedFlow<PaymentEvent> = MutableSharedFlow()
7163
val eventFlow: SharedFlow<PaymentEvent> = _eventFlow.asSharedFlow()
7264

7365
fun presentPublicPaymentConfirmation(
@@ -156,21 +148,12 @@ open class PaymentController @Inject constructor(
156148
}
157149

158150
fun presentMessageTipConfirmation(metadata: ExtendedMetadata, destination: PublicKey) {
159-
val rawBalance = balanceController.rawBalance
160-
val balance = formatAmountString(
161-
resources,
162-
Currency.Kin,
163-
rawBalance,
164-
suffix = resources.getKinSuffix()
165-
)
166-
167151
billController.update {
168152
it.copy(
169153
messageTipPaymentConfirmation = MessageTipPaymentConfirmation(
170154
state = ConfirmationState.AwaitingConfirmation,
171155
metadata = metadata,
172156
destination = destination,
173-
balance = balance,
174157
)
175158
)
176159
}

0 commit comments

Comments
 (0)