commit 0889a9f0b749539ab30f78937091b9095059e5e6
parent 0e9a2537c7b5fe837efb624db3ed122f69063fe3
Author: gela <gela.malekpour@gmail.com>
Date: Thu, 2 Oct 2025 22:07:47 +0000
Bug 1992251 - refactor SelectFolderScreen to address linter complaint about method being too long r=android-reviewers,boek
Refactoring only, should not change the behavior or visuals at all.
https://treeherder.mozilla.org/jobs?repo=try&landoCommitID=156472
Differential Revision: https://phabricator.services.mozilla.com/D267312
Diffstat:
1 file changed, 54 insertions(+), 42 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksScreen.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksScreen.kt
@@ -914,10 +914,8 @@ private fun SelectFolderScreen(
topBar = {
SelectFolderTopBar(
onBackClick = { store.dispatch(BackClicked) },
- onNewFolderClick = if (showNewFolderButton) {
+ onNewFolderClick = showNewFolderButton.takeIf { it }?.let {
{ store.dispatch(AddFolderClicked) }
- } else {
- null
},
)
},
@@ -930,48 +928,17 @@ private fun SelectFolderScreen(
.fillMaxWidth(),
horizontalAlignment = Alignment.CenterHorizontally,
) {
- items(state?.folders ?: listOf()) { folder ->
- if (folder.isDesktopRoot) {
- Row(
- modifier = Modifier
- .padding(start = folder.startPadding)
- .width(FirefoxTheme.layout.size.containerMaxWidth),
- ) {
- // We need to account for not having an icon
- Spacer(modifier = Modifier.width(56.dp))
- Text(
- text = folder.title,
- color = FirefoxTheme.colors.textAccent,
- style = FirefoxTheme.typography.headline8,
- )
- }
- } else {
- val isSelected = folder.guid == state?.selectedGuid
- SelectableIconListItem(
- label = folder.title,
- isSelected = isSelected,
- beforeIconPainter = painterResource(iconsR.drawable.mozac_ic_folder_24),
- modifier = Modifier
- .padding(start = folder.startPadding)
- .width(FirefoxTheme.layout.size.containerMaxWidth)
- .toggleable(
- value = isSelected,
- role = Role.RadioButton,
- onValueChange = { _ -> store.dispatch(SelectFolderAction.ItemClicked(folder)) },
- ),
- )
- }
+ items(state?.folders.orEmpty()) { folder ->
+ FolderListItem(
+ folder = folder,
+ isSelected = folder.guid == state?.selectedGuid,
+ onClick = { store.dispatch(SelectFolderAction.ItemClicked(folder)) },
+ )
}
+
if (showNewFolderButton) {
item {
- IconListItem(
- label = stringResource(R.string.bookmark_select_folder_new_folder_button_title),
- modifier = Modifier.width(FirefoxTheme.layout.size.containerMaxWidth),
- labelTextColor = FirefoxTheme.colors.textAccent,
- beforeIconPainter = painterResource(iconsR.drawable.mozac_ic_folder_add_24),
- beforeIconTint = FirefoxTheme.colors.textAccent,
- onClick = { store.dispatch(AddFolderClicked) },
- )
+ NewFolderListItem { store.dispatch(AddFolderClicked) }
}
}
}
@@ -979,6 +946,51 @@ private fun SelectFolderScreen(
}
@Composable
+private fun FolderListItem(
+ folder: SelectFolderItem,
+ isSelected: Boolean,
+ onClick: () -> Unit,
+) {
+ val modifier = Modifier
+ .padding(start = folder.startPadding)
+ .width(FirefoxTheme.layout.size.containerMaxWidth)
+
+ if (folder.isDesktopRoot) {
+ Row(modifier) {
+ Spacer(modifier = Modifier.width(56.dp))
+ Text(
+ text = folder.title,
+ color = FirefoxTheme.colors.textAccent,
+ style = FirefoxTheme.typography.headline8,
+ )
+ }
+ } else {
+ SelectableIconListItem(
+ label = folder.title,
+ isSelected = isSelected,
+ beforeIconPainter = painterResource(iconsR.drawable.mozac_ic_folder_24),
+ modifier = modifier.toggleable(
+ value = isSelected,
+ role = Role.RadioButton,
+ onValueChange = { onClick() },
+ ),
+ )
+ }
+}
+
+@Composable
+private fun NewFolderListItem(onClick: () -> Unit) {
+ IconListItem(
+ label = stringResource(R.string.bookmark_select_folder_new_folder_button_title),
+ modifier = Modifier.width(FirefoxTheme.layout.size.containerMaxWidth),
+ labelTextColor = FirefoxTheme.colors.textAccent,
+ beforeIconPainter = painterResource(iconsR.drawable.mozac_ic_folder_add_24),
+ beforeIconTint = FirefoxTheme.colors.textAccent,
+ onClick = onClick,
+ )
+}
+
+@Composable
private fun SelectFolderTopBar(
onBackClick: () -> Unit,
onNewFolderClick: (() -> Unit)?,