fix(android): album sort — scroll to top on change, remove Künstler, default Neueste
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
6be7981b8a
commit
dd484df636
2 files changed
+7
-8
No files matched your search
@@ -7,6 +7,7 @@ import androidx.compose.foundation.lazy.LazyColumn
|
|||||||
import androidx.compose.foundation.lazy.grid.GridCells
|
import androidx.compose.foundation.lazy.grid.GridCells
|
||||||
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
|
||||||
import androidx.compose.foundation.lazy.grid.items
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
|
import androidx.compose.foundation.lazy.grid.rememberLazyGridState
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.CircleShape
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
@@ -100,7 +101,6 @@ fun LibraryScreen(
|
|||||||
AlbumSort.NEWEST -> "Neueste"
|
AlbumSort.NEWEST -> "Neueste"
|
||||||
AlbumSort.OLDEST -> "Älteste"
|
AlbumSort.OLDEST -> "Älteste"
|
||||||
AlbumSort.AZ -> "A-Z"
|
AlbumSort.AZ -> "A-Z"
|
||||||
AlbumSort.ARTIST -> "Künstler"
|
|
||||||
}, fontSize = 12.sp)
|
}, fontSize = 12.sp)
|
||||||
},
|
},
|
||||||
colors = FilterChipDefaults.filterChipColors(
|
colors = FilterChipDefaults.filterChipColors(
|
||||||
@@ -121,14 +121,13 @@ fun LibraryScreen(
|
|||||||
compareBy<com.novasonic.app.api.model.Album> { it.year ?: Int.MAX_VALUE }
|
compareBy<com.novasonic.app.api.model.Album> { it.year ?: Int.MAX_VALUE }
|
||||||
.thenBy { it.name.lowercase() }
|
.thenBy { it.name.lowercase() }
|
||||||
)
|
)
|
||||||
AlbumSort.AZ -> state.albums.sortedBy { it.name.lowercase() }
|
AlbumSort.AZ -> state.albums.sortedBy { it.name.lowercase() }
|
||||||
AlbumSort.ARTIST -> state.albums.sortedWith(
|
|
||||||
compareBy<com.novasonic.app.api.model.Album> { it.artist?.lowercase() ?: "" }
|
|
||||||
.thenBy { it.name.lowercase() }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val albumGridState = rememberLazyGridState()
|
||||||
|
LaunchedEffect(state.albumSort) { albumGridState.scrollToItem(0) }
|
||||||
LazyVerticalGrid(
|
LazyVerticalGrid(
|
||||||
|
state = albumGridState,
|
||||||
columns = GridCells.Adaptive(minSize = 150.dp),
|
columns = GridCells.Adaptive(minSize = 150.dp),
|
||||||
contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 16.dp),
|
contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 16.dp),
|
||||||
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
horizontalArrangement = Arrangement.spacedBy(12.dp),
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ import kotlinx.coroutines.flow.StateFlow
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
enum class LibraryTab { PLAYLISTS, ALBUMS, ARTISTS }
|
enum class LibraryTab { PLAYLISTS, ALBUMS, ARTISTS }
|
||||||
enum class AlbumSort { NEWEST, OLDEST, AZ, ARTIST }
|
enum class AlbumSort { NEWEST, OLDEST, AZ }
|
||||||
|
|
||||||
data class LibraryUiState(
|
data class LibraryUiState(
|
||||||
val tab: LibraryTab = LibraryTab.PLAYLISTS,
|
val tab: LibraryTab = LibraryTab.PLAYLISTS,
|
||||||
val albums: List<Album> = emptyList(),
|
val albums: List<Album> = emptyList(),
|
||||||
val albumSort: AlbumSort = AlbumSort.AZ,
|
val albumSort: AlbumSort = AlbumSort.NEWEST,
|
||||||
val artistIndexes: List<ArtistIndex> = emptyList(),
|
val artistIndexes: List<ArtistIndex> = emptyList(),
|
||||||
val playlists: List<Playlist> = emptyList(),
|
val playlists: List<Playlist> = emptyList(),
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
|
|||||||
Reference in new issue
Block a user