Skip to content

Commit cddf65b

Browse files
committed
feat(flipcash): handle receiving cashlinks
Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 7ff7489 commit cddf65b

31 files changed

Lines changed: 516 additions & 78 deletions

File tree

apps/flipcash/app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,12 @@ dependencies {
117117

118118
implementation(project(":apps:flipcash:core"))
119119
implementation(project(":apps:flipcash:shared:authentication"))
120+
implementation(project(":apps:flipcash:shared:router"))
120121
implementation(project(":apps:flipcash:shared:session"))
121122
implementation(project(":apps:flipcash:features:currency-selection:core"))
122123
implementation(project(":apps:flipcash:features:currency-selection:ui"))
123124
implementation(project(":apps:flipcash:features:accesskey"))
124125
implementation(project(":apps:flipcash:features:login"))
125-
implementation(project(":apps:flipcash:features:router"))
126126
implementation(project(":apps:flipcash:features:scanner"))
127127
implementation(project(":apps:flipcash:features:give"))
128128
implementation(project(":apps:flipcash:features:balance"))

apps/flipcash/app/src/main/AndroidManifest.xml

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,53 @@
4949
<action android:name="android.intent.action.MAIN" />
5050
<category android:name="android.intent.category.LAUNCHER" />
5151
</intent-filter>
52+
53+
<intent-filter android:autoVerify="true">
54+
<action android:name="android.intent.action.VIEW" />
55+
56+
<category android:name="android.intent.category.DEFAULT" />
57+
<category android:name="android.intent.category.BROWSABLE" />
58+
59+
<data
60+
android:host="send.flipcash.com"
61+
android:pathPattern="/cash/.*"
62+
android:scheme="https" />
63+
</intent-filter>
64+
65+
<intent-filter android:autoVerify="true">
66+
<action android:name="android.intent.action.VIEW" />
67+
68+
<category android:name="android.intent.category.DEFAULT" />
69+
<category android:name="android.intent.category.BROWSABLE" />
70+
71+
<data
72+
android:host="send.flipcash.com"
73+
android:pathPattern="/c/.*"
74+
android:scheme="https" />
75+
</intent-filter>
76+
77+
<intent-filter android:autoVerify="true">
78+
<action android:name="android.intent.action.VIEW" />
79+
80+
<category android:name="android.intent.category.DEFAULT" />
81+
<category android:name="android.intent.category.BROWSABLE" />
82+
83+
<data
84+
android:host="jump.flipcash.com"
85+
android:scheme="https" />
86+
</intent-filter>
87+
88+
<intent-filter>
89+
<action android:name="android.intent.action.VIEW" />
90+
91+
<category android:name="android.intent.category.DEFAULT" />
92+
<category android:name="android.intent.category.BROWSABLE" />
93+
94+
<data
95+
android:host="send.flipcash.com"
96+
android:pathPattern="/c/.*"
97+
android:scheme="codewallet" />
98+
</intent-filter>
5299
</activity>
53100

54101
<!--
@@ -91,17 +138,6 @@
91138
<!-- android:name="com.bugsnag.android.API_KEY"-->
92139
<!-- android:value="${BUGSNAG_API_KEY}" />-->
93140

94-
<!-- <provider-->
95-
<!-- android:name="androidx.startup.InitializationProvider"-->
96-
<!-- android:authorities="${applicationId}.androidx-startup"-->
97-
<!-- android:exported="false"-->
98-
<!-- tools:node="merge">-->
99-
<!-- <meta-data-->
100-
<!-- android:name="androidx.work.WorkManagerInitializer"-->
101-
<!-- android:value="androidx.startup"-->
102-
<!-- tools:node="remove" />-->
103-
<!-- </provider>-->
104-
105141
</application>
106142

107143
</manifest>

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ import cafe.adriel.voyager.transitions.CrossfadeTransition
2323
import cafe.adriel.voyager.transitions.SlideTransition
2424
import com.flipcash.app.core.LocalUserManager
2525
import com.flipcash.app.core.NavScreenProvider
26-
import com.flipcash.app.router.DeeplinkType
26+
import com.flipcash.app.core.navigation.DeeplinkType
27+
import com.flipcash.app.router.LocalRouter
2728
import com.flipcash.app.session.LocalSessionController
2829
import com.flipcash.app.theme.FlipcashTheme
29-
import com.flipcash.app.ui.LocalRouter
3030
import com.flipcash.app.ui.navigation.AppScreenContent
3131
import com.flipcash.app.ui.navigation.MainRoot
3232
import com.flipcash.services.modals.ModalManager
@@ -52,8 +52,8 @@ fun App(
5252
) {
5353
val router = LocalRouter.currentOrThrow
5454

55-
//We are obtaining deep link here, in case we want to allow for some amount of deep linking when not
56-
//authenticated. Currently we will require authentication to see anything, but can be changed in future.
55+
// We are obtaining deep link here to handle a login request while already logged in to
56+
// present the option for the user to switch accounts
5757
var deepLink by remember { mutableStateOf<DeepLink?>(null) }
5858
var loginRequest by remember { mutableStateOf<String?>(null) }
5959

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import androidx.activity.enableEdgeToEdge
1010
import androidx.compose.runtime.CompositionLocalProvider
1111
import androidx.fragment.app.FragmentActivity
1212
import com.flipcash.app.core.LocalUserManager
13+
import com.flipcash.app.router.LocalRouter
1314
import com.flipcash.app.session.SessionController
1415
import com.flipcash.app.router.Router
1516
import com.flipcash.app.session.LocalSessionController
16-
import com.flipcash.app.ui.LocalRouter
1717
import com.flipcash.services.LocalBillingClient
1818
import com.flipcash.services.billing.BillingClient
1919
import com.flipcash.services.user.UserManager

apps/flipcash/app/src/main/kotlin/com/flipcash/app/ui/Locals.kt

Lines changed: 0 additions & 6 deletions
This file was deleted.

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fun AppScreenContent(content: @Composable () -> Unit) {
4242
}
4343

4444
register<NavScreenProvider.HomeScreen.Scanner> {
45-
ScannerScreen()
45+
ScannerScreen(it.deeplink)
4646
}
4747

4848
register<NavScreenProvider.HomeScreen.Give> {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import cafe.adriel.voyager.navigator.currentOrThrow
3030
import com.flipcash.app.R
3131
import com.flipcash.app.core.LocalUserManager
3232
import com.flipcash.app.core.NavScreenProvider
33-
import com.flipcash.app.ui.LocalRouter
33+
import com.flipcash.app.router.LocalRouter
3434
import com.flipcash.services.user.AuthState
3535
import com.getcode.theme.CodeTheme
3636
import com.getcode.ui.theme.CodeCircularProgressIndicator

apps/flipcash/core/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins {
33
id(Plugins.kotlin_android)
44
id(Plugins.kotlin_ksp)
55
id(Plugins.kotlin_serialization)
6+
id(Plugins.kotlin_parcelize)
67
}
78

89
android {

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.flipcash.app.core
22

33
import cafe.adriel.voyager.core.registry.ScreenProvider
44
import com.flipcash.app.core.money.CurrencySelectionKind
5+
import com.flipcash.app.core.navigation.DeeplinkType
56
import com.getcode.ui.core.RestrictionType
67
import dev.theolm.rinku.DeepLink
78

@@ -25,7 +26,7 @@ sealed class NavScreenProvider : ScreenProvider {
2526
}
2627

2728
sealed interface HomeScreen {
28-
data class Scanner(val deeplink: DeepLink? = null) : NavScreenProvider()
29+
data class Scanner(val deeplink: DeeplinkType? = null) : NavScreenProvider()
2930
data object Give : NavScreenProvider()
3031
data object Send : NavScreenProvider()
3132
data object Balance : NavScreenProvider()

apps/flipcash/core/src/main/kotlin/com/flipcash/app/core/internal/bill/BillController.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,11 @@ class BillController @Inject constructor(
5151
onCreated: (GiftCardAccount) -> Unit,
5252
onError: (Throwable) -> Unit,
5353
) = transactionManager.createGiftCard(amount, owner, onCreated, onError)
54+
55+
fun receiveGiftCard(
56+
entropy: String,
57+
owner: AccountCluster,
58+
onReceived: (LocalFiat) -> Unit,
59+
onError: (Throwable) -> Unit,
60+
) = transactionManager.receiveGiftCard(owner, entropy, onReceived, onError)
5461
}

0 commit comments

Comments
 (0)