Skip to content

Commit a7b4545

Browse files
committed
feat(payments): replace PaymentController with PurchaseMethodController, extract shared:tokens:core
- Replace old PaymentController/PaymentState/PaymentEvent with PurchaseMethodController backed by MutableSharedFlow for selections - Add typed PurchaseMethodMetadata/PurchaseMethodSelection for passing context (mint, isFundingShortfall) through present() calls - Extract shared:tokens:core module with ReservesBalanceProvider interface to break circular dep between shared:tokens and shared:payments - TokenCoordinator implements ReservesBalanceProvider; Hilt binding in TokenModule - Delete BuySellFlow and migrate standalone TokenTxProcessingScreen from flowScopedViewModel to hiltViewModel with isFundingShortfall on the route - Remove features:payments, shared:onramp:common modules Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 722e275 commit a7b4545

57 files changed

Lines changed: 416 additions & 1512 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/flipcash/app/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,6 @@ dependencies {
152152
implementation(project(":apps:flipcash:shared:currency-selection:core"))
153153
implementation(project(":apps:flipcash:shared:currency-selection:ui"))
154154
implementation(project(":apps:flipcash:shared:notifications"))
155-
implementation(project(":apps:flipcash:shared:onramp:common"))
156155
implementation(project(":apps:flipcash:shared:onramp:coinbase"))
157156
implementation(project(":apps:flipcash:shared:onramp:deeplinks"))
158157
implementation(project(":apps:flipcash:shared:payments"))
@@ -178,7 +177,6 @@ dependencies {
178177
implementation(project(":apps:flipcash:features:backupkey"))
179178
implementation(project(":apps:flipcash:features:shareapp"))
180179
implementation(project(":apps:flipcash:features:withdrawal"))
181-
implementation(project(":apps:flipcash:features:payments"))
182180
implementation(project(":apps:flipcash:features:onramp"))
183181
implementation(project(":apps:flipcash:features:contact-verification"))
184182
implementation(project(":apps:flipcash:features:tokens"))

apps/flipcash/app/src/main/kotlin/com/flipcash/app/MainActivity.kt

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,6 @@ import com.flipcash.app.core.verification.email.LocalEmailCodeChannel
2323
import com.flipcash.app.featureflags.FeatureFlagController
2424
import com.flipcash.app.featureflags.LocalFeatureFlags
2525
import com.flipcash.app.internal.ui.App
26-
import com.flipcash.app.onramp.LocalOnRampAmountController
27-
import com.flipcash.app.onramp.OnRampAmountController
28-
import com.flipcash.app.payments.LocalPaymentController
29-
import com.flipcash.app.payments.PaymentController
3026
import com.flipcash.app.phone.LocalPhoneUtils
3127
import com.flipcash.app.phone.PhoneUtils
3228
import com.flipcash.app.router.LocalRouter
@@ -111,9 +107,6 @@ class MainActivity : FragmentActivity() {
111107
@Inject
112108
lateinit var featureFlagController: FeatureFlagController
113109

114-
@Inject
115-
lateinit var paymentController: PaymentController
116-
117110
@Inject
118111
lateinit var analytics: FlipcashAnalyticsService
119112

@@ -123,9 +116,6 @@ class MainActivity : FragmentActivity() {
123116
@Inject
124117
lateinit var phoneUtils: PhoneUtils
125118

126-
@Inject
127-
lateinit var onRampAmountController: OnRampAmountController
128-
129119
@Inject
130120
lateinit var billPlaygroundController: BillPlaygroundController
131121

@@ -159,8 +149,6 @@ class MainActivity : FragmentActivity() {
159149
LocalShareController provides shareController,
160150
LocalAppSettings provides appSettingsCoordinator,
161151
LocalFeatureFlags provides featureFlagController,
162-
LocalPaymentController provides paymentController,
163-
LocalOnRampAmountController provides onRampAmountController,
164152
LocalTransactionController provides transactionController,
165153
LocalPhoneUtils provides phoneUtils,
166154
LocalBillPlaygroundController provides billPlaygroundController,

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/App.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ import com.flipcash.app.internal.ui.navigation.decorators.rememberNavBlockingOve
4141
import com.flipcash.app.internal.ui.navigation.decorators.rememberNavMessagingEntryDecorator
4242
import com.flipcash.app.onramp.ExternalWalletOnRampHandler
4343
import com.flipcash.app.onramp.LocalExternalWalletState
44-
import com.flipcash.app.onramp.OnRampAmountScaffold
4544
import com.flipcash.app.onramp.rememberExternalWalletState
46-
import com.flipcash.app.payments.PaymentScaffold
4745
import com.flipcash.app.router.LocalRouter
4846
import com.flipcash.app.session.LocalSessionController
4947
import com.flipcash.app.theme.FlipcashTheme
@@ -123,9 +121,7 @@ internal fun App(
123121
CompositionLocalProvider(
124122
LocalExternalWalletState provides externalWalletOnRamp
125123
) {
126-
PaymentScaffold {
127-
OnRampAmountScaffold {
128-
TipScaffold(tipsEngine = tipsEngine) {
124+
TipScaffold(tipsEngine = tipsEngine) {
129125
val backStack = remember { NavBackStack<NavKey>(AppRoute.Loading) }
130126
val resultStateRegistry = rememberNavResultStateRegistry()
131127
val codeNavigator = rememberCodeNavigator(
@@ -295,10 +291,9 @@ internal fun App(
295291
}
296292
}
297293
}
298-
}
299-
}
300294
}
301-
302295
}
303296
}
304297
}
298+
299+

apps/flipcash/app/src/main/kotlin/com/flipcash/app/internal/ui/navigation/AppScreenContent.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,14 +102,14 @@ fun appEntryProvider(
102102

103103
// Tokens
104104
annotatedEntry<AppRoute.Token.Info> { key ->
105-
TokenInfoScreen(key.mint, key.forNeededFunds, key.fromDeeplink)
105+
TokenInfoScreen(key.mint, key.isFundingShortfall, key.fromDeeplink)
106106
}
107107
annotatedEntry<AppRoute.Token.Transactions> { key -> TransactionHistoryScreen(key.mint) }
108108
annotatedEntry<AppRoute.Token.Swap> { key ->
109109
SwapFlowScreen(route = key, resultStateRegistry = resultStateRegistry)
110110
}
111111
annotatedEntry<AppRoute.Token.TxProcessing> { key ->
112-
TokenTxProcessingScreen(key.swapId, key.awaitExternalWallet)
112+
TokenTxProcessingScreen(key.swapId, key.awaitExternalWallet, key.isFundingShortfall)
113113
}
114114
annotatedEntry<AppRoute.Token.OnRamp> { key -> OnRampCustomAmountScreen(key.mint) }
115115
annotatedEntry<AppRoute.Token.Discovery> { TokenDiscoveryScreen() }

apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/AppRoute.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import com.getcode.navigation.NonDismissableRoute
1717
import com.getcode.navigation.NonDraggableRoute
1818
import com.getcode.navigation.flow.FlowRouteWithResult
1919
import com.getcode.opencode.internal.solana.model.SwapId
20-
import com.getcode.opencode.model.financial.Fiat
2120
import com.getcode.solana.keys.Mint
2221
import com.getcode.ui.core.RestrictionType
2322
import kotlinx.parcelize.Parcelize
@@ -120,7 +119,7 @@ sealed interface AppRoute : NavKey, Parcelable {
120119
@Serializable
121120
data class Info(
122121
val mint: Mint,
123-
val forNeededFunds: Boolean = false,
122+
val isFundingShortfall: Boolean = false,
124123
val fromDeeplink: Boolean = false
125124
) : Token
126125

@@ -129,15 +128,18 @@ sealed interface AppRoute : NavKey, Parcelable {
129128
@Serializable
130129
data class Swap(
131130
val purpose: SwapPurpose,
132-
val forNeededFunds: Boolean = false,
131+
val isFundingShortfall: Boolean = false,
133132
) : Token, FlowRouteWithResult<SwapResult> {
134133
override val initialStack: List<NavKey>
135134
get() = listOf(SwapStep.Entry(purpose))
136135
}
137136

138137
@Serializable
139-
data class TxProcessing(val swapId: SwapId, val awaitExternalWallet: Boolean = false) :
140-
Token, NonDismissableRoute, NonDraggableRoute
138+
data class TxProcessing(
139+
val swapId: SwapId,
140+
val awaitExternalWallet: Boolean = false,
141+
val isFundingShortfall: Boolean = false,
142+
) : Token, NonDismissableRoute, NonDraggableRoute
141143

142144
@Serializable
143145
data class OnRamp(val mint: Mint) : Token

apps/flipcash/features/balance/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ dependencies {
1010
implementation(libs.compose.paging)
1111

1212
implementation(project(":apps:flipcash:shared:analytics"))
13-
implementation(project(":apps:flipcash:shared:onramp:common"))
1413
implementation(project(":apps:flipcash:shared:featureflags"))
1514
implementation(project(":apps:flipcash:shared:tokens"))
1615
implementation(project(":apps:flipcash:shared:userflags"))

apps/flipcash/features/balance/src/main/kotlin/com/flipcash/app/balance/internal/BalanceScreenContent.kt

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,10 @@ import androidx.compose.foundation.layout.Arrangement
55
import androidx.compose.foundation.layout.Box
66
import androidx.compose.foundation.layout.Column
77
import androidx.compose.foundation.layout.PaddingValues
8-
import androidx.compose.foundation.layout.Row
98
import androidx.compose.foundation.layout.Spacer
109
import androidx.compose.foundation.layout.fillMaxWidth
1110
import androidx.compose.foundation.layout.padding
1211
import androidx.compose.foundation.shape.CircleShape
13-
import androidx.compose.material.Icon
1412
import androidx.compose.material.Text
1513
import androidx.compose.runtime.Composable
1614
import androidx.compose.runtime.CompositionLocalProvider
@@ -19,17 +17,14 @@ import androidx.compose.runtime.remember
1917
import androidx.compose.ui.Alignment
2018
import androidx.compose.ui.Modifier
2119
import androidx.compose.ui.platform.LocalContext
22-
import androidx.compose.ui.res.painterResource
2320
import androidx.compose.ui.res.stringResource
2421
import androidx.compose.ui.text.style.TextAlign
2522
import androidx.compose.ui.tooling.preview.Preview
2623
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2724
import com.flipcash.app.balance.internal.components.BalanceHeader
2825
import com.flipcash.app.balance.internal.components.CashReservesRow
2926
import com.flipcash.app.core.AppRoute
30-
import com.flipcash.app.core.money.formatted
3127
import com.flipcash.app.core.tokens.TokenPurpose
32-
import com.flipcash.app.onramp.AddCashRow
3328
import com.flipcash.app.theme.FlipcashPreview
3429
import com.flipcash.app.tokens.ui.SelectTokenViewModel
3530
import com.flipcash.app.tokens.ui.TokenList
@@ -39,7 +34,6 @@ import com.getcode.opencode.compose.LocalExchange
3934
import com.getcode.opencode.model.financial.CurrencyCode
4035
import com.getcode.opencode.model.financial.Rate
4136
import com.getcode.theme.CodeTheme
42-
import com.getcode.ui.core.rememberedClickable
4337
import com.getcode.ui.theme.ButtonState
4438
import com.getcode.ui.theme.CodeButton
4539

@@ -76,7 +70,6 @@ private fun BalanceScreenContent(
7670

7771
TokenList(
7872
modifier = Modifier.weight(1f),
79-
reservesEnabled = tokenState.reservesEnabled,
8073
emptyState = {
8174
Box(
8275
modifier = Modifier

apps/flipcash/features/cash/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ dependencies {
1515

1616
implementation(libs.kotlin.stdlib)
1717
implementation(project(":apps:flipcash:shared:analytics"))
18-
implementation(project(":apps:flipcash:shared:onramp:common"))
1918
implementation(project(":apps:flipcash:shared:session"))
2019
implementation(project(":apps:flipcash:shared:tokens"))
2120
implementation(project(":libs:datetime"))

apps/flipcash/features/cash/src/main/kotlin/com/flipcash/app/cash/internal/CashScreenViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ internal class CashScreenViewModel @Inject constructor(
328328
Event.OpenScreen(
329329
AppRoute.Token.Info(
330330
mint = stateFlow.value.selectedTokenAddress!!,
331-
forNeededFunds = true
331+
isFundingShortfall = true
332332
),
333333
)
334334
)

apps/flipcash/features/menu/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ dependencies {
1212
implementation(project(":apps:flipcash:shared:authentication"))
1313
implementation(project(":apps:flipcash:shared:featureflags"))
1414
implementation(project(":apps:flipcash:shared:menu"))
15-
implementation(project(":apps:flipcash:shared:onramp:common"))
1615
implementation(project(":apps:flipcash:shared:userflags"))
1716

1817
implementation(project(":libs:datetime"))

0 commit comments

Comments
 (0)