Skip to content

Commit bad6d5c

Browse files
authored
Fix: a build error happening on TV app module (#1307)
This PR fixes a build issue happening on tv-app module. The issue was cased by the resolution failure of BasicTextField2. More specifically the following change happen by this PR: - Switching from BasicTextFiled2 to BasicTextField - Modification on DiscoverScreenViewModel to remove line breaks causing a layout glitch - Passing supportingContent parameter to ListItem instead of putting everything in the content parameter
2 parents c90430c + c8b38f8 commit bad6d5c

File tree

3 files changed

+31
-37
lines changed

3 files changed

+31
-37
lines changed

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

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,11 @@
1616

1717
package com.example.jetcaster.tv.ui.discover
1818

19-
import android.util.Log
2019
import androidx.lifecycle.ViewModel
2120
import androidx.lifecycle.viewModelScope
2221
import com.example.jetcaster.core.data.database.model.Category
23-
import com.example.jetcaster.core.data.database.model.PodcastWithExtraInfo
2422
import com.example.jetcaster.core.data.di.Graph
2523
import com.example.jetcaster.core.data.repository.CategoryStore
26-
import com.example.jetcaster.core.data.repository.PodcastStore
2724
import com.example.jetcaster.core.data.repository.PodcastsRepository
2825
import com.example.jetcaster.tv.model.CategoryList
2926
import com.example.jetcaster.tv.model.EpisodeList
@@ -41,15 +38,25 @@ import kotlinx.coroutines.launch
4138
class DiscoverScreenViewModel(
4239
private val podcastsRepository: PodcastsRepository = Graph.podcastRepository,
4340
private val categoryStore: CategoryStore = Graph.categoryStore,
44-
private val podcastStore: PodcastStore = Graph.podcastStore,
4541
) : ViewModel() {
4642

4743
private val _selectedCategory = MutableStateFlow<Category?>(null)
44+
45+
private val categoryListFlow = categoryStore
46+
.categoriesSortedByPodcastCount()
47+
.map { categoryList ->
48+
categoryList.map { category ->
49+
Category(
50+
id = category.id,
51+
name = category.name.filter { !it.isWhitespace() }
52+
)
53+
}
54+
}
55+
4856
private val selectedCategoryFlow = combine(
49-
categoryStore.categoriesSortedByPodcastCount(),
57+
categoryListFlow,
5058
_selectedCategory
5159
) { categoryList, category ->
52-
Log.d("category list", "$categoryList")
5360
category ?: categoryList.firstOrNull()
5461
}
5562

@@ -76,7 +83,7 @@ class DiscoverScreenViewModel(
7683
}
7784

7885
val uiState = combine(
79-
categoryStore.categoriesSortedByPodcastCount(),
86+
categoryListFlow,
8087
selectedCategoryFlow,
8188
podcastInSelectedCategory,
8289
latestEpisodeFlow,
@@ -105,14 +112,6 @@ class DiscoverScreenViewModel(
105112
_selectedCategory.value = category
106113
}
107114

108-
fun subscribe(podcastWithExtraInfo: PodcastWithExtraInfo) {
109-
if (!podcastWithExtraInfo.isFollowed) {
110-
viewModelScope.launch {
111-
podcastStore.togglePodcastFollowed(podcastWithExtraInfo.podcast.uri)
112-
}
113-
}
114-
}
115-
116115
private fun refresh() {
117116
viewModelScope.launch {
118117
podcastsRepository.updatePodcasts(false)

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

Lines changed: 14 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import androidx.compose.runtime.LaunchedEffect
3232
import androidx.compose.runtime.collectAsState
3333
import androidx.compose.runtime.getValue
3434
import androidx.compose.runtime.remember
35-
import androidx.compose.ui.Alignment
3635
import androidx.compose.ui.ExperimentalComposeUiApi
3736
import androidx.compose.ui.Modifier
3837
import androidx.compose.ui.focus.FocusRequester
@@ -263,33 +262,29 @@ private fun EpisodeListItem(
263262
modifier: Modifier = Modifier,
264263
selected: Boolean = false
265264
) {
265+
val duration = episodeToPodcast.episode.duration
266+
266267
ListItem(
267268
selected = selected,
268269
onClick = { onInfoClicked(episodeToPodcast) },
269270
onLongClick = { onEpisodeSelected(episodeToPodcast) },
271+
supportingContent = {
272+
if (duration != null) {
273+
EpisodeDataAndDuration(episodeToPodcast.episode.published, duration)
274+
}
275+
},
270276
modifier = modifier
271277
) {
272-
Row(
273-
modifier = Modifier.padding(top = 12.dp, bottom = 12.dp, start = 12.dp, end = 16.dp),
274-
verticalAlignment = Alignment.CenterVertically
275-
) {
276-
EpisodeMetaData(episode = episodeToPodcast.episode)
277-
}
278+
EpisodeTitle(episode = episodeToPodcast.episode)
278279
}
279280
}
280281

281282
@OptIn(ExperimentalTvMaterial3Api::class)
282283
@Composable
283-
private fun EpisodeMetaData(episode: Episode, modifier: Modifier = Modifier) {
284-
val published = episode.published
285-
val duration = episode.duration
286-
Column(modifier = modifier) {
287-
Text(
288-
text = episode.title,
289-
style = MaterialTheme.typography.bodyMedium
290-
)
291-
if (duration != null) {
292-
EpisodeDataAndDuration(published, duration)
293-
}
294-
}
284+
private fun EpisodeTitle(episode: Episode, modifier: Modifier = Modifier) {
285+
Text(
286+
text = episode.title,
287+
style = MaterialTheme.typography.bodyMedium,
288+
modifier = modifier
289+
)
295290
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ import androidx.compose.foundation.layout.Row
2727
import androidx.compose.foundation.layout.fillMaxWidth
2828
import androidx.compose.foundation.layout.padding
2929
import androidx.compose.foundation.shape.RoundedCornerShape
30+
import androidx.compose.foundation.text.BasicTextField
3031
import androidx.compose.foundation.text.KeyboardOptions
31-
import androidx.compose.foundation.text2.BasicTextField2
3232
import androidx.compose.material.icons.Icons
3333
import androidx.compose.material.icons.filled.Search
3434
import androidx.compose.runtime.Composable
@@ -191,14 +191,14 @@ private fun KeywordInput(
191191
color = MaterialTheme.colorScheme.onSurfaceVariant
192192
)
193193
val cursorBrush = SolidColor(MaterialTheme.colorScheme.onSurfaceVariant)
194-
BasicTextField2(
194+
BasicTextField(
195195
value = keyword,
196196
onValueChange = onKeywordInput,
197197
textStyle = textStyle,
198198
cursorBrush = cursorBrush,
199199
modifier = modifier,
200200
keyboardOptions = KeyboardOptions.Default.copy(imeAction = ImeAction.Next),
201-
decorator = { innerTextField ->
201+
decorationBox = { innerTextField ->
202202
Box(
203203
modifier = Modifier
204204
.fillMaxWidth()

0 commit comments

Comments
 (0)