From 2281a8e60f283a62a2363d0ffb94f235fd93f694 Mon Sep 17 00:00:00 2001 From: Milan Cerovsky Date: Tue, 1 Apr 2025 13:29:41 +0200 Subject: [PATCH] Bottom sheet code cleanup --- .../design/component/ZashiModalBottomSheet.kt | 2 +- .../component/ZashiScreenModalBottomSheet.kt | 59 ++++++++ .../screen/accountlist/AndroidAccountList.kt | 33 +---- .../accountlist/model/AccountListState.kt | 5 +- .../accountlist/view/AccountListView.kt | 19 +-- .../zcash/ui/screen/home/HomeView.kt | 12 +- .../zcash/ui/screen/home/HomeViewModel.kt | 1 - .../ui/screen/home/messages/HomeMessage.kt | 131 ++++++++++-------- .../screen/home/messages/HomeMessageState.kt | 2 +- .../home/messages/HomeMessageWrapper.kt | 11 +- .../home/messages/WalletBackupMessageState.kt | 34 +++-- .../integrations/AndroidDialogIntegrations.kt | 25 ---- .../integrations/IntegrationsDialogView.kt | 13 +- .../screen/integrations/IntegrationsState.kt | 5 +- .../ui/screen/restore/info/AndroidSeedInfo.kt | 22 --- .../ui/screen/restore/info/SeedInfoState.kt | 6 +- .../ui/screen/restore/info/SeedInfoView.kt | 15 +- .../screen/seed/backup/AndroidSeedBackup.kt | 15 +- .../ui/screen/seed/backup/SeedBackupView.kt | 20 +-- .../AndroidTransactionFilters.kt | 25 ---- .../model/TransactionFiltersState.kt | 5 +- .../view/TransactionFiltersView.kt | 13 +- .../transactionnote/AndroidTransactionNote.kt | 39 +----- .../model/TransactionNoteState.kt | 5 +- .../view/TransactionNoteView.kt | 11 +- 25 files changed, 227 insertions(+), 301 deletions(-) create mode 100644 ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiScreenModalBottomSheet.kt diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiModalBottomSheet.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiModalBottomSheet.kt index 8f6967714..7c253a8f5 100644 --- a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiModalBottomSheet.kt +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiModalBottomSheet.kt @@ -90,7 +90,7 @@ fun rememberModalBottomSheetState( @Composable @ExperimentalMaterial3Api -private fun rememberSheetState( +fun rememberSheetState( skipPartiallyExpanded: Boolean, confirmValueChange: (SheetValue) -> Boolean, initialValue: SheetValue, diff --git a/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiScreenModalBottomSheet.kt b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiScreenModalBottomSheet.kt new file mode 100644 index 000000000..b2bae7adc --- /dev/null +++ b/ui-design-lib/src/main/java/co/electriccoin/zcash/ui/design/component/ZashiScreenModalBottomSheet.kt @@ -0,0 +1,59 @@ +package co.electriccoin.zcash.ui.design.component + +import androidx.activity.compose.BackHandler +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.SheetState +import androidx.compose.material3.SheetValue +import androidx.compose.material3.SheetValue.Hidden +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import co.electriccoin.zcash.ui.design.LocalSheetStateManager + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ZashiScreenModalBottomSheet( + state: T?, + sheetState: SheetState = rememberScreenModalBottomSheetState(), + content: @Composable () -> Unit = {}, +) { + ZashiModalBottomSheet( + sheetState = sheetState, + content = { + BackHandler(state != null) { + state?.onBack?.invoke() + } + content() + }, + onDismissRequest = { state?.onBack?.invoke() } + ) + + LaunchedEffect(Unit) { + sheetState.show() + } +} + +@Composable +@ExperimentalMaterial3Api +fun rememberScreenModalBottomSheetState( + initialValue: SheetValue = Hidden, + skipHiddenState: Boolean = false, + skipPartiallyExpanded: Boolean = true, + confirmValueChange: (SheetValue) -> Boolean = { true }, +): SheetState { + val sheetManager = LocalSheetStateManager.current + val sheetState = + rememberSheetState( + skipPartiallyExpanded = skipPartiallyExpanded, + confirmValueChange = confirmValueChange, + initialValue = initialValue, + skipHiddenState = skipHiddenState, + ) + DisposableEffect(sheetState) { + sheetManager.onSheetOpened(sheetState) + onDispose { + sheetManager.onSheetDisposed(sheetState) + } + } + return sheetState +} diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/AndroidAccountList.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/AndroidAccountList.kt index d1d02b780..5ad2019c4 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/AndroidAccountList.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/AndroidAccountList.kt @@ -1,18 +1,13 @@ package co.electriccoin.zcash.ui.screen.accountlist import android.view.WindowManager -import androidx.activity.compose.BackHandler import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.ui.platform.LocalView import androidx.compose.ui.window.DialogWindowProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle -import co.electriccoin.zcash.ui.design.LocalSheetStateManager -import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState import co.electriccoin.zcash.ui.screen.accountlist.view.AccountListView import co.electriccoin.zcash.ui.screen.accountlist.viewmodel.AccountListViewModel import org.koin.androidx.compose.koinViewModel @@ -22,38 +17,12 @@ import org.koin.androidx.compose.koinViewModel fun AndroidAccountList() { val viewModel = koinViewModel() val state by viewModel.state.collectAsStateWithLifecycle() - - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val sheetManager = LocalSheetStateManager.current - DisposableEffect(sheetState) { - sheetManager.onSheetOpened(sheetState) - onDispose { - sheetManager.onSheetDisposed(sheetState) - } - } - val parent = LocalView.current.parent - SideEffect { (parent as? DialogWindowProvider)?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) (parent as? DialogWindowProvider)?.window?.setDimAmount(0f) } - state?.let { - AccountListView( - state = it, - sheetState = sheetState, - onDismissRequest = { - state?.onBack?.invoke() - } - ) - - LaunchedEffect(Unit) { - sheetState.show() - } - - BackHandler { - state?.onBack?.invoke() - } + AccountListView(it) } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt index af6a7598a..bf528eeda 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/model/AccountListState.kt @@ -2,6 +2,7 @@ package co.electriccoin.zcash.ui.screen.accountlist.model import androidx.annotation.DrawableRes import co.electriccoin.zcash.ui.design.component.ButtonState +import co.electriccoin.zcash.ui.design.component.ModalBottomSheetState import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemState import co.electriccoin.zcash.ui.design.util.StringResource @@ -9,8 +10,8 @@ data class AccountListState( val items: List?, val isLoading: Boolean, val addWalletButton: ButtonState?, - val onBack: () -> Unit, -) + override val onBack: () -> Unit, +) : ModalBottomSheetState data class ZashiAccountListItemState( @DrawableRes val icon: Int, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt index 7d7e85082..3d8516a9b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/accountlist/view/AccountListView.kt @@ -33,13 +33,14 @@ import co.electriccoin.zcash.ui.design.component.ButtonState import co.electriccoin.zcash.ui.design.component.LottieProgress import co.electriccoin.zcash.ui.design.component.ZashiButton import co.electriccoin.zcash.ui.design.component.ZashiButtonDefaults -import co.electriccoin.zcash.ui.design.component.ZashiModalBottomSheet +import co.electriccoin.zcash.ui.design.component.ZashiScreenModalBottomSheet import co.electriccoin.zcash.ui.design.component.listitem.BaseListItem import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemColors import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemDefaults import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemDesignType import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemState import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState +import co.electriccoin.zcash.ui.design.component.rememberScreenModalBottomSheetState import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens import co.electriccoin.zcash.ui.design.theme.ZcashTheme import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors @@ -54,16 +55,15 @@ import kotlinx.collections.immutable.persistentListOf @Composable @OptIn(ExperimentalMaterial3Api::class) internal fun AccountListView( - onDismissRequest: () -> Unit, - sheetState: SheetState, - state: AccountListState + state: AccountListState, + sheetState: SheetState = rememberScreenModalBottomSheetState(), ) { - ZashiModalBottomSheet( + ZashiScreenModalBottomSheet( + state = state, sheetState = sheetState, content = { BottomSheetContent(state) }, - onDismissRequest = onDismissRequest ) } @@ -111,7 +111,10 @@ private fun BottomSheetContent(state: AccountListState) { Spacer(modifier = Modifier.height(32.dp)) ZashiButton( state = state.addWalletButton, - modifier = Modifier.fillMaxWidth().padding(horizontal = 24.dp), + modifier = + Modifier + .fillMaxWidth() + .padding(horizontal = 24.dp), colors = ZashiButtonDefaults.secondaryColors( borderColor = ZashiColors.Btns.Secondary.btnSecondaryBorder @@ -273,7 +276,6 @@ private fun Preview() = onBack = {}, addWalletButton = ButtonState(stringRes("Connect Hardware Wallet")) ), - onDismissRequest = {}, sheetState = rememberModalBottomSheetState( skipHiddenState = true, @@ -317,7 +319,6 @@ private fun HardwareWalletAddedPreview() = onBack = {}, addWalletButton = null ), - onDismissRequest = {}, sheetState = rememberModalBottomSheetState( skipHiddenState = true, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeView.kt index 14014308f..c2548d208 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeView.kt @@ -11,11 +11,6 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.testTag @@ -35,12 +30,9 @@ import co.electriccoin.zcash.ui.fixture.ZashiMainTopAppBarStateFixture import co.electriccoin.zcash.ui.screen.balances.BalanceState import co.electriccoin.zcash.ui.screen.balances.BalanceWidget import co.electriccoin.zcash.ui.screen.home.messages.HomeMessage -import co.electriccoin.zcash.ui.screen.home.messages.HomeMessageState import co.electriccoin.zcash.ui.screen.transactionhistory.widget.TransactionHistoryWidgetState import co.electriccoin.zcash.ui.screen.transactionhistory.widget.TransactionHistoryWidgetStateFixture import co.electriccoin.zcash.ui.screen.transactionhistory.widget.createTransactionHistoryWidgets -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch @Composable internal fun HomeView( @@ -142,8 +134,6 @@ private fun NavButtons( @Composable private fun Preview() { ZcashTheme { - var isHomeMessageStateVisible by remember { mutableStateOf(true) } - val scope = rememberCoroutineScope() HomeView( appBarState = ZashiMainTopAppBarStateFixture.new(), balanceState = BalanceStateFixture.new(), @@ -174,7 +164,7 @@ private fun Preview() { icon = R.drawable.ic_warning, onClick = {} ), - message = null.takeIf { isHomeMessageStateVisible } + message = null ) ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeViewModel.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeViewModel.kt index 552e4432b..8798157b4 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeViewModel.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/HomeViewModel.kt @@ -40,7 +40,6 @@ class HomeViewModel( private val isRestoreSuccessDialogVisible: IsRestoreSuccessDialogVisibleUseCase, private val navigateToCoinbase: NavigateToCoinbaseUseCase ) : ViewModel() { - private val isMessageVisible = MutableStateFlow(true) private val isRestoreDialogVisible: Flow = diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessage.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessage.kt index 4d04456a2..ff389bee2 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessage.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessage.kt @@ -35,6 +35,7 @@ import androidx.compose.ui.zIndex import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors import kotlinx.coroutines.delay +@Suppress("MagicNumber") @Composable fun HomeMessage(state: HomeMessageState?) { val cutoutHeight = 16.dp @@ -46,36 +47,41 @@ fun HomeMessage(state: HomeMessageState?) { ) Box( - modifier = Modifier - .background(Color.Gray) + modifier = + Modifier + .background(Color.Gray) ) { Box( - modifier = Modifier - .fillMaxWidth() - .height(cutoutHeight) - .zIndex(2f) - .bottomOnlyShadow( - elevation = 2.dp, - shape = RoundedCornerShape(bottomStart = 32.dp, bottomEnd = 32.dp), - backgroundColor = ZashiColors.Surfaces.bgPrimary - ), + modifier = + Modifier + .fillMaxWidth() + .height(cutoutHeight) + .zIndex(2f) + .bottomOnlyShadow( + elevation = 2.dp, + shape = RoundedCornerShape(bottomStart = 32.dp, bottomEnd = 32.dp), + backgroundColor = ZashiColors.Surfaces.bgPrimary + ), ) AnimatedVisibility( - modifier = Modifier - .fillMaxWidth() - .zIndex(0f), + modifier = + Modifier + .fillMaxWidth() + .zIndex(0f), visible = isVisible, enter = expandIn(animationSpec = tween(350)), exit = shrinkOut(animationSpec = tween(350)) ) { when (normalizedState) { - is WalletBackupMessageState -> WalletBackupMessage( - state = normalizedState as WalletBackupMessageState, - contentPadding = PaddingValues( - vertical = cutoutHeight + is WalletBackupMessageState -> + WalletBackupMessage( + state = normalizedState as WalletBackupMessageState, + contentPadding = + PaddingValues( + vertical = cutoutHeight + ) ) - ) null -> { // do nothing @@ -84,16 +90,17 @@ fun HomeMessage(state: HomeMessageState?) { } Box( - modifier = Modifier - .fillMaxWidth() - .height(cutoutHeight) - .zIndex(1f) - .align(Alignment.BottomCenter) - .topOnlyShadow( - elevation = 2.dp, - shape = RoundedCornerShape(topStart = bottomCornerSize, topEnd = bottomCornerSize), - backgroundColor = ZashiColors.Surfaces.bgPrimary - ), + modifier = + Modifier + .fillMaxWidth() + .height(cutoutHeight) + .zIndex(1f) + .align(Alignment.BottomCenter) + .topOnlyShadow( + elevation = 2.dp, + shape = RoundedCornerShape(topStart = bottomCornerSize, topEnd = bottomCornerSize), + backgroundColor = ZashiColors.Surfaces.bgPrimary + ), ) } @@ -116,25 +123,26 @@ private fun Modifier.bottomOnlyShadow( clip: Boolean = elevation > 0.dp, ambientColor: Color = DefaultShadowColor, spotColor: Color = DefaultShadowColor, -): Modifier = this - .drawWithCache { - // bottom shadow offset in Px based on elevation - val bottomOffsetPx = elevation.toPx() - // Adjust the size to extend the bottom by the bottom shadow offset - val adjustedSize = Size(size.width, size.height + bottomOffsetPx) - val outline = shape.createOutline(adjustedSize, layoutDirection, this) - val path = Path().apply { addOutline(outline) } - onDrawWithContent { - clipPath(path, ClipOp.Intersect) { - this@onDrawWithContent.drawContent() +): Modifier = + this + .drawWithCache { + // bottom shadow offset in Px based on elevation + val bottomOffsetPx = elevation.toPx() + // Adjust the size to extend the bottom by the bottom shadow offset + val adjustedSize = Size(size.width, size.height + bottomOffsetPx) + val outline = shape.createOutline(adjustedSize, layoutDirection, this) + val path = Path().apply { addOutline(outline) } + onDrawWithContent { + clipPath(path, ClipOp.Intersect) { + this@onDrawWithContent.drawContent() + } } } - } - .shadow(elevation, shape, clip, ambientColor, spotColor) - .background( - backgroundColor, - shape - ) + .shadow(elevation, shape, clip, ambientColor, spotColor) + .background( + backgroundColor, + shape + ) private fun Modifier.topOnlyShadow( elevation: Dp, @@ -143,20 +151,21 @@ private fun Modifier.topOnlyShadow( clip: Boolean = elevation > 0.dp, ambientColor: Color = DefaultShadowColor, spotColor: Color = DefaultShadowColor, -): Modifier = this - .drawWithCache { - // Adjust the size to extend the bottom by the bottom shadow offset - val adjustedSize = Size(size.width, size.height) - val outline = shape.createOutline(adjustedSize, layoutDirection, this) - val path = Path().apply { addOutline(outline) } - onDrawWithContent { - clipPath(path, ClipOp.Intersect) { - this@onDrawWithContent.drawContent() +): Modifier = + this + .drawWithCache { + // Adjust the size to extend the bottom by the bottom shadow offset + val adjustedSize = Size(size.width, size.height) + val outline = shape.createOutline(adjustedSize, layoutDirection, this) + val path = Path().apply { addOutline(outline) } + onDrawWithContent { + clipPath(path, ClipOp.Intersect) { + this@onDrawWithContent.drawContent() + } } } - } - .shadow(elevation, shape, clip, ambientColor, spotColor) - .background( - backgroundColor, - shape - ) + .shadow(elevation, shape, clip, ambientColor, spotColor) + .background( + backgroundColor, + shape + ) diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageState.kt index 3e1c6e2df..8fc1524eb 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageState.kt @@ -1,3 +1,3 @@ package co.electriccoin.zcash.ui.screen.home.messages -sealed interface HomeMessageState \ No newline at end of file +sealed interface HomeMessageState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageWrapper.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageWrapper.kt index 67274da68..b0b8115bb 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageWrapper.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/HomeMessageWrapper.kt @@ -25,13 +25,14 @@ fun HomeMessageWrapper( modifier = Modifier.padding(contentPadding) ) { Row( - modifier = Modifier.padding( - horizontal = 16.dp, - vertical = 14.dp - ), + modifier = + Modifier.padding( + horizontal = 16.dp, + vertical = 14.dp + ), verticalAlignment = Alignment.CenterVertically, content = content ) } } -} \ No newline at end of file +} diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/WalletBackupMessageState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/WalletBackupMessageState.kt index 6cb9c4fa9..f16c3493a 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/WalletBackupMessageState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/home/messages/WalletBackupMessageState.kt @@ -25,7 +25,10 @@ import co.electriccoin.zcash.ui.design.theme.typography.ZashiTypography import co.electriccoin.zcash.ui.design.util.stringRes @Composable -fun WalletBackupMessage(state: WalletBackupMessageState, contentPadding: PaddingValues) { +fun WalletBackupMessage( + state: WalletBackupMessageState, + contentPadding: PaddingValues +) { HomeMessageWrapper( color = ZashiColors.Utility.Espresso.utilityEspresso100, contentPadding = contentPadding, @@ -54,10 +57,11 @@ fun WalletBackupMessage(state: WalletBackupMessageState, contentPadding: Padding } ZashiButton( modifier = Modifier.height(36.dp), - state = ButtonState( - onClick = state.onClick, - text = stringRes("Start") - ) + state = + ButtonState( + onClick = state.onClick, + text = stringRes("Start") + ) ) } } @@ -69,13 +73,15 @@ data class WalletBackupMessageState( @PreviewScreens @Composable -private fun Preview() = ZcashTheme { - BlankSurface { - WalletBackupMessage( - state = WalletBackupMessageState( - onClick = {} - ), - contentPadding = PaddingValues() - ) +private fun Preview() = + ZcashTheme { + BlankSurface { + WalletBackupMessage( + state = + WalletBackupMessageState( + onClick = {} + ), + contentPadding = PaddingValues() + ) + } } -} diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidDialogIntegrations.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidDialogIntegrations.kt index 45a56764c..e212dce51 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidDialogIntegrations.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/AndroidDialogIntegrations.kt @@ -1,18 +1,13 @@ package co.electriccoin.zcash.ui.screen.integrations import android.view.WindowManager -import androidx.activity.compose.BackHandler import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.ui.platform.LocalView import androidx.compose.ui.window.DialogWindowProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle -import co.electriccoin.zcash.ui.design.LocalSheetStateManager -import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState import kotlinx.serialization.Serializable import org.koin.androidx.compose.koinViewModel import org.koin.core.parameter.parametersOf @@ -20,22 +15,10 @@ import org.koin.core.parameter.parametersOf @OptIn(ExperimentalMaterial3Api::class) @Composable fun AndroidDialogIntegrations() { - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val sheetManager = LocalSheetStateManager.current - DisposableEffect(sheetState) { - sheetManager.onSheetOpened(sheetState) - onDispose { - sheetManager.onSheetDisposed(sheetState) - } - } val parent = LocalView.current.parent val viewModel = koinViewModel { parametersOf(true) } val state by viewModel.state.collectAsStateWithLifecycle() - BackHandler(enabled = state != null) { - state?.onBack?.invoke() - } - SideEffect { (parent as? DialogWindowProvider)?.window?.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND) (parent as? DialogWindowProvider)?.window?.setDimAmount(0f) @@ -44,15 +27,7 @@ fun AndroidDialogIntegrations() { state?.let { IntegrationsDialogView( state = it, - sheetState = sheetState, - onDismissRequest = { - it.onBack() - } ) - - LaunchedEffect(Unit) { - sheetState.show() - } } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsDialogView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsDialogView.kt index 770558670..a3c95ac1b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsDialogView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsDialogView.kt @@ -25,9 +25,10 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import co.electriccoin.zcash.ui.R import co.electriccoin.zcash.ui.design.component.HorizontalSpacer -import co.electriccoin.zcash.ui.design.component.ZashiModalBottomSheet +import co.electriccoin.zcash.ui.design.component.ZashiScreenModalBottomSheet import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemState import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState +import co.electriccoin.zcash.ui.design.component.rememberScreenModalBottomSheetState import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens import co.electriccoin.zcash.ui.design.theme.ZcashTheme import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors @@ -38,16 +39,15 @@ import kotlinx.collections.immutable.persistentListOf @Composable @OptIn(ExperimentalMaterial3Api::class) internal fun IntegrationsDialogView( - onDismissRequest: () -> Unit, - sheetState: SheetState, - state: IntegrationsState + state: IntegrationsState, + sheetState: SheetState = rememberScreenModalBottomSheetState(), ) { - ZashiModalBottomSheet( + ZashiScreenModalBottomSheet( + state = state, sheetState = sheetState, content = { BottomSheetContent(state) }, - onDismissRequest = onDismissRequest ) } @@ -99,7 +99,6 @@ fun BottomSheetContent(state: IntegrationsState) { private fun IntegrationSettings() = ZcashTheme { IntegrationsDialogView( - onDismissRequest = {}, sheetState = rememberModalBottomSheetState( skipHiddenState = true, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsState.kt index caeebbdfb..c49a77c7d 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/integrations/IntegrationsState.kt @@ -1,11 +1,12 @@ package co.electriccoin.zcash.ui.screen.integrations +import co.electriccoin.zcash.ui.design.component.ModalBottomSheetState import co.electriccoin.zcash.ui.design.component.listitem.ZashiListItemState import co.electriccoin.zcash.ui.design.util.StringResource import kotlinx.collections.immutable.ImmutableList data class IntegrationsState( val disabledInfo: StringResource?, - val onBack: () -> Unit, + override val onBack: () -> Unit, val items: ImmutableList, -) +) : ModalBottomSheetState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/AndroidSeedInfo.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/AndroidSeedInfo.kt index 8219d63e6..de7bdb20b 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/AndroidSeedInfo.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/AndroidSeedInfo.kt @@ -3,17 +3,11 @@ package co.electriccoin.zcash.ui.screen.restore.info import android.view.WindowManager import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.platform.LocalView import androidx.compose.ui.window.DialogWindowProvider import co.electriccoin.zcash.ui.NavigationRouter -import co.electriccoin.zcash.ui.design.LocalSheetStateManager -import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState -import kotlinx.coroutines.launch import kotlinx.serialization.Serializable import org.koin.compose.koinInject @@ -28,25 +22,9 @@ fun AndroidSeedInfo() { (parent as? DialogWindowProvider)?.window?.setDimAmount(0f) } - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val sheetManager = LocalSheetStateManager.current - - DisposableEffect(sheetState) { - sheetManager.onSheetOpened(sheetState) - onDispose { - sheetManager.onSheetDisposed(sheetState) - } - } - SeedInfoView( - sheetState = sheetState, state = remember { SeedInfoState(onBack = { navigationRouter.back() }) }, - onDismissRequest = { navigationRouter.back() } ) - - LaunchedEffect(Unit) { - sheetState.show() - } } @Serializable diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoState.kt index f3822d2b6..c06133a23 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoState.kt @@ -1,5 +1,7 @@ package co.electriccoin.zcash.ui.screen.restore.info +import co.electriccoin.zcash.ui.design.component.ModalBottomSheetState + data class SeedInfoState( - val onBack: () -> Unit -) + override val onBack: () -> Unit +) : ModalBottomSheetState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoView.kt index 4ff06040b..0ec12f507 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/restore/info/SeedInfoView.kt @@ -1,6 +1,5 @@ package co.electriccoin.zcash.ui.screen.restore.info -import androidx.activity.compose.BackHandler import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -28,8 +27,9 @@ import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import co.electriccoin.zcash.ui.R import co.electriccoin.zcash.ui.design.component.ZashiButton -import co.electriccoin.zcash.ui.design.component.ZashiModalBottomSheet +import co.electriccoin.zcash.ui.design.component.ZashiScreenModalBottomSheet import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState +import co.electriccoin.zcash.ui.design.component.rememberScreenModalBottomSheetState import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens import co.electriccoin.zcash.ui.design.theme.ZcashTheme import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors @@ -38,19 +38,15 @@ import co.electriccoin.zcash.ui.design.theme.typography.ZashiTypography @Composable @OptIn(ExperimentalMaterial3Api::class) internal fun SeedInfoView( - onDismissRequest: () -> Unit, state: SeedInfoState, - sheetState: SheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true), + sheetState: SheetState = rememberScreenModalBottomSheetState(), ) { - ZashiModalBottomSheet( + ZashiScreenModalBottomSheet( + state = state, sheetState = sheetState, content = { - BackHandler { - state.onBack() - } Content(state) }, - onDismissRequest = onDismissRequest ) } @@ -132,6 +128,5 @@ private fun Preview() = initialValue = SheetValue.Expanded, ), state = SeedInfoState { }, - onDismissRequest = {} ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/AndroidSeedBackup.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/AndroidSeedBackup.kt index 3d694bc52..715286869 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/AndroidSeedBackup.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/AndroidSeedBackup.kt @@ -18,13 +18,14 @@ fun AndroidSeedBackup() { val viewModel = koinActivityViewModel() val appBarState by viewModel.walletStateInformation.collectAsStateWithLifecycle() val navigationRouter = koinInject() - val state = remember { - SeedBackupState( - onBack = { navigationRouter.back() }, - onNextClick = { navigationRouter.replace(SeedRecovery) }, - onInfoClick = { navigationRouter.forward(SeedInfo) } - ) - } + val state = + remember { + SeedBackupState( + onBack = { navigationRouter.back() }, + onNextClick = { navigationRouter.replace(SeedRecovery) }, + onInfoClick = { navigationRouter.forward(SeedInfo) } + ) + } BackHandler { state.onBack() diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/SeedBackupView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/SeedBackupView.kt index 8e92780ad..bbf4df4f1 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/SeedBackupView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/seed/backup/SeedBackupView.kt @@ -157,10 +157,11 @@ private fun Content( VerticalSpacer(24.dp) ZashiButton( - state = ButtonState( - text = stringRes(stringResource(R.string.wallet_backup_btn)), - onClick = state.onNextClick - ), + state = + ButtonState( + text = stringRes(stringResource(R.string.wallet_backup_btn)), + onClick = state.onNextClick + ), modifier = Modifier.fillMaxWidth() ) } @@ -202,10 +203,11 @@ private fun Preview() = ZcashTheme { SeedBackupView( appBarState = TopAppBarSubTitleState.None, - state = SeedBackupState( - onBack = {}, - onNextClick = {}, - onInfoClick = {} - ) + state = + SeedBackupState( + onBack = {}, + onNextClick = {}, + onInfoClick = {} + ) ) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/AndroidTransactionFilters.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/AndroidTransactionFilters.kt index abac116cf..d5b8d600a 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/AndroidTransactionFilters.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/AndroidTransactionFilters.kt @@ -1,18 +1,13 @@ package co.electriccoin.zcash.ui.screen.transactionfilters import android.view.WindowManager -import androidx.activity.compose.BackHandler import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.ui.platform.LocalView import androidx.compose.ui.window.DialogWindowProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle -import co.electriccoin.zcash.ui.design.LocalSheetStateManager -import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState import co.electriccoin.zcash.ui.screen.transactionfilters.view.TransactionFiltersView import co.electriccoin.zcash.ui.screen.transactionfilters.viewmodel.TransactionFiltersViewModel import org.koin.androidx.compose.koinViewModel @@ -22,16 +17,6 @@ import org.koin.androidx.compose.koinViewModel fun AndroidTransactionFiltersList() { val viewModel = koinViewModel() val state by viewModel.state.collectAsStateWithLifecycle() - - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val sheetManager = LocalSheetStateManager.current - DisposableEffect(sheetState) { - sheetManager.onSheetOpened(sheetState) - onDispose { - sheetManager.onSheetDisposed(sheetState) - } - } - val parent = LocalView.current.parent SideEffect { @@ -41,15 +26,5 @@ fun AndroidTransactionFiltersList() { TransactionFiltersView( state = state, - sheetState = sheetState, - onDismissRequest = state?.onBack ?: {} ) - - LaunchedEffect(Unit) { - sheetState.show() - } - - BackHandler(state != null) { - state?.onBack?.invoke() - } } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/model/TransactionFiltersState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/model/TransactionFiltersState.kt index 87bf5ac4b..abf576957 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/model/TransactionFiltersState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/model/TransactionFiltersState.kt @@ -1,14 +1,15 @@ package co.electriccoin.zcash.ui.screen.transactionfilters.model import co.electriccoin.zcash.ui.design.component.ButtonState +import co.electriccoin.zcash.ui.design.component.ModalBottomSheetState import co.electriccoin.zcash.ui.design.util.StringResource data class TransactionFiltersState( val filters: List, - val onBack: () -> Unit, + override val onBack: () -> Unit, val primaryButton: ButtonState, val secondaryButton: ButtonState -) +) : ModalBottomSheetState data class TransactionFilterState( val text: StringResource, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/view/TransactionFiltersView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/view/TransactionFiltersView.kt index 385966539..c07314513 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/view/TransactionFiltersView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionfilters/view/TransactionFiltersView.kt @@ -35,8 +35,9 @@ import co.electriccoin.zcash.ui.design.component.ZashiButtonDefaults import co.electriccoin.zcash.ui.design.component.ZashiChipButton import co.electriccoin.zcash.ui.design.component.ZashiChipButtonDefaults import co.electriccoin.zcash.ui.design.component.ZashiChipButtonState -import co.electriccoin.zcash.ui.design.component.ZashiModalBottomSheet +import co.electriccoin.zcash.ui.design.component.ZashiScreenModalBottomSheet import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState +import co.electriccoin.zcash.ui.design.component.rememberScreenModalBottomSheetState import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens import co.electriccoin.zcash.ui.design.theme.ZcashTheme import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors @@ -47,16 +48,15 @@ import co.electriccoin.zcash.ui.screen.transactionfilters.model.TransactionFilte @Composable @OptIn(ExperimentalMaterial3Api::class) internal fun TransactionFiltersView( - onDismissRequest: () -> Unit, - sheetState: SheetState, - state: TransactionFiltersState? + state: TransactionFiltersState?, + sheetState: SheetState = rememberScreenModalBottomSheetState(), ) { - ZashiModalBottomSheet( + ZashiScreenModalBottomSheet( + state = state, sheetState = sheetState, content = { BottomSheetContent(state) }, - onDismissRequest = onDismissRequest ) } @@ -168,7 +168,6 @@ private fun Preview() = ZcashTheme { TransactionFiltersView( state = TransactionFiltersStateFixture.new(), - onDismissRequest = {}, sheetState = rememberModalBottomSheetState( skipHiddenState = true, diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/AndroidTransactionNote.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/AndroidTransactionNote.kt index 9ff5fb430..223087877 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/AndroidTransactionNote.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/AndroidTransactionNote.kt @@ -1,23 +1,15 @@ package co.electriccoin.zcash.ui.screen.transactionnote import android.view.WindowManager -import androidx.activity.compose.BackHandler import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.SheetValue.Expanded import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue -import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.platform.LocalView import androidx.compose.ui.window.DialogWindowProvider import androidx.lifecycle.compose.collectAsStateWithLifecycle -import co.electriccoin.zcash.ui.design.LocalSheetStateManager -import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState import co.electriccoin.zcash.ui.screen.transactionnote.view.TransactionNoteView import co.electriccoin.zcash.ui.screen.transactionnote.viewmodel.TransactionNoteViewModel -import kotlinx.coroutines.cancel import org.koin.androidx.compose.koinViewModel import org.koin.core.parameter.parametersOf @@ -26,15 +18,6 @@ import org.koin.core.parameter.parametersOf fun AndroidTransactionNote(transactionNote: TransactionNote) { val viewModel = koinViewModel { parametersOf(transactionNote) } val state by viewModel.state.collectAsStateWithLifecycle() - - val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - val sheetManager = LocalSheetStateManager.current - DisposableEffect(sheetState) { - sheetManager.onSheetOpened(sheetState) - onDispose { - sheetManager.onSheetDisposed(sheetState) - } - } val parent = LocalView.current.parent SideEffect { @@ -42,25 +25,5 @@ fun AndroidTransactionNote(transactionNote: TransactionNote) { (parent as? DialogWindowProvider)?.window?.setDimAmount(0f) } - TransactionNoteView( - state = state, - sheetState = sheetState, - onDismissRequest = state.onBack, - ) - - LaunchedEffect(Unit) { - sheetState.show() - } - - LaunchedEffect(Unit) { - snapshotFlow { sheetState.currentValue }.collect { - if (it == Expanded) { - this.cancel() - } - } - } - - BackHandler { - state.onBack() - } + TransactionNoteView(state = state) } diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/model/TransactionNoteState.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/model/TransactionNoteState.kt index 2ba1aacba..2a2f84e68 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/model/TransactionNoteState.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/model/TransactionNoteState.kt @@ -1,16 +1,17 @@ package co.electriccoin.zcash.ui.screen.transactionnote.model import co.electriccoin.zcash.ui.design.component.ButtonState +import co.electriccoin.zcash.ui.design.component.ModalBottomSheetState import co.electriccoin.zcash.ui.design.component.TextFieldState import co.electriccoin.zcash.ui.design.util.StringResource import co.electriccoin.zcash.ui.design.util.StyledStringResource data class TransactionNoteState( - val onBack: () -> Unit, + override val onBack: () -> Unit, val title: StringResource, val note: TextFieldState, val noteCharacters: StyledStringResource, val primaryButton: ButtonState?, val secondaryButton: ButtonState?, val negative: ButtonState?, -) +) : ModalBottomSheetState diff --git a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/view/TransactionNoteView.kt b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/view/TransactionNoteView.kt index 8e82e7ed2..212ad7fa8 100644 --- a/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/view/TransactionNoteView.kt +++ b/ui-lib/src/main/java/co/electriccoin/zcash/ui/screen/transactionnote/view/TransactionNoteView.kt @@ -22,9 +22,10 @@ import co.electriccoin.zcash.ui.design.component.ButtonState import co.electriccoin.zcash.ui.design.component.TextFieldState import co.electriccoin.zcash.ui.design.component.ZashiButton import co.electriccoin.zcash.ui.design.component.ZashiButtonDefaults -import co.electriccoin.zcash.ui.design.component.ZashiModalBottomSheet +import co.electriccoin.zcash.ui.design.component.ZashiScreenModalBottomSheet import co.electriccoin.zcash.ui.design.component.ZashiTextField import co.electriccoin.zcash.ui.design.component.rememberModalBottomSheetState +import co.electriccoin.zcash.ui.design.component.rememberScreenModalBottomSheetState import co.electriccoin.zcash.ui.design.newcomponent.PreviewScreens import co.electriccoin.zcash.ui.design.theme.ZcashTheme import co.electriccoin.zcash.ui.design.theme.colors.ZashiColors @@ -38,16 +39,15 @@ import co.electriccoin.zcash.ui.screen.transactionnote.model.TransactionNoteStat @Composable @OptIn(ExperimentalMaterial3Api::class) internal fun TransactionNoteView( - onDismissRequest: () -> Unit, - sheetState: SheetState, state: TransactionNoteState, + sheetState: SheetState = rememberScreenModalBottomSheetState(), ) { - ZashiModalBottomSheet( + ZashiScreenModalBottomSheet( + state = state, sheetState = sheetState, content = { BottomSheetContent(state) }, - onDismissRequest = onDismissRequest ) } @@ -147,7 +147,6 @@ private fun Preview() = secondaryButton = null, negative = ButtonState(stringRes("Delete note")), ), - onDismissRequest = {}, sheetState = rememberModalBottomSheetState( skipHiddenState = true,