@@ -18,7 +18,7 @@ import androidx.paging.compose.collectAsLazyPagingItems
1818import androidx.compose.material3.CircularProgressIndicator
1919import androidx.compose.material3.Text
2020import androidx.compose.runtime.LaunchedEffect
21- import com.home.reader.api.dto.SeriesDto
21+ import androidx.compose.runtime.saveable.rememberSaveable
2222import com.home.reader.ui.AppViewModelProvider
2323import com.home.reader.ui.catalogue.component.CatalogueIssueItem
2424import com.home.reader.ui.catalogue.component.CatalogueSeriesItem
@@ -35,33 +35,36 @@ fun CatalogueScreen(
3535
3636 val seriesState = viewModel.seriesState.collectAsLazyPagingItems()
3737 val issuesState by remember { viewModel.issuesState }
38- var selectedSeries by remember { mutableStateOf<SeriesDto ?>(null ) }
38+ var selectedSeriesId by rememberSaveable { mutableStateOf<Long ?>(null ) }
39+ var selectedSeriesName by rememberSaveable { mutableStateOf<String ?>(null ) }
3940 val downloadProgressState by remember { viewModel.downloadProgress }
4041 val cached by remember { viewModel.cached }
4142
42- LaunchedEffect (selectedSeries) {
43- val seriesId = selectedSeries?.id
44- if (seriesId != null ) {
45- viewModel.refreshIssuesState(seriesId)
46- }
43+ LaunchedEffect (selectedSeriesId) {
44+ selectedSeriesId?.let { viewModel.refreshIssuesState(it) }
45+ if (selectedSeriesId == null ) seriesState.refresh()
4746 }
4847
4948 Column {
50- BackHandler (enabled = (selectedSeries != null )) {
51- selectedSeries = null
49+ BackHandler (enabled = (selectedSeriesId != null )) {
50+ selectedSeriesId = null
5251 }
52+
5353 LazyVerticalGrid (
54- columns = GridCells .Adaptive (COVER_WIDTH + if (selectedSeries == null ) 0 .dp else 30 .dp)
54+ columns = GridCells .Adaptive (COVER_WIDTH + if (selectedSeriesId == null ) 0 .dp else 30 .dp)
5555 ) {
5656
57- if (selectedSeries == null ) {
57+ if (selectedSeriesId == null ) {
5858 items(seriesState.itemCount) { index ->
5959 val item = seriesState[index]
6060 if (item != null ) {
6161 CatalogueSeriesItem (
6262 item = item,
6363 coverUrl = viewModel.coverRequest(item.cover, " SMALL" ),
64- onClick = { selectedSeries = item }
64+ onClick = {
65+ selectedSeriesId = item.id
66+ selectedSeriesName = item.title
67+ }
6568 )
6669 }
6770 }
@@ -82,18 +85,18 @@ fun CatalogueScreen(
8285 }
8386 }
8487
85- if (selectedSeries != null ) {
88+ if (selectedSeriesId != null ) {
8689 items(issuesState) {
8790 CatalogueIssueItem (
8891 item = it,
89- seriesName = selectedSeries?.title ? : " " ,
92+ seriesName = selectedSeriesName ? : " " ,
9093 coverUrl = viewModel.coverRequest(" /pages/${it.id} /0" , " SMALL" ),
9194 onClick = onNavigateToReaderScreen,
9295 downloadProgress = downloadProgressState[it.id],
9396 cached = (cached[it.id] == true ),
9497 onDownloadClick = {
9598 val issueId = it.id
96- val seriesId = selectedSeries?.id ? : 0L
99+ val seriesId = selectedSeriesId ? : 0L
97100 viewModel.download(seriesId, issueId)
98101 }
99102 )
0 commit comments