Skip to content

Commit b136c75

Browse files
committed
Add Hilt to TV and Wear
1 parent 7634e9d commit b136c75

File tree

26 files changed

+104
-280
lines changed

26 files changed

+104
-280
lines changed

Jetcaster/app/src/main/java/com/example/jetcaster/JetcasterApplication.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package com.example.jetcaster
1919
import android.app.Application
2020
import coil.ImageLoader
2121
import coil.ImageLoaderFactory
22-
import com.example.jetcaster.core.data.di.Graph
2322
import dagger.hilt.android.HiltAndroidApp
2423
import javax.inject.Inject
2524

Jetcaster/app/src/main/java/com/example/jetcaster/ui/home/Home.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,12 @@ import com.example.jetcaster.util.ToggleFollowPodcastIconButton
110110
import com.example.jetcaster.util.fullWidthItem
111111
import com.example.jetcaster.util.isCompact
112112
import com.example.jetcaster.util.quantityStringResource
113-
import java.time.Duration
114-
import java.time.LocalDateTime
115-
import java.time.OffsetDateTime
116113
import kotlinx.collections.immutable.PersistentList
117114
import kotlinx.collections.immutable.toPersistentList
118115
import kotlinx.coroutines.launch
116+
import java.time.Duration
117+
import java.time.LocalDateTime
118+
import java.time.OffsetDateTime
119119

