From e166c36731fc94f1b653321a01497d53ac471b32 Mon Sep 17 00:00:00 2001 From: greenart7c3 Date: Mon, 22 Jul 2024 14:45:39 -0300 Subject: [PATCH] Remove focus from status text field when closing the drawer --- .../amethyst/ui/navigation/DrawerContent.kt | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt index 3e0ea5087..e8fcfcba0 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/navigation/DrawerContent.kt @@ -136,7 +136,9 @@ fun DrawerContent( drawerTonalElevation = 0.dp, ) { Column( - Modifier.fillMaxHeight().verticalScroll(rememberScrollState()), + Modifier + .fillMaxHeight() + .verticalScroll(rememberScrollState()), ) { ProfileContent( baseAccountUser = accountViewModel.account.userProfile(), @@ -146,7 +148,7 @@ fun DrawerContent( ) Column(drawerSpacing) { - EditStatusBoxes(accountViewModel.account.userProfile(), accountViewModel) + EditStatusBoxes(accountViewModel.account.userProfile(), accountViewModel, drawerState) } FollowingAndFollowerCounts(accountViewModel.account.userProfile(), onClickUser) @@ -263,15 +265,16 @@ fun ProfileContentTemplate( private fun EditStatusBoxes( baseAccountUser: User, accountViewModel: AccountViewModel, + drawerState: DrawerState, ) { LoadStatuses(user = baseAccountUser, accountViewModel) { statuses -> if (statuses.isEmpty()) { - StatusEditBar(accountViewModel = accountViewModel) + StatusEditBar(accountViewModel = accountViewModel, drawerState = drawerState) } else { statuses.forEach { val originalStatus by it.live().content.observeAsState() - StatusEditBar(originalStatus, it.address, accountViewModel) + StatusEditBar(originalStatus, it.address, accountViewModel, drawerState = drawerState) } } } @@ -282,11 +285,17 @@ fun StatusEditBar( savedStatus: String? = null, tag: ATag? = null, accountViewModel: AccountViewModel, + drawerState: DrawerState, ) { val focusManager = LocalFocusManager.current val currentStatus = remember { mutableStateOf(savedStatus ?: "") } val hasChanged = remember { derivedStateOf { currentStatus.value != (savedStatus ?: "") } } + LaunchedEffect(drawerState.isClosed) { + if (drawerState.isClosed) { + focusManager.clearFocus(true) + } + } OutlinedTextField( value = currentStatus.value,