Skip to content

Commit

Permalink
Remove StableList
Browse files Browse the repository at this point in the history
  • Loading branch information
fibelatti committed Jan 27, 2024
1 parent 53dde1e commit aba1be1
Show file tree
Hide file tree
Showing 23 changed files with 86 additions and 172 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@ import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import com.fibelatti.ui.foundation.StableList

object SelectionDialog {

fun <T> show(
context: Context,
title: String,
options: StableList<T>,
options: List<T>,
optionName: (T) -> String,
optionIcon: (T) -> Int? = { null },
onOptionSelected: (T) -> Unit,
Expand All @@ -48,7 +47,7 @@ object SelectionDialog {
@Composable
private fun <T> SelectionDialogContent(
title: String,
options: StableList<T>,
options: List<T>,
optionName: (T) -> String,
optionIcon: (T) -> Int? = { null },
onOptionSelected: (T) -> Unit,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,10 +58,8 @@ import com.fibelatti.pinboard.features.appstate.PostListContent
import com.fibelatti.pinboard.features.appstate.Refresh
import com.fibelatti.pinboard.features.appstate.RefreshPopular
import com.fibelatti.pinboard.features.navigation.NavigationMenu
import com.fibelatti.ui.foundation.StableList
import com.fibelatti.ui.foundation.navigationBarsPaddingCompat
import com.fibelatti.ui.foundation.pxToDp
import com.fibelatti.ui.foundation.stableListOf
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme

Expand Down Expand Up @@ -288,7 +286,7 @@ private fun MainBottomAppBar(
@Composable
@OptIn(ExperimentalAnimationApi::class)
private fun MenuItemsContent(
menuItems: StableList<MainState.MenuItemComponent>,
menuItems: List<MainState.MenuItemComponent>,
data: Any?,
onMenuItemClick: (MainState.MenuItemComponent, data: Any?) -> Unit,
) {
Expand Down Expand Up @@ -382,7 +380,7 @@ private fun MainTopAppBarPreview() {
actionButton = MainState.ActionButtonComponent.Visible(id = "", label = "Action"),
bottomAppBar = MainState.BottomAppBarComponent.Visible(
id = "",
menuItems = stableListOf(MainState.MenuItemComponent.SearchBookmarks),
menuItems = listOf(MainState.MenuItemComponent.SearchBookmarks),
navigationIcon = R.drawable.ic_menu,
),
floatingActionButton = MainState.FabComponent.Visible(id = "", icon = R.drawable.ic_pin),
Expand Down Expand Up @@ -414,7 +412,7 @@ private fun MainBottomAppBarPreview() {
actionButton = MainState.ActionButtonComponent.Visible(id = "", label = "Action"),
bottomAppBar = MainState.BottomAppBarComponent.Visible(
id = "",
menuItems = stableListOf(MainState.MenuItemComponent.SearchBookmarks),
menuItems = listOf(MainState.MenuItemComponent.SearchBookmarks),
navigationIcon = R.drawable.ic_menu,
),
floatingActionButton = MainState.FabComponent.Visible(id = "", icon = R.drawable.ic_pin),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.fibelatti.pinboard.features
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import com.fibelatti.pinboard.R
import com.fibelatti.ui.foundation.StableList
import java.util.UUID

data class MainState(
Expand Down Expand Up @@ -66,7 +65,7 @@ data class MainState(

data class Visible(
override val id: String,
val menuItems: StableList<MenuItemComponent>,
val menuItems: List<MenuItemComponent>,
@DrawableRes val navigationIcon: Int? = null,
val data: Any? = null,
) : BottomAppBarComponent()
Expand Down Expand Up @@ -160,7 +159,7 @@ data class MainState(

data class Visible(
override val id: String,
val menuItems: StableList<MenuItemComponent>,
val menuItems: List<MenuItemComponent>,
val data: Any? = null,
) : SidePanelAppBarComponent()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ import com.fibelatti.pinboard.core.extension.showBanner
import com.fibelatti.pinboard.features.MainViewModel
import com.fibelatti.pinboard.features.appstate.AppStateViewModel
import com.fibelatti.pinboard.features.filters.domain.model.SavedFilter
import com.fibelatti.ui.foundation.toStableList
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

Expand Down Expand Up @@ -45,7 +44,7 @@ class SavedFiltersFragment @Inject constructor() : BaseFragment() {
SelectionDialog.show(
context = requireContext(),
title = getString(R.string.quick_actions_title),
options = SavedFiltersQuickActions.allOptions(savedFilter).toStableList(),
options = SavedFiltersQuickActions.allOptions(savedFilter),
optionName = { getString(it.title) },
optionIcon = SavedFiltersQuickActions::icon,
onOptionSelected = { option ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,7 @@ import com.fibelatti.pinboard.features.appstate.ViewSavedFilter
import com.fibelatti.pinboard.features.filters.domain.model.SavedFilter
import com.fibelatti.ui.components.ChipGroup
import com.fibelatti.ui.components.MultilineChipGroup
import com.fibelatti.ui.foundation.StableList
import com.fibelatti.ui.foundation.navigationBarsCompat
import com.fibelatti.ui.foundation.stableListOf
import com.fibelatti.ui.foundation.toStableList
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme
import kotlinx.coroutines.flow.onEach
Expand Down Expand Up @@ -92,7 +89,7 @@ fun SavedFiltersScreen(
}

SavedFiltersScreen(
savedFilters = savedFilters.toStableList(),
savedFilters = savedFilters,
onSavedFilterClicked = { savedFilter ->
appStateViewModel.runAction(ViewSavedFilter(savedFilter = savedFilter))
},
Expand All @@ -103,7 +100,7 @@ fun SavedFiltersScreen(

@Composable
private fun SavedFiltersScreen(
savedFilters: StableList<SavedFilter>,
savedFilters: List<SavedFilter>,
onSavedFilterClicked: (SavedFilter) -> Unit,
onSavedFilterLongClicked: (SavedFilter) -> Unit,
) {
Expand Down Expand Up @@ -185,7 +182,7 @@ private fun SavedFilterItem(
)

val tags = remember(savedFilter.tags) {
savedFilter.tags.map { tag -> ChipGroup.Item(text = tag.name) }.toStableList()
savedFilter.tags.map { tag -> ChipGroup.Item(text = tag.name) }
}

MultilineChipGroup(
Expand All @@ -207,7 +204,7 @@ private fun SavedFilterScreenPreview(
) {
ExtendedTheme {
SavedFiltersScreen(
savedFilters = remember { savedFilters.toStableList() },
savedFilters = remember { savedFilters },
onSavedFilterClicked = {},
onSavedFilterLongClicked = {},
)
Expand All @@ -219,7 +216,7 @@ private fun SavedFilterScreenPreview(
private fun SavedFilterScreenEmptyPreview() {
ExtendedTheme {
SavedFiltersScreen(
savedFilters = stableListOf(),
savedFilters = emptyList(),
onSavedFilterClicked = {},
onSavedFilterLongClicked = {},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import com.fibelatti.pinboard.features.MainState
import com.fibelatti.pinboard.features.MainViewModel
import com.fibelatti.pinboard.features.appstate.AppStateViewModel
import com.fibelatti.pinboard.features.notes.domain.model.Note
import com.fibelatti.ui.foundation.stableListOf
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme
import kotlinx.coroutines.flow.onEach
Expand Down Expand Up @@ -60,7 +59,7 @@ fun NoteDetailsScreen(
currentState.copy(
sidePanelAppBar = MainState.SidePanelAppBarComponent.Visible(
id = actionId,
menuItems = stableListOf(MainState.MenuItemComponent.CloseSidePanel),
menuItems = listOf(MainState.MenuItemComponent.CloseSidePanel),
),
)
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,8 @@ import com.fibelatti.pinboard.features.notes.domain.model.Note
import com.fibelatti.pinboard.features.notes.domain.model.NoteSorting
import com.fibelatti.ui.components.RowToggleButtonGroup
import com.fibelatti.ui.components.ToggleButtonGroup
import com.fibelatti.ui.foundation.StableList
import com.fibelatti.ui.foundation.asHorizontalPaddingDp
import com.fibelatti.ui.foundation.navigationBarsCompat
import com.fibelatti.ui.foundation.stableListOf
import com.fibelatti.ui.foundation.toStableList
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme
import kotlinx.coroutines.flow.onEach
Expand Down Expand Up @@ -129,7 +126,7 @@ fun NoteListScreen(
LoadingContent()
} else {
NoteListContent(
notes = noteListContent.notes.toStableList(),
notes = noteListContent.notes,
onSortOptionClicked = { noteListSorting ->
val sorting = when (noteListSorting) {
NoteList.Sorting.ByDateUpdatedDesc -> NoteSorting.ByDateUpdatedDesc
Expand All @@ -149,7 +146,7 @@ fun NoteListScreen(

@Composable
private fun NoteListContent(
notes: StableList<Note>,
notes: List<Note>,
onSortOptionClicked: (NoteList.Sorting) -> Unit = {},
onPullToRefresh: () -> Unit = {},
onNoteClicked: (Note) -> Unit = {},
Expand All @@ -174,14 +171,12 @@ private fun NoteListContent(
.asHorizontalPaddingDp(addStart = 16.dp, addEnd = 16.dp)

RowToggleButtonGroup(
items = NoteList.Sorting.entries
.map { sorting ->
ToggleButtonGroup.Item(
id = sorting.id,
text = stringResource(id = sorting.label),
)
}
.toStableList(),
items = NoteList.Sorting.entries.map { sorting ->
ToggleButtonGroup.Item(
id = sorting.id,
text = stringResource(id = sorting.label),
)
},
onButtonClick = {
val (index, sorting) = requireNotNull(NoteList.Sorting.findByIdWithIndex(it.id))
selectedSortingIndex = index
Expand Down Expand Up @@ -283,7 +278,7 @@ object NoteList {
private fun EmptyNoteListScreenPreview() {
ExtendedTheme {
NoteListContent(
notes = stableListOf(),
notes = emptyList(),
)
}
}
Expand All @@ -300,7 +295,7 @@ private fun NoteListContentPreview() {
updatedAt = "${if (it % 2 == 0) it else it + 1}",
text = "Note text $it",
)
}.toStableList()
}

NoteListContent(
notes = notes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ import com.fibelatti.ui.components.ChipGroup
import com.fibelatti.ui.components.MultilineChipGroup
import com.fibelatti.ui.foundation.asHorizontalPaddingDp
import com.fibelatti.ui.foundation.navigationBarsCompat
import com.fibelatti.ui.foundation.toStableList
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme
import kotlinx.coroutines.delay
Expand Down Expand Up @@ -429,7 +428,7 @@ private fun BookmarkItem(

if (!post.tags.isNullOrEmpty()) {
val tags = remember(post.tags) {
post.tags.map { tag -> ChipGroup.Item(text = tag.name) }.toStableList()
post.tags.map { tag -> ChipGroup.Item(text = tag.name) }
}

MultilineChipGroup(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,11 +52,8 @@ import com.fibelatti.pinboard.features.posts.domain.model.Post
import com.fibelatti.pinboard.features.tags.domain.model.Tag
import com.fibelatti.pinboard.features.tags.presentation.TagManager
import com.fibelatti.pinboard.features.tags.presentation.TagManagerViewModel
import com.fibelatti.ui.foundation.StableList
import com.fibelatti.ui.foundation.imePaddingCompat
import com.fibelatti.ui.foundation.navigationBarsPaddingCompat
import com.fibelatti.ui.foundation.stableListOf
import com.fibelatti.ui.foundation.toStableList
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme

Expand Down Expand Up @@ -130,10 +127,10 @@ fun EditBookmarkScreen(
searchTagInput = tagManagerState.currentQuery,
onSearchTagInputChanged = tagManagerViewModel::setQuery,
onAddTagClicked = tagManagerViewModel::addTag,
suggestedTags = tagManagerState.suggestedTags.toStableList(),
suggestedTags = tagManagerState.suggestedTags,
onSuggestedTagClicked = tagManagerViewModel::addTag,
currentTagsTitle = stringResource(id = tagManagerState.displayTitle),
currentTags = tagManagerState.tags.toStableList(),
currentTags = tagManagerState.tags,
onRemoveCurrentTagClicked = tagManagerViewModel::removeTag,
appMode = appMode,
)
Expand All @@ -153,10 +150,10 @@ private fun EditBookmarkScreen(
searchTagInput: String,
onSearchTagInputChanged: (String) -> Unit,
onAddTagClicked: (String) -> Unit,
suggestedTags: StableList<String>,
suggestedTags: List<String>,
onSuggestedTagClicked: (String) -> Unit,
currentTagsTitle: String,
currentTags: StableList<Tag>,
currentTags: List<Tag>,
onRemoveCurrentTagClicked: (Tag) -> Unit,
appMode: AppMode,
) {
Expand Down Expand Up @@ -214,10 +211,10 @@ private fun BookmarkContent(
searchTagInput: String,
onSearchTagInputChanged: (String) -> Unit,
onAddTagClicked: (String) -> Unit,
suggestedTags: StableList<String>,
suggestedTags: List<String>,
onSuggestedTagClicked: (String) -> Unit,
currentTagsTitle: String,
currentTags: StableList<Tag>,
currentTags: List<Tag>,
onRemoveCurrentTagClicked: (Tag) -> Unit,
appMode: AppMode,
) {
Expand Down Expand Up @@ -431,10 +428,10 @@ private fun EditBookmarkScreenPreview(
searchTagInput = "",
onSearchTagInputChanged = {},
onAddTagClicked = {},
suggestedTags = stableListOf(),
suggestedTags = emptyList(),
onSuggestedTagClicked = {},
currentTagsTitle = stringResource(id = R.string.tags_added_title),
currentTags = post.tags.orEmpty().toStableList(),
currentTags = post.tags.orEmpty(),
onRemoveCurrentTagClicked = {},
appMode = AppMode.PINBOARD,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import com.fibelatti.pinboard.features.appstate.AppStateViewModel
import com.fibelatti.pinboard.features.appstate.NavigateBack
import com.fibelatti.pinboard.features.posts.domain.model.Post
import com.fibelatti.pinboard.features.tags.presentation.TagManagerViewModel
import com.fibelatti.ui.foundation.toStableList
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.onEach
Expand Down Expand Up @@ -206,7 +205,7 @@ class EditPostFragment @Inject constructor() : BaseFragment() {
add(MainState.MenuItemComponent.DeleteBookmark)
add(MainState.MenuItemComponent.OpenInBrowser)
}
}.toStableList(),
},
navigationIcon = null,
data = post,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,8 @@ import com.fibelatti.pinboard.features.appstate.ViewPost
import com.fibelatti.pinboard.features.posts.domain.model.Post
import com.fibelatti.ui.components.ChipGroup
import com.fibelatti.ui.components.MultilineChipGroup
import com.fibelatti.ui.foundation.StableList
import com.fibelatti.ui.foundation.asHorizontalPaddingDp
import com.fibelatti.ui.foundation.navigationBarsCompat
import com.fibelatti.ui.foundation.toStableList
import com.fibelatti.ui.preview.ThemePreviews
import com.fibelatti.ui.theme.ExtendedTheme
import kotlinx.coroutines.flow.onEach
Expand Down Expand Up @@ -130,8 +128,7 @@ fun PopularBookmarksScreen(

CrossfadeLoadingLayout(
data = popularPostsContent.posts
.takeUnless { popularPostsContent.shouldLoad || popularPostsScreenState.isLoading }
?.toStableList(),
.takeUnless { popularPostsContent.shouldLoad || popularPostsScreenState.isLoading },
modifier = Modifier.fillMaxSize(),
) { posts ->
PopularBookmarksContent(
Expand All @@ -147,7 +144,7 @@ fun PopularBookmarksScreen(

@Composable
fun PopularBookmarksContent(
posts: StableList<Post>,
posts: List<Post>,
onPullToRefresh: () -> Unit = {},
onBookmarkClicked: (Post) -> Unit = {},
onBookmarkLongClicked: (Post) -> Unit = {},
Expand Down Expand Up @@ -216,7 +213,7 @@ private fun PopularBookmarkItem(

if (post.tags != null) {
val items = remember(post.tags) {
post.tags.map { tag -> ChipGroup.Item(text = tag.name) }.toStableList()
post.tags.map { tag -> ChipGroup.Item(text = tag.name) }
}
MultilineChipGroup(
items = items,
Expand All @@ -236,7 +233,7 @@ private fun PopularBookmarksContentPreview(
) {
ExtendedTheme {
PopularBookmarksContent(
posts = posts.toStableList(),
posts = posts,
)
}
}
Loading

0 comments on commit aba1be1

Please sign in to comment.