tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mmobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksScreen.kt | 96++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
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)?,