120120
data class HomeState(
121121
val windowSizeClass: WindowSizeClass,
@@ -191,7 +191,9 @@ fun MainScreen(
191191
directive = navigator.scaffoldDirective,
192192
supportingPane = {
193193
val podcastDetailsViewModel =
194-
hiltViewModel<PodcastDetailsViewModel, PodcastDetailsViewModel.Factory> {
194+
hiltViewModel<PodcastDetailsViewModel, PodcastDetailsViewModel.Factory>(
195+
key = podcastUri
196+
) {
195197
it.create(podcastUri)
196198
}
197199
PodcastDetailsScreen(

Jetcaster/core/src/main/java/com/example/jetcaster/core/data/di/Graph.kt

Lines changed: 0 additions & 121 deletions
This file was deleted.

Jetcaster/tv-app/build.gradle.kts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ plugins {
1818
alias(libs.plugins.android.application)
1919
alias(libs.plugins.kotlin.android)
2020
alias(libs.plugins.ksp)
21+
alias(libs.plugins.hilt)
2122
}
2223

2324
android {
@@ -79,6 +80,11 @@ dependencies {
7980
implementation(libs.androidx.navigation.compose)
8081
implementation(libs.coil.kt.compose)
8182

83+
// Dependency injection
84+
implementation(libs.androidx.hilt.navigation.compose)
85+
implementation(libs.hilt.android)
86+
ksp(libs.hilt.compiler)
87+
8288

8389
implementation(project(":core"))
8490
implementation(project(":designsystem"))
@@ -89,4 +95,4 @@ dependencies {
8995
debugImplementation(libs.androidx.compose.ui.test.manifest)
9096

9197
coreLibraryDesugaring(libs.core.jdk.desugaring)
92-
}
98+
}

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/JetCasterTvApp.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,7 @@
1717
package com.example.jetcaster.tv
1818

1919
import android.app.Application
20-
import com.example.jetcaster.core.data.di.Graph
20+
import dagger.hilt.android.HiltAndroidApp
2121

22-
class JetCasterTvApp : Application() {
23-
24-
override fun onCreate() {
25-
super.onCreate()
26-
Graph.provide(this)
27-
}
28-
}
22+
@HiltAndroidApp
23+
class JetCasterTvApp : Application()

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ import androidx.tv.material3.Surface
2929
import androidx.tv.material3.Text
3030
import com.example.jetcaster.tv.ui.JetcasterApp
3131
import com.example.jetcaster.tv.ui.theme.JetcasterTheme
32+
import dagger.hilt.android.AndroidEntryPoint
3233

34+
@AndroidEntryPoint
3335
class MainActivity : ComponentActivity() {
3436
@OptIn(ExperimentalTvMaterial3Api::class)
3537
override fun onCreate(savedInstanceState: Bundle?) {

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/ui/JetcasterApp.kt

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import androidx.compose.material.icons.filled.VideoLibrary
2929
import androidx.compose.runtime.Composable
3030
import androidx.compose.ui.ExperimentalComposeUiApi
3131
import androidx.compose.ui.Modifier
32-
import androidx.lifecycle.viewmodel.compose.viewModel
3332
import androidx.navigation.compose.NavHost
3433
import androidx.navigation.compose.composable
3534
import androidx.tv.material3.ExperimentalTvMaterial3Api
@@ -40,10 +39,8 @@ import androidx.tv.material3.NavigationDrawerItem
4039
import androidx.tv.material3.Text
4140
import com.example.jetcaster.tv.ui.discover.DiscoverScreen
4241
import com.example.jetcaster.tv.ui.episode.EpisodeScreen
43-
import com.example.jetcaster.tv.ui.episode.EpisodeScreenViewModel
4442
import com.example.jetcaster.tv.ui.library.LibraryScreen
4543
import com.example.jetcaster.tv.ui.podcast.PodcastScreen
46-
import com.example.jetcaster.tv.ui.podcast.PodcastScreenViewModel
4744
import com.example.jetcaster.tv.ui.profile.ProfileScreen
4845
import com.example.jetcaster.tv.ui.search.SearchScreen
4946
import com.example.jetcaster.tv.ui.settings.SettingsScreen
@@ -165,11 +162,7 @@ private fun Route(jetcasterAppState: JetcasterAppState) {
165162
}
166163

167164
composable(Screen.Podcast.route) {
168-
val podcastScreenViewModel: PodcastScreenViewModel = viewModel(
169-
factory = PodcastScreenViewModel.factory
170-
)
171165
PodcastScreen(
172-
podcastScreenViewModel = podcastScreenViewModel,
173166
backToHomeScreen = jetcasterAppState::navigateToDiscover,
174167
playEpisode = {},
175168
showEpisodeDetails = { jetcasterAppState.showEpisodeDetails(it.episode.uri) },
@@ -180,15 +173,11 @@ private fun Route(jetcasterAppState: JetcasterAppState) {
180173
}
181174

182175
composable(Screen.Episode.route) {
183-
val episodeScreenViewModel: EpisodeScreenViewModel = viewModel(
184-
factory = EpisodeScreenViewModel.factory
185-
)
186176
EpisodeScreen(
187177
playEpisode = {
188178
jetcasterAppState.playEpisode(it.uri)
189179
},
190180
backToHome = jetcasterAppState::navigateToDiscover,
191-
episodeScreenViewModel = episodeScreenViewModel,
192181
)
193182
}
194183

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/ui/discover/DiscoverScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import androidx.compose.ui.focus.FocusRequester
2929
import androidx.compose.ui.focus.focusProperties
3030
import androidx.compose.ui.focus.focusRequester
3131
import androidx.compose.ui.focus.focusRestorer
32-
import androidx.lifecycle.viewmodel.compose.viewModel
32+
import androidx.hilt.navigation.compose.hiltViewModel
3333
import androidx.tv.foundation.lazy.list.TvLazyListState
3434
import androidx.tv.foundation.lazy.list.rememberTvLazyListState
3535
import androidx.tv.material3.ExperimentalTvMaterial3Api
@@ -52,7 +52,7 @@ fun DiscoverScreen(
5252
showPodcastDetails: (Podcast) -> Unit,
5353
showEpisodeDetails: (EpisodeToPodcast) -> Unit,
5454
modifier: Modifier = Modifier,
55-
discoverScreenViewModel: DiscoverScreenViewModel = viewModel()
55+
discoverScreenViewModel: DiscoverScreenViewModel = hiltViewModel()
5656
) {
5757
val uiState by discoverScreenViewModel.uiState.collectAsState()
5858

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/ui/discover/DiscoverScreenViewModel.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ package com.example.jetcaster.tv.ui.discover
1919
import androidx.lifecycle.ViewModel
2020
import androidx.lifecycle.viewModelScope
2121
import com.example.jetcaster.core.data.database.model.Category
22-
import com.example.jetcaster.core.data.di.Graph
2322
import com.example.jetcaster.core.data.repository.CategoryStore
2423
import com.example.jetcaster.core.data.repository.PodcastsRepository
2524
import com.example.jetcaster.tv.model.CategoryList
2625
import com.example.jetcaster.tv.model.EpisodeList
2726
import com.example.jetcaster.tv.model.PodcastList
27+
import dagger.hilt.android.lifecycle.HiltViewModel
2828
import kotlinx.coroutines.ExperimentalCoroutinesApi
2929
import kotlinx.coroutines.flow.MutableStateFlow
3030
import kotlinx.coroutines.flow.SharingStarted
@@ -34,10 +34,12 @@ import kotlinx.coroutines.flow.flowOf
3434
import kotlinx.coroutines.flow.map
3535
import kotlinx.coroutines.flow.stateIn
3636
import kotlinx.coroutines.launch
37+
import javax.inject.Inject
3738

38-
class DiscoverScreenViewModel(
39-
private val podcastsRepository: PodcastsRepository = Graph.podcastRepository,
40-
private val categoryStore: CategoryStore = Graph.categoryStore,
39+
@HiltViewModel
40+
class DiscoverScreenViewModel @Inject constructor(
41+
private val podcastsRepository: PodcastsRepository,
42+
private val categoryStore: CategoryStore,
4143
) : ViewModel() {
4244

4345
private val _selectedCategory = MutableStateFlow<Category?>(null)

Jetcaster/tv-app/src/main/java/com/example/jetcaster/tv/ui/episode/EpisodeScreen.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import androidx.compose.runtime.getValue
3030
import androidx.compose.ui.Alignment
3131
import androidx.compose.ui.Modifier
3232
import androidx.compose.ui.text.style.TextOverflow
33-
import androidx.lifecycle.viewmodel.compose.viewModel
33+
import androidx.hilt.navigation.compose.hiltViewModel
3434
import androidx.tv.material3.ExperimentalTvMaterial3Api
3535
import androidx.tv.material3.MaterialTheme
3636
import androidx.tv.material3.Text
@@ -50,7 +50,7 @@ fun EpisodeScreen(
5050
playEpisode: (Episode) -> Unit,
5151
backToHome: () -> Unit,
5252
modifier: Modifier = Modifier,
53-
episodeScreenViewModel: EpisodeScreenViewModel = viewModel()
53+
episodeScreenViewModel: EpisodeScreenViewModel = hiltViewModel()
5454
) {
5555

5656
val uiState by episodeScreenViewModel.uiStateFlow.collectAsState()

0 commit comments

Comments
 (0)