@@ -82,12 +82,14 @@ import androidx.compose.ui.Modifier
82
82
import androidx.compose.ui.draw.clip
83
83
import androidx.compose.ui.graphics.Color
84
84
import androidx.compose.ui.layout.ContentScale
85
+ import androidx.compose.ui.platform.LocalSavedStateRegistryOwner
85
86
import androidx.compose.ui.res.stringResource
86
87
import androidx.compose.ui.text.style.TextOverflow
87
88
import androidx.compose.ui.tooling.preview.Devices
88
89
import androidx.compose.ui.tooling.preview.Preview
89
90
import androidx.compose.ui.unit.DpSize
90
91
import androidx.compose.ui.unit.dp
92
+ import androidx.core.os.bundleOf
91
93
import androidx.lifecycle.compose.collectAsStateWithLifecycle
92
94
import androidx.lifecycle.viewmodel.compose.viewModel
93
95
import coil.compose.AsyncImage
@@ -99,6 +101,7 @@ import com.example.jetcaster.core.data.model.LibraryInfo
99
101
import com.example.jetcaster.core.data.model.PlayerEpisode
100
102
import com.example.jetcaster.core.data.model.PodcastCategoryFilterResult
101
103
import com.example.jetcaster.core.data.model.PodcastInfo
104
+ import com.example.jetcaster.ui.Screen
102
105
import com.example.jetcaster.ui.home.discover.discoverItems
103
106
import com.example.jetcaster.ui.home.library.libraryItems
104
107
import com.example.jetcaster.ui.podcast.PodcastDetailsScreen
@@ -123,9 +126,7 @@ fun MainScreen(
123
126
viewModel : HomeViewModel = viewModel()
124
127
) {
125
128
val viewState by viewModel.state.collectAsStateWithLifecycle()
126
- val navigator = rememberSupportingPaneScaffoldNavigator<String >(
127
- isDestinationHistoryAware = false
128
- )
129
+ val navigator = rememberSupportingPaneScaffoldNavigator<String >()
129
130
BackHandler (enabled = navigator.canNavigateBack()) {
130
131
navigator.navigateBack()
131
132
}
@@ -137,8 +138,14 @@ fun MainScreen(
137
138
val podcastUri = navigator.currentDestination?.content
138
139
? : viewState.featuredPodcasts.firstOrNull()?.uri
139
140
if (! podcastUri.isNullOrEmpty()) {
140
- val podcastDetailsViewModel = PodcastDetailsViewModel (
141
- podcastUri = podcastUri
141
+ val podcastDetailsViewModel: PodcastDetailsViewModel = viewModel(
142
+ key = podcastUri,
143
+ factory = PodcastDetailsViewModel .provideFactory(
144
+ owner = LocalSavedStateRegistryOwner .current,
145
+ defaultArgs = bundleOf(
146
+ Screen .ARG_PODCAST_URI to podcastUri
147
+ )
148
+ )
142
149
)
143
150
PodcastDetailsScreen (
144
151
viewModel = podcastDetailsViewModel,
0 commit comments