From 15c1ac959304fd8afd9e9916033a395970a55004 Mon Sep 17 00:00:00 2001 From: Jarne Demeulemeester Date: Mon, 15 Jul 2024 22:18:09 +0200 Subject: [PATCH] refactor(tv): replace deprecated tv lazy layouts with normal lazy layouts Use beta version of compose for now (1.7.x) TV compose foundation library removed No longer using bom to specify dependencies (doesn't work with the beta versions) --- app/tv/build.gradle.kts | 6 ++---- .../dev/jdtech/jellyfin/ui/AddServerScreen.kt | 2 +- .../java/dev/jdtech/jellyfin/ui/HomeScreen.kt | 12 ++++++------ .../dev/jdtech/jellyfin/ui/LibrariesScreen.kt | 10 +++++----- .../java/dev/jdtech/jellyfin/ui/LibraryScreen.kt | 12 ++++++------ .../java/dev/jdtech/jellyfin/ui/LoginScreen.kt | 4 ++-- .../java/dev/jdtech/jellyfin/ui/PlayerScreen.kt | 2 +- .../java/dev/jdtech/jellyfin/ui/SeasonScreen.kt | 6 +++--- .../dev/jdtech/jellyfin/ui/ServerSelectScreen.kt | 6 +++--- .../java/dev/jdtech/jellyfin/ui/SettingsScreen.kt | 14 +++++++------- .../dev/jdtech/jellyfin/ui/SettingsSubScreen.kt | 6 +++--- .../java/dev/jdtech/jellyfin/ui/ShowScreen.kt | 15 ++++++++------- .../dev/jdtech/jellyfin/ui/UserSelectScreen.kt | 6 +++--- .../ui/components/SettingsDetailsSelectCard.kt | 4 ++-- .../ui/dialogs/VideoPlayerTrackSelectorDialog.kt | 6 +++--- core/build.gradle.kts | 4 ++-- .../dev/jdtech/jellyfin/utils/ComposeUtils.kt | 2 +- gradle/libs.versions.toml | 13 ++++++------- 18 files changed, 64 insertions(+), 66 deletions(-) diff --git a/app/tv/build.gradle.kts b/app/tv/build.gradle.kts index 3324bee0..b4aa064e 100644 --- a/app/tv/build.gradle.kts +++ b/app/tv/build.gradle.kts @@ -81,15 +81,14 @@ ktlint { } dependencies { - val composeBom = platform(libs.androidx.compose.bom) - implementation(projects.core) implementation(projects.data) implementation(projects.preferences) implementation(projects.player.core) implementation(projects.player.video) implementation(libs.androidx.activity.compose) - implementation(composeBom) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.compose.runtime) implementation(libs.androidx.compose.ui.tooling.preview) implementation(libs.androidx.compose.material3) implementation(libs.androidx.core) @@ -99,7 +98,6 @@ dependencies { implementation(libs.androidx.media3.ui) implementation(libs.androidx.media3.session) implementation(libs.androidx.paging.compose) - implementation(libs.androidx.tv.foundation) implementation(libs.androidx.tv.material) implementation(libs.coil.compose) implementation(libs.coil.svg) diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/AddServerScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/AddServerScreen.kt index acdacdce..a59595b4 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/AddServerScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/AddServerScreen.kt @@ -115,7 +115,7 @@ private fun AddServerScreenLayout( }, singleLine = true, keyboardOptions = KeyboardOptions( - autoCorrect = false, + autoCorrectEnabled = false, keyboardType = KeyboardType.Uri, imeAction = ImeAction.Go, ), diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/HomeScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/HomeScreen.kt index 4515a414..2fbb892b 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/HomeScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/HomeScreen.kt @@ -6,6 +6,9 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -19,9 +22,6 @@ import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.foundation.lazy.list.TvLazyRow -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.ramcosta.composedestinations.annotation.Destination @@ -107,7 +107,7 @@ private fun HomeScreenLayout( } else -> Unit } - TvLazyColumn( + LazyColumn( contentPadding = PaddingValues(bottom = MaterialTheme.spacings.large), modifier = Modifier .fillMaxSize() @@ -122,7 +122,7 @@ private fun HomeScreenLayout( modifier = Modifier.padding(start = MaterialTheme.spacings.large), ) Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium)) - TvLazyRow( + LazyRow( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large), ) { @@ -145,7 +145,7 @@ private fun HomeScreenLayout( modifier = Modifier.padding(start = MaterialTheme.spacings.large), ) Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium)) - TvLazyRow( + LazyRow( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.large), ) { diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibrariesScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibrariesScreen.kt index 07e042fc..d412a0c1 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibrariesScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibrariesScreen.kt @@ -2,6 +2,9 @@ package dev.jdtech.jellyfin.ui import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -14,9 +17,6 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.grid.TvGridCells -import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid -import androidx.tv.foundation.lazy.grid.items import androidx.tv.material3.MaterialTheme import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator @@ -72,8 +72,8 @@ private fun LibrariesScreenLayout( val focusRequester = remember { FocusRequester() } - TvLazyVerticalGrid( - columns = TvGridCells.Fixed(3), + LazyVerticalGrid( + columns = GridCells.Fixed(3), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large), verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large), contentPadding = PaddingValues( diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibraryScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibraryScreen.kt index 6b18565f..4af57365 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibraryScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LibraryScreen.kt @@ -3,6 +3,9 @@ package dev.jdtech.jellyfin.ui import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.GridItemSpan +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -15,9 +18,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel import androidx.paging.PagingData import androidx.paging.compose.collectAsLazyPagingItems -import androidx.tv.foundation.lazy.grid.TvGridCells -import androidx.tv.foundation.lazy.grid.TvGridItemSpan -import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.ramcosta.composedestinations.annotation.Destination @@ -86,8 +86,8 @@ private fun LibraryScreenLayout( is LibraryViewModel.UiState.Loading -> Text(text = "LOADING") is LibraryViewModel.UiState.Normal -> { val items = uiState.items.collectAsLazyPagingItems() - TvLazyVerticalGrid( - columns = TvGridCells.Fixed(5), + LazyVerticalGrid( + columns = GridCells.Fixed(5), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large), @@ -95,7 +95,7 @@ private fun LibraryScreenLayout( .fillMaxSize() .focusRequester(focusRequester), ) { - item(span = { TvGridItemSpan(this.maxLineSpan) }) { + item(span = { GridItemSpan(this.maxLineSpan) }) { Text( text = libraryName, style = MaterialTheme.typography.displayMedium, diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LoginScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LoginScreen.kt index 6cbc210c..e0dd01d9 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LoginScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/LoginScreen.kt @@ -152,7 +152,7 @@ private fun LoginScreenLayout( label = { Text(text = stringResource(id = CoreR.string.edit_text_username_hint)) }, singleLine = true, keyboardOptions = KeyboardOptions( - autoCorrect = false, + autoCorrectEnabled = false, keyboardType = KeyboardType.Text, imeAction = ImeAction.Next, ), @@ -175,7 +175,7 @@ private fun LoginScreenLayout( label = { Text(text = stringResource(id = CoreR.string.edit_text_password_hint)) }, singleLine = true, keyboardOptions = KeyboardOptions( - autoCorrect = false, + autoCorrectEnabled = false, keyboardType = KeyboardType.Password, imeAction = ImeAction.Go, ), diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt index 92cb0aae..af5a8c43 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/PlayerScreen.kt @@ -18,12 +18,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.res.painterResource import androidx.compose.ui.viewinterop.AndroidView import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.media3.common.C import androidx.media3.common.Player import androidx.media3.common.TrackSelectionOverride diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SeasonScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SeasonScreen.kt index e54895e7..21c64f70 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SeasonScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SeasonScreen.kt @@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -16,8 +18,6 @@ import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.ramcosta.composedestinations.annotation.Destination @@ -109,7 +109,7 @@ private fun SeasonScreenLayout( style = MaterialTheme.typography.headlineMedium, ) } - TvLazyColumn( + LazyColumn( contentPadding = PaddingValues( top = MaterialTheme.spacings.large, bottom = MaterialTheme.spacings.large, diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ServerSelectScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ServerSelectScreen.kt index 4d3cc63c..e11f04ac 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ServerSelectScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ServerSelectScreen.kt @@ -13,6 +13,8 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -31,8 +33,6 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyRow -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.Border import androidx.tv.material3.ClickableSurfaceDefaults import androidx.tv.material3.Icon @@ -172,7 +172,7 @@ private fun ServerSelectScreenLayout( style = MaterialTheme.typography.bodyMedium, ) } else { - TvLazyRow( + LazyRow( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default), modifier = Modifier.focusRequester(focusRequester), diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsScreen.kt index 9e5866c0..f65bc835 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsScreen.kt @@ -3,6 +3,10 @@ package dev.jdtech.jellyfin.ui import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.GridItemSpan +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -15,10 +19,6 @@ import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.grid.TvGridCells -import androidx.tv.foundation.lazy.grid.TvGridItemSpan -import androidx.tv.foundation.lazy.grid.TvLazyVerticalGrid -import androidx.tv.foundation.lazy.grid.items import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.ramcosta.composedestinations.annotation.Destination @@ -88,8 +88,8 @@ private fun SettingsScreenLayout( when (uiState) { is SettingsViewModel.UiState.Normal -> { - TvLazyVerticalGrid( - columns = TvGridCells.Fixed(3), + LazyVerticalGrid( + columns = GridCells.Fixed(3), horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2, vertical = MaterialTheme.spacings.large), @@ -97,7 +97,7 @@ private fun SettingsScreenLayout( .fillMaxSize() .focusRequester(focusRequester), ) { - item(span = { TvGridItemSpan(this.maxLineSpan) }) { + item(span = { GridItemSpan(this.maxLineSpan) }) { Text( text = stringResource(id = CoreR.string.title_settings), style = MaterialTheme.typography.displayMedium, diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsSubScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsSubScreen.kt index eec271ef..aeef7df1 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsSubScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/SettingsSubScreen.kt @@ -8,6 +8,8 @@ import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -23,8 +25,6 @@ import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.MaterialTheme import androidx.tv.material3.Text import com.ramcosta.composedestinations.annotation.Destination @@ -131,7 +131,7 @@ private fun SettingsSubScreenLayout( Row( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.large), ) { - TvLazyColumn( + LazyColumn( verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(vertical = MaterialTheme.spacings.large), modifier = Modifier diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ShowScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ShowScreen.kt index 77fb1464..95c35bef 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ShowScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/ShowScreen.kt @@ -1,5 +1,6 @@ package dev.jdtech.jellyfin.ui +import android.annotation.SuppressLint import android.content.Intent import android.net.Uri import android.view.KeyEvent @@ -16,6 +17,10 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.collectAsState @@ -44,10 +49,6 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.toSize import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.foundation.lazy.list.TvLazyRow -import androidx.tv.foundation.lazy.list.items -import androidx.tv.foundation.lazy.list.rememberTvLazyListState import androidx.tv.material3.Button import androidx.tv.material3.Icon import androidx.tv.material3.LocalContentColor @@ -136,7 +137,7 @@ private fun ShowScreenLayout( ) { val focusRequester = remember { FocusRequester() } - val listState = rememberTvLazyListState() + val listState = rememberLazyListState() val listSize = remember { mutableIntStateOf(2) } var currentIndex by remember { mutableIntStateOf(0) } @@ -179,7 +180,7 @@ private fun ShowScreenLayout( ), ) } - TvLazyColumn( + LazyColumn( state = listState, contentPadding = PaddingValues(top = 112.dp, bottom = MaterialTheme.spacings.large), verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium), @@ -364,7 +365,7 @@ private fun ShowScreenLayout( } } item { - TvLazyRow( + LazyRow( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(horizontal = MaterialTheme.spacings.default * 2), ) { diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/UserSelectScreen.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/UserSelectScreen.kt index ed1b6e92..4a0679e3 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/UserSelectScreen.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/UserSelectScreen.kt @@ -11,6 +11,8 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect @@ -29,8 +31,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel -import androidx.tv.foundation.lazy.list.TvLazyRow -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.Border import androidx.tv.material3.ClickableSurfaceDefaults import androidx.tv.material3.Icon @@ -146,7 +146,7 @@ private fun UserSelectScreenLayout( style = MaterialTheme.typography.bodyMedium, ) } else { - TvLazyRow( + LazyRow( horizontalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.default), contentPadding = PaddingValues(MaterialTheme.spacings.default), modifier = Modifier.focusRequester(focusRequester), diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/components/SettingsDetailsSelectCard.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/components/SettingsDetailsSelectCard.kt index 74d2b9ba..efc6aa19 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/components/SettingsDetailsSelectCard.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/components/SettingsDetailsSelectCard.kt @@ -9,6 +9,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -18,7 +19,6 @@ import androidx.compose.ui.res.stringArrayResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import androidx.tv.foundation.lazy.list.TvLazyColumn import androidx.tv.material3.Border import androidx.tv.material3.ClickableSurfaceDefaults import androidx.tv.material3.ClickableSurfaceScale @@ -56,7 +56,7 @@ fun SettingsDetailsCard( Text(text = stringResource(id = it), style = MaterialTheme.typography.bodyMedium) } Spacer(modifier = Modifier.height(MaterialTheme.spacings.default)) - TvLazyColumn( + LazyColumn( verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall), contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall), ) { diff --git a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt index 94176948..9393adc9 100644 --- a/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt +++ b/app/tv/src/main/java/dev/jdtech/jellyfin/ui/dialogs/VideoPlayerTrackSelectorDialog.kt @@ -10,6 +10,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -19,8 +21,6 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.media3.common.C -import androidx.tv.foundation.lazy.list.TvLazyColumn -import androidx.tv.foundation.lazy.list.items import androidx.tv.material3.Border import androidx.tv.material3.ClickableSurfaceDefaults import androidx.tv.material3.ClickableSurfaceScale @@ -65,7 +65,7 @@ fun VideoPlayerTrackSelectorDialog( style = MaterialTheme.typography.headlineMedium, ) Spacer(modifier = Modifier.height(MaterialTheme.spacings.medium)) - TvLazyColumn( + LazyColumn( verticalArrangement = Arrangement.spacedBy(MaterialTheme.spacings.medium - MaterialTheme.spacings.extraSmall), contentPadding = PaddingValues(vertical = MaterialTheme.spacings.extraSmall), ) { diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 76bfe312..f38277b9 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -49,13 +49,13 @@ ktlint { } dependencies { - val composeBom = platform(libs.androidx.compose.bom) + // val composeBom = platform(libs.androidx.compose.bom) implementation(projects.data) implementation(projects.preferences) implementation(projects.player.core) implementation(libs.androidx.appcompat) - implementation(composeBom) + // implementation(composeBom) implementation(libs.androidx.compose.ui) implementation(libs.androidx.core) implementation(libs.androidx.hilt.work) diff --git a/core/src/main/java/dev/jdtech/jellyfin/utils/ComposeUtils.kt b/core/src/main/java/dev/jdtech/jellyfin/utils/ComposeUtils.kt index 00da8ca2..79e85a5b 100644 --- a/core/src/main/java/dev/jdtech/jellyfin/utils/ComposeUtils.kt +++ b/core/src/main/java/dev/jdtech/jellyfin/utils/ComposeUtils.kt @@ -6,8 +6,8 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.input.key.onKeyEvent import androidx.compose.ui.input.key.onPreviewKeyEvent -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.lifecycle.Lifecycle +import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.repeatOnLifecycle import kotlinx.coroutines.flow.Flow diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 84ce78bb..5797bad9 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ android-desugar-jdk-libs = "2.0.4" android-plugin = "8.5.1" androidx-activity = "1.9.0" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2024.06.00" +androidx-compose = "1.7.0-beta05" androidx-compose-material3 = "1.2.1" androidx-constraintlayout = "2.1.4" androidx-core = "1.13.1" @@ -22,7 +22,6 @@ androidx-test-expresso = "3.6.1" androidx-test-junit = "1.2.1" androidx-test-rules = "1.6.1" androidx-test-runner = "1.6.1" -androidx-tv = "1.0.0-alpha11" androidx-tv-material3 = "1.0.0-rc01" androidx-work = "2.9.0" coil = "2.6.0" @@ -46,11 +45,12 @@ android-desugar-jdk = { group = "com.android.tools", name = "desugar_jdk_libs", androidx-activity = { group = "androidx.activity", name = "activity", version.ref = "androidx-activity" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "androidx-activity" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "androidx-appcompat" } -androidx-compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "androidx-compose-bom" } +androidx-compose-foundation = { group = "androidx.compose.foundation", name = "foundation", version.ref = "androidx-compose" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "androidx-compose-material3" } -androidx-compose-ui = { group = "androidx.compose.ui", name = "ui" } -androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling" } -androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview" } +androidx-compose-runtime = { group = "androidx.compose.runtime", name = "runtime", version.ref = "androidx-compose" } +androidx-compose-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "androidx-compose" } +androidx-compose-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "androidx-compose" } +androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "ui-tooling-preview", version.ref = "androidx-compose" } androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "androidx-constraintlayout" } androidx-core = { group = "androidx.core", name = "core", version.ref = "androidx-core" } androidx-hilt-navigation-compose = { group = "androidx.hilt", name = "hilt-navigation-compose", version.ref = "androidx-hilt" } @@ -79,7 +79,6 @@ androidx-test-expresso = { group = "androidx.test.espresso", name = "espresso-co androidx-test-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-junit" } androidx-test-rules = { group = "androidx.test" , name = "rules", version.ref = "androidx-test-rules" } androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" } -androidx-tv-foundation = { group = "androidx.tv", name = "tv-foundation", version.ref = "androidx-tv" } androidx-tv-material = { group = "androidx.tv", name = "tv-material", version.ref = "androidx-tv-material3" } androidx-work = { group = "androidx.work", name = "work-runtime", version.ref = "androidx-work" } androidx-work-testing = { group = "androidx.work", name = "work-testing", version.ref = "androidx-work" }