Skip to content

Commit a4d6a4e

Browse files
committed
feat(flipcash): add my account menu root
* View Access Key * Relocate delete account from root to here Signed-off-by: Brandon McAnsh <git@bmcreations.dev>
1 parent 61d2590 commit a4d6a4e

45 files changed

Lines changed: 1264 additions & 198 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.

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,4 @@ local.properties
1111
/keystores/**
1212
/app/release/**
1313
/app/debug/**
14+
.kotlin

apps/flipcash/app/build.gradle.kts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ dependencies {
112112
implementation(project(":services:flipcash-compose"))
113113

114114
implementation(project(":apps:flipcash:core"))
115+
implementation(project(":apps:flipcash:shared:accesskey"))
115116
implementation(project(":apps:flipcash:shared:authentication"))
116117
implementation(project(":apps:flipcash:shared:router"))
117118
implementation(project(":apps:flipcash:shared:session"))
118119
implementation(project(":apps:flipcash:shared:currency-selection:core"))
119120
implementation(project(":apps:flipcash:shared:currency-selection:ui"))
120121
implementation(project(":apps:flipcash:shared:permissions"))
121-
implementation(project(":apps:flipcash:features:accesskey"))
122122
implementation(project(":apps:flipcash:features:login"))
123123
implementation(project(":apps:flipcash:features:purchase"))
124124
implementation(project(":apps:flipcash:features:scanner"))
@@ -128,6 +128,8 @@ dependencies {
128128
implementation(project(":apps:flipcash:features:menu"))
129129
implementation(project(":apps:flipcash:features:lab"))
130130
implementation(project(":apps:flipcash:features:deposit"))
131+
implementation(project(":apps:flipcash:features:myaccount"))
132+
implementation(project(":apps:flipcash:features:backupkey"))
131133

132134
implementation(project(":libs:datetime"))
133135
implementation(project(":libs:locale:bindings"))

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package com.flipcash.app.ui.navigation
22

33
import androidx.compose.runtime.Composable
44
import cafe.adriel.voyager.core.registry.ScreenRegistry
5-
import cafe.adriel.voyager.core.screen.Screen
5+
import com.flipcash.app.backupkey.BackupKeyScreen
66
import com.flipcash.app.balance.BalanceScreen
77
import com.flipcash.app.balance.PreloadBalance
88
import com.flipcash.app.core.NavScreenProvider
@@ -14,6 +14,7 @@ import com.flipcash.app.login.accesskey.AccessKeyScreen
1414
import com.flipcash.app.login.router.LoginRouter
1515
import com.flipcash.app.login.seed.SeedInputScreen
1616
import com.flipcash.app.menu.MenuScreen
17+
import com.flipcash.app.myaccount.MyAccountScreen
1718
import com.flipcash.app.permissions.CameraPermissionScreen
1819
import com.flipcash.app.permissions.NotificationPermissionScreen
1920
import com.flipcash.app.purchase.PurchaseAccountScreen
@@ -79,16 +80,17 @@ fun AppScreenContent(content: @Composable () -> Unit) {
7980
register<NavScreenProvider.HomeScreen.Menu.Deposit> {
8081
DepositScreen()
8182
}
83+
84+
register<NavScreenProvider.HomeScreen.Menu.MyAccount.Root> {
85+
MyAccountScreen()
86+
}
87+
88+
register<NavScreenProvider.HomeScreen.Menu.MyAccount.BackupKey> {
89+
BackupKeyScreen()
90+
}
8291
}
8392

8493
PreloadBalance()
8594

8695
content()
87-
}
88-
89-
private class Dummy: Screen {
90-
@Composable
91-
override fun Content() {
92-
93-
}
9496
}

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,12 @@ sealed class NavScreenProvider : ScreenProvider {
3232
data object Root : NavScreenProvider()
3333
data object Deposit : NavScreenProvider()
3434
data object Withdraw : NavScreenProvider()
35-
data object MyAccount : NavScreenProvider()
35+
36+
sealed class MyAccount {
37+
data object Root : NavScreenProvider()
38+
data object BackupKey : NavScreenProvider()
39+
}
40+
3641
data object AppSettings : NavScreenProvider()
3742
data object Lab : NavScreenProvider()
3843
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.flipcash.app.core.extensions
2+
3+
import android.content.ClipData
4+
import android.content.ClipboardManager
5+
6+
fun ClipboardManager.setText(text: CharSequence, label: String) {
7+
setPrimaryClip(ClipData.newPlainText(label, text))
8+
}

apps/flipcash/core/src/main/res/values/strings.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,10 @@
8181
<string name="error_description_failedToDeleteAccount">We were unable to delete your Flipcash account. Please try again</string>
8282

8383
<string name="subtitle_howToDeposit">Deposit cash into your Flipcash wallet by sending USDC to your Deposit Address below. Tap to copy.</string>
84+
85+
<string name="title_clipboardLabelDepositAddress">Deposit Address</string>
86+
<string name="title_clipboardLabelPublicKey">Public Key</string>
87+
<string name="title_clipboardLabelAccountId">Account ID</string>
88+
89+
<string name="prompt_description_viewAccessKey">Your Access Key will grant access to your Flipcash account. Keep it private and safe.</string>
8490
</resources>
File renamed without changes.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
plugins {
2+
id(Plugins.android_library)
3+
id(Plugins.kotlin_android)
4+
id(Plugins.kotlin_ksp)
5+
id(Plugins.hilt)
6+
id(Plugins.kotlin_parcelize)
7+
id(Plugins.jetbrains_compose_compiler)
8+
}
9+
10+
android {
11+
namespace = "${Android.flipcashNamespace}.features.backupkey"
12+
compileSdk = Android.compileSdkVersion
13+
defaultConfig {
14+
minSdk = Android.minSdkVersion
15+
targetSdk = Android.targetSdkVersion
16+
buildToolsVersion = Android.buildToolsVersion
17+
testInstrumentationRunner = Android.testInstrumentationRunner
18+
}
19+
20+
kotlinOptions {
21+
jvmTarget = Versions.java
22+
freeCompilerArgs += listOf(
23+
"-opt-in=kotlin.ExperimentalUnsignedTypes",
24+
"-opt-in=kotlin.RequiresOptIn"
25+
)
26+
}
27+
28+
java {
29+
toolchain {
30+
languageVersion.set(JavaLanguageVersion.of(Versions.java))
31+
}
32+
}
33+
34+
buildFeatures {
35+
buildConfig = true
36+
compose = true
37+
}
38+
}
39+
40+
dependencies {
41+
implementation(Libs.inject)
42+
implementation(Libs.hilt)
43+
ksp(Libs.hilt_android_compiler)
44+
ksp(Libs.hilt_compiler)
45+
46+
implementation(Libs.timber)
47+
48+
implementation(platform(Libs.compose_bom))
49+
implementation(Libs.compose_ui)
50+
implementation(Libs.compose_foundation)
51+
implementation(Libs.compose_material)
52+
implementation(Libs.compose_materialIconsExtended)
53+
54+
implementation(project(":apps:flipcash:shared:accesskey"))
55+
implementation(project(":apps:flipcash:shared:featureflags"))
56+
implementation(project(":apps:flipcash:shared:menu"))
57+
implementation(project(":apps:flipcash:core"))
58+
59+
implementation(project(":libs:datetime"))
60+
implementation(project(":libs:logging"))
61+
implementation(project(":libs:messaging"))
62+
implementation(project(":libs:permissions:bindings"))
63+
implementation(project(":ui:analytics"))
64+
implementation(project(":ui:core"))
65+
implementation(project(":ui:components"))
66+
implementation(project(":ui:navigation"))
67+
implementation(project(":ui:resources"))
68+
implementation(project(":ui:theme"))
69+
implementation(Libs.rinku_compose)
70+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.flipcash.app.backupkey
2+
3+
import android.os.Parcelable
4+
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.fillMaxSize
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.Alignment
8+
import androidx.compose.ui.Modifier
9+
import androidx.compose.ui.res.stringResource
10+
import cafe.adriel.voyager.core.screen.ScreenKey
11+
import cafe.adriel.voyager.core.screen.uniqueScreenKey
12+
import cafe.adriel.voyager.hilt.getViewModel
13+
import com.flipcash.app.backupkey.internal.BackupKeyScreenContent
14+
import com.flipcash.app.backupkey.internal.BackupKeyScreenViewModel
15+
import com.flipcash.core.R
16+
import com.getcode.navigation.core.LocalCodeNavigator
17+
import com.getcode.navigation.modal.ModalScreen
18+
import com.getcode.navigation.screens.NamedScreen
19+
import com.getcode.ui.components.AppBarWithTitle
20+
import kotlinx.parcelize.IgnoredOnParcel
21+
import kotlinx.parcelize.Parcelize
22+
23+
@Parcelize
24+
class BackupKeyScreen: ModalScreen, NamedScreen, Parcelable {
25+
26+
@IgnoredOnParcel
27+
override val key: ScreenKey = uniqueScreenKey
28+
29+
override val name: String
30+
@Composable get() = stringResource(R.string.title_accessKey)
31+
32+
33+
@Composable
34+
override fun ModalContent() {
35+
val viewModel = getViewModel<BackupKeyScreenViewModel>()
36+
val navigator = LocalCodeNavigator.current
37+
38+
Column(
39+
modifier = Modifier.fillMaxSize(),
40+
horizontalAlignment = Alignment.CenterHorizontally,
41+
) {
42+
AppBarWithTitle(
43+
title = name,
44+
isInModal = true,
45+
titleAlignment = Alignment.CenterHorizontally,
46+
backButton = true,
47+
onBackIconClicked = { navigator.pop() },
48+
)
49+
BackupKeyScreenContent(viewModel)
50+
}
51+
}
52+
}

0 commit comments

Comments
 (0)