diff --git a/apps/flipcash/core/src/main/res/values/strings.xml b/apps/flipcash/core/src/main/res/values/strings.xml
index fed44faac..0130d2ed0 100644
--- a/apps/flipcash/core/src/main/res/values/strings.xml
+++ b/apps/flipcash/core/src/main/res/values/strings.xml
@@ -339,6 +339,7 @@
Your email address will be removed from your profile.
Display Name
Social Accounts
+ Account Info
No display name set
No social accounts linked
Unlink Account?
diff --git a/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/internal/LabsScreenContent.kt b/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/internal/LabsScreenContent.kt
index 12bc44eb6..649d357f9 100644
--- a/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/internal/LabsScreenContent.kt
+++ b/apps/flipcash/features/lab/src/main/kotlin/com/flipcash/app/lab/internal/LabsScreenContent.kt
@@ -52,11 +52,15 @@ internal fun LabsScreenContent(viewModel: LabsScreenViewModel) {
.verticalScrollStateGradient(
scrollState = state,
isLongGradient = true,
- ).sheetResignmentBehavior(state),
+ )
+ .sheetResignmentBehavior(state),
contentPadding = PaddingValues(bottom = CodeTheme.dimens.grid.x3),
) {
- item(contentType = "section_header") {
- SectionHeader(stringResource(R.string.title_settingsSectionFeatures))
+ item(contentType = "section_header") {
+ SectionHeader(
+ modifier = Modifier.padding(horizontal = CodeTheme.dimens.inset),
+ title = stringResource(R.string.title_settingsSectionFeatures)
+ )
}
items(betaFlags, key = { it.flag.key }, contentType = { "feature_flag" }) { feature ->
if (feature.flag.isOptionFlag) {
@@ -113,7 +117,12 @@ internal fun LabsScreenContent(viewModel: LabsScreenViewModel) {
}
}
- item(contentType = "section_header") { SectionHeader(stringResource(R.string.title_settingsSectionHomeScreen)) }
+ item(contentType = "section_header") {
+ SectionHeader(
+ modifier = Modifier.padding(horizontal = CodeTheme.dimens.inset),
+ title = stringResource(R.string.title_settingsSectionHomeScreen)
+ )
+ }
item(contentType = "list_item") {
ListItem(
headline = stringResource(R.string.title_settingsButtonOrder),
@@ -124,7 +133,12 @@ internal fun LabsScreenContent(viewModel: LabsScreenViewModel) {
}
if (isStaff) {
- item(contentType = "section_header") { SectionHeader(stringResource(R.string.title_settingsSectionDeveloper)) }
+ item(contentType = "section_header") {
+ SectionHeader(
+ modifier = Modifier.padding(horizontal = CodeTheme.dimens.inset),
+ title = stringResource(R.string.title_settingsSectionDeveloper)
+ )
+ }
item(contentType = "list_item") {
ListItem(
headline = stringResource(R.string.subtitle_settingsUserFlags),
diff --git a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/MyAccountScreen.kt b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/MyAccountScreen.kt
index ccef20424..3e73486cd 100644
--- a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/MyAccountScreen.kt
+++ b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/MyAccountScreen.kt
@@ -17,7 +17,6 @@ import com.flipcash.core.R
import com.getcode.navigation.core.LocalCodeNavigator
import com.getcode.ui.components.AppBarDefaults
import com.getcode.ui.components.AppBarWithTitle
-import com.getcode.ui.core.noRippleClickable
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@@ -35,7 +34,6 @@ fun MyAccountScreen() {
AppBarWithTitle(
title = {
AppBarDefaults.Title(
- modifier = Modifier.noRippleClickable { viewModel.dispatchEvent(MyAccountScreenViewModel.Event.OnTitleClicked) },
text = stringResource(R.string.title_myAccount),
)
},
diff --git a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/AccountInfoHeader.kt b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/AccountInfoHeader.kt
deleted file mode 100644
index 03261895a..000000000
--- a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/AccountInfoHeader.kt
+++ /dev/null
@@ -1,115 +0,0 @@
-package com.flipcash.app.myaccount.internal
-
-import androidx.compose.foundation.border
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.IntrinsicSize
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.width
-import androidx.compose.material.Icon
-import androidx.compose.material.Text
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.CopyAll
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.text.font.FontWeight.Companion.W600
-import androidx.compose.ui.text.style.TextOverflow
-import androidx.compose.ui.unit.dp
-import com.getcode.ui.components.BetaIndicator
-import com.getcode.theme.CodeTheme
-import androidx.compose.foundation.clickable
-
-@Composable
-internal fun AccountInfoHeader(
- state: MyAccountScreenViewModel.State,
- modifier: Modifier = Modifier,
- dispatch: (MyAccountScreenViewModel.Event) -> Unit
-) {
- Box(
- modifier = modifier
- .border(
- color = CodeTheme.colors.border,
- shape = CodeTheme.shapes.small,
- width = CodeTheme.dimens.border
- )
- .padding(CodeTheme.dimens.grid.x2)
- .width(IntrinsicSize.Max)
- .height(IntrinsicSize.Min),
- ) {
- Column(
- modifier = Modifier.fillMaxSize(),
- verticalArrangement = Arrangement.spacedBy(CodeTheme.dimens.grid.x1)
- ) {
- if (!state.publicKey.isNullOrEmpty()) {
- CopyableTextEntry(
- label = "Public Key",
- value = state.publicKey
- ) { dispatch(MyAccountScreenViewModel.Event.CopyPublicKey) }
- }
-
- if (!state.accountId.isNullOrEmpty()) {
- CopyableTextEntry(
- label = "Account ID",
- value = state.accountId
- ) { dispatch(MyAccountScreenViewModel.Event.CopyAccountId) }
- }
-
- if (!state.pushToken.isNullOrEmpty()) {
- CopyableTextEntry(
- label = "Push Token",
- value = state.pushToken
- ) { dispatch(MyAccountScreenViewModel.Event.CopyPushToken) }
- }
-
- BetaIndicator(
- modifier = Modifier.align(Alignment.End)
- )
- }
- }
-}
-
-@Composable
-private fun CopyableTextEntry(
- label: String,
- value: String,
- modifier: Modifier = Modifier,
- onCopy: () -> Unit
-) {
- Column(
- modifier = modifier.clickable(onClick = onCopy)
- ) {
- Row(
- verticalAlignment = Alignment.CenterVertically
- ) {
- Text(
- text = label,
- style = CodeTheme.typography.caption.copy(fontWeight = W600),
- color = CodeTheme.colors.textMain
- )
-
- Icon(
- Icons.Default.CopyAll,
- contentDescription = "Copy",
- tint = CodeTheme.colors.cashBillDecorColor,
- modifier = Modifier
- .size(20.dp)
- .padding(start = CodeTheme.dimens.grid.x1)
- )
- }
- Text(
- modifier = Modifier.fillMaxWidth(),
- text = value,
- style = CodeTheme.typography.caption,
- color = CodeTheme.colors.textSecondary,
- overflow = TextOverflow.MiddleEllipsis,
- maxLines = 1
- )
- }
-}
\ No newline at end of file
diff --git a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenContent.kt b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenContent.kt
index 5a1ff4ffd..45e75931f 100644
--- a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenContent.kt
+++ b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenContent.kt
@@ -1,23 +1,11 @@
package com.flipcash.app.myaccount.internal
-import androidx.compose.animation.AnimatedContent
-import androidx.compose.animation.AnimatedContentTransitionScope
-import androidx.compose.animation.fadeIn
-import androidx.compose.animation.fadeOut
-import androidx.compose.animation.slideInVertically
-import androidx.compose.animation.slideOutVertically
-import androidx.compose.animation.togetherWith
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.flipcash.app.menu.MenuList
-import com.getcode.theme.CodeTheme
@Composable
internal fun MyAccountScreen(viewModel: MyAccountScreenViewModel) {
@@ -31,38 +19,10 @@ private fun MyAccountScreenContent(
state: MyAccountScreenViewModel.State,
dispatch: (MyAccountScreenViewModel.Event) -> Unit
) {
- Column(
+ MenuList(
modifier = Modifier.fillMaxSize(),
- ) {
- AnimatedContent(
- modifier = Modifier.fillMaxWidth(),
- targetState = state.showAccountInfo,
- transitionSpec = {
- slideIntoContainer(AnimatedContentTransitionScope.SlideDirection.Down) togetherWith
- slideOutOfContainer(AnimatedContentTransitionScope.SlideDirection.Up)
- }
- ) { show ->
- if (show) {
- AccountInfoHeader(
- state = state,
- dispatch = dispatch,
- modifier = Modifier
- .fillMaxWidth()
- .padding(
- horizontal = CodeTheme.dimens.inset,
- vertical = CodeTheme.dimens.grid.x2
- )
- )
- } else {
- Spacer(Modifier.fillMaxWidth())
- }
- }
-
- MenuList(
- modifier = Modifier.weight(1f),
- items = state.items,
- showChevrons = true,
- onItemClick = { dispatch(it.action) }
- )
- }
-}
\ No newline at end of file
+ items = state.items,
+ showChevrons = true,
+ onItemClick = { dispatch(it.action) }
+ )
+}
diff --git a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenViewModel.kt b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenViewModel.kt
index c9acf1bfc..ddf0d9457 100644
--- a/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenViewModel.kt
+++ b/apps/flipcash/features/myaccount/src/main/kotlin/com/flipcash/app/myaccount/internal/MyAccountScreenViewModel.kt
@@ -1,9 +1,7 @@
package com.flipcash.app.myaccount.internal
-import android.content.ClipboardManager
import androidx.lifecycle.viewModelScope
import com.flipcash.app.auth.AuthManager
-import com.flipcash.app.core.extensions.setText
import com.flipcash.app.featureflags.FeatureFlagController
import com.flipcash.app.menu.MenuItem
import com.flipcash.app.menu.StaffMenuItem
@@ -12,18 +10,14 @@ import com.flipcash.libs.coroutines.DispatcherProvider
import com.flipcash.services.user.UserManager
import com.getcode.manager.BottomBarAction
import com.getcode.manager.BottomBarManager
-import com.getcode.solana.keys.base58
import com.getcode.util.resources.ResourceHelper
-import com.getcode.utils.base64
import com.getcode.view.BaseViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.combine
-import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.filterIsInstance
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.map
-import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -41,7 +35,6 @@ internal class MyAccountScreenViewModel @Inject constructor(
featureFlagController: FeatureFlagController,
resources: ResourceHelper,
authManager: AuthManager,
- clipboardManager: ClipboardManager,
dispatchers: DispatcherProvider,
) : BaseViewModel(
initialState = State(),
@@ -50,51 +43,22 @@ internal class MyAccountScreenViewModel @Inject constructor(
) {
internal data class State(
val isBetaEnabled: Boolean = false,
- val showAccountInfo: Boolean = false,
- val accountId: String? = null,
- val publicKey: String? = null,
- val pushToken: String? = null,
val items: List