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:
HoneyandClaude Sonnet 4.6 committed 2026-06-18 20:05:00 +02:00
1 parent 6be7981b8a
commit dd484df636
2 files changed
+6 -7

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(
@@ -122,13 +122,12 @@ fun LibraryScreen(
.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,