Migrates DropDownMenu to MutableState

This commit is contained in:
Vitor Pamplona
2023-07-14 08:36:25 -04:00
parent 516ff17eed
commit 83be195a43
7 changed files with 58 additions and 30 deletions
@@ -49,7 +49,11 @@ fun BadgeCompose(likeSetCard: BadgeCard, isInnerNote: Boolean = false, routeForL
val context = LocalContext.current.applicationContext val context = LocalContext.current.applicationContext
var popupExpanded by remember { mutableStateOf(false) } val popupExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ popupExpanded.value = true }
}
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
if (note == null) { if (note == null) {
@@ -89,7 +93,7 @@ fun BadgeCompose(likeSetCard: BadgeCard, isInnerNote: Boolean = false, routeForL
)?.let { nav(it) } )?.let { nav(it) }
} }
}, },
onLongClick = { popupExpanded = true } onLongClick = enablePopup
) )
) { ) {
Row( Row(
@@ -136,7 +140,7 @@ fun BadgeCompose(likeSetCard: BadgeCard, isInnerNote: Boolean = false, routeForL
IconButton( IconButton(
modifier = Modifier.then(Modifier.size(24.dp)), modifier = Modifier.then(Modifier.size(24.dp)),
onClick = { popupExpanded = true } onClick = enablePopup
) { ) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = Icons.Default.MoreVert,
@@ -145,7 +149,7 @@ fun BadgeCompose(likeSetCard: BadgeCard, isInnerNote: Boolean = false, routeForL
tint = MaterialTheme.colors.placeholderText tint = MaterialTheme.colors.placeholderText
) )
NoteDropDownMenu(note, popupExpanded, { popupExpanded = false }, accountViewModel) NoteDropDownMenu(note, popupExpanded, accountViewModel)
} }
} }
@@ -41,7 +41,10 @@ fun MessageSetCompose(messageSetCard: MessageSetCard, routeForLastRead: String,
val accountState by accountViewModel.accountLiveData.observeAsState() val accountState by accountViewModel.accountLiveData.observeAsState()
val loggedIn = remember(accountState) { accountState?.account?.userProfile() } ?: return val loggedIn = remember(accountState) { accountState?.account?.userProfile() } ?: return
var popupExpanded by remember { mutableStateOf(false) } val popupExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ popupExpanded.value = true }
}
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
@@ -84,7 +87,7 @@ fun MessageSetCompose(messageSetCard: MessageSetCard, routeForLastRead: String,
)?.let { nav(it) } )?.let { nav(it) }
} }
}, },
onLongClick = { popupExpanded = true } onLongClick = enablePopup
) )
.fillMaxWidth() .fillMaxWidth()
} }
@@ -104,7 +107,7 @@ fun MessageSetCompose(messageSetCard: MessageSetCard, routeForLastRead: String,
nav = nav nav = nav
) )
NoteDropDownMenu(baseNote, popupExpanded, { popupExpanded = false }, accountViewModel) NoteDropDownMenu(baseNote, popupExpanded, accountViewModel)
} }
} }
} }
@@ -89,7 +89,11 @@ import kotlin.time.measureTimedValue
fun MultiSetCompose(multiSetCard: MultiSetCard, routeForLastRead: String, accountViewModel: AccountViewModel, nav: (String) -> Unit) { fun MultiSetCompose(multiSetCard: MultiSetCard, routeForLastRead: String, accountViewModel: AccountViewModel, nav: (String) -> Unit) {
val baseNote = remember { multiSetCard.note } val baseNote = remember { multiSetCard.note }
var popupExpanded by remember { mutableStateOf(false) } val popupExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ popupExpanded.value = true }
}
val scope = rememberCoroutineScope() val scope = rememberCoroutineScope()
val defaultBackgroundColor = MaterialTheme.colors.background val defaultBackgroundColor = MaterialTheme.colors.background
@@ -130,7 +134,7 @@ fun MultiSetCompose(multiSetCard: MultiSetCard, routeForLastRead: String, accoun
routeFor(baseNote, accountViewModel.userProfile())?.let { nav(it) } routeFor(baseNote, accountViewModel.userProfile())?.let { nav(it) }
} }
}, },
onLongClick = { popupExpanded = true } onLongClick = enablePopup
) )
.fillMaxWidth() .fillMaxWidth()
} }
@@ -157,7 +161,7 @@ fun MultiSetCompose(multiSetCard: MultiSetCard, routeForLastRead: String, accoun
} }
Log.d("Rendering Metrics", "Complete: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed") Log.d("Rendering Metrics", "Complete: ${baseNote.event?.content()?.split("\n")?.getOrNull(0)?.take(15)}.. $elapsed")
NoteDropDownMenu(baseNote, popupExpanded, { popupExpanded = false }, accountViewModel) NoteDropDownMenu(baseNote, popupExpanded, accountViewModel)
} }
} }
} }
@@ -2428,26 +2428,33 @@ fun MoreOptionsButton(
baseNote: Note, baseNote: Note,
accountViewModel: AccountViewModel accountViewModel: AccountViewModel
) { ) {
var moreActionsExpanded by remember { mutableStateOf(false) } val popupExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ popupExpanded.value = true }
}
IconButton( IconButton(
modifier = Size24Modifier, modifier = Size24Modifier,
onClick = { moreActionsExpanded = true } onClick = enablePopup
) { ) {
Icon( VerticalDotsIcon()
imageVector = Icons.Default.MoreVert,
null,
modifier = Size15Modifier,
tint = MaterialTheme.colors.placeholderText
)
NoteDropDownMenu( NoteDropDownMenu(
baseNote, baseNote,
moreActionsExpanded, popupExpanded,
{ moreActionsExpanded = false },
accountViewModel accountViewModel
) )
} }
}
@Composable
private fun VerticalDotsIcon() {
Icon(
imageVector = Icons.Default.MoreVert,
null,
modifier = Size15Modifier,
tint = MaterialTheme.colors.placeholderText
)
} }
@Composable @Composable
@@ -20,6 +20,7 @@ import androidx.compose.material.ripple.rememberRipple
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.livedata.observeAsState
@@ -310,7 +311,7 @@ data class DropDownParams(
) )
@Composable @Composable
fun NoteDropDownMenu(note: Note, popupExpanded: Boolean, onDismiss: () -> Unit, accountViewModel: AccountViewModel) { fun NoteDropDownMenu(note: Note, popupExpanded: MutableState<Boolean>, accountViewModel: AccountViewModel) {
var reportDialogShowing by remember { mutableStateOf(false) } var reportDialogShowing by remember { mutableStateOf(false) }
var state by remember { var state by remember {
@@ -326,8 +327,12 @@ fun NoteDropDownMenu(note: Note, popupExpanded: Boolean, onDismiss: () -> Unit,
) )
} }
val onDismiss = remember(popupExpanded) {
{ popupExpanded.value = false }
}
DropdownMenu( DropdownMenu(
expanded = popupExpanded, expanded = popupExpanded.value,
onDismissRequest = onDismiss onDismissRequest = onDismiss
) { ) {
val clipboardManager = LocalClipboardManager.current val clipboardManager = LocalClipboardManager.current
@@ -240,7 +240,10 @@ fun NoteMaster(
val context = LocalContext.current val context = LocalContext.current
var moreActionsExpanded by remember { mutableStateOf(false) } val moreActionsExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ moreActionsExpanded.value = true }
}
val noteEvent = note?.event val noteEvent = note?.event
@@ -310,7 +313,7 @@ fun NoteMaster(
IconButton( IconButton(
modifier = Modifier.then(Modifier.size(24.dp)), modifier = Modifier.then(Modifier.size(24.dp)),
onClick = { moreActionsExpanded = true } onClick = enablePopup
) { ) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = Icons.Default.MoreVert,
@@ -319,7 +322,7 @@ fun NoteMaster(
tint = MaterialTheme.colors.placeholderText tint = MaterialTheme.colors.placeholderText
) )
NoteDropDownMenu(baseNote, moreActionsExpanded, { moreActionsExpanded = false }, accountViewModel) NoteDropDownMenu(baseNote, moreActionsExpanded, accountViewModel)
} }
} }
@@ -304,11 +304,14 @@ private fun VideoUserOptionAction(
note: Note, note: Note,
accountViewModel: AccountViewModel accountViewModel: AccountViewModel
) { ) {
var moreActionsExpanded by remember { mutableStateOf(false) } val popupExpanded = remember { mutableStateOf(false) }
val enablePopup = remember {
{ popupExpanded.value = true }
}
IconButton( IconButton(
modifier = remember { Modifier.size(22.dp) }, modifier = remember { Modifier.size(22.dp) },
onClick = { moreActionsExpanded = true } onClick = enablePopup
) { ) {
Icon( Icon(
imageVector = Icons.Default.MoreVert, imageVector = Icons.Default.MoreVert,
@@ -319,8 +322,7 @@ private fun VideoUserOptionAction(
NoteDropDownMenu( NoteDropDownMenu(
note, note,
moreActionsExpanded, popupExpanded,
{ moreActionsExpanded = false },
accountViewModel accountViewModel
) )
} }