update dependencies + fix credits on people detail + add animations to page transition

This commit is contained in:
Owen LeJeune
2023-06-22 22:44:33 -04:00
parent 42930ab953
commit 90969247f9
16 changed files with 90 additions and 124 deletions

View File

@@ -4,7 +4,7 @@ plugins {
id 'kotlin-android'
}
def composeVersion = "1.2.0-beta03"
def composeCompilerVersion = "1.4.7"
android {
compileSdkVersion 33
@@ -25,6 +25,9 @@ android {
buildConfigField("String", "TMDB_Api_v4Key", TMDB_Api_v4Key)
}
buildFeatures {
buildConfig = true
}
buildTypes {
release {
minifyEnabled false
@@ -38,44 +41,44 @@ android {
}
kotlinOptions {
jvmTarget = '11'
useIR = true
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion composeVersion
kotlinCompilerExtensionVersion composeCompilerVersion
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
namespace 'com.owenlejeune.tvtime'
}
dependencies {
// ktx
def ktx_core = "1.8.0"
def ktx_core = "1.10.1"
def ktx_paging = "3.1.1"
implementation "androidx.core:core-ktx:$ktx_core"
implementation "androidx.paging:paging-common-ktx:$ktx_paging"
// android x
def androidx = "1.0.0"
def androidx = "1.1.0"
implementation "androidx.window:window:$androidx"
// material
def material = "1.6.1"
def material = "1.9.0"
implementation "com.google.android.material:material:$material"
// compose
def compose = composeVersion
def compose_material3 = "1.0.0-alpha13"
def compose_accompanist = "0.24.10-beta"
def compose_navigation = "2.5.3"
def compose_paging = "1.0.0-alpha16"
def compose = "1.2.0-beta03"
def compose_material3 = "1.2.0-alpha02"
def compose_accompanist = "0.28.0"
def compose_navigation = "2.7.0-beta01"
def compose_paging = "3.2.0-beta01"
def compose_constraint_layout = "1.0.1"
def compose_activity = "1.4.0"
def compose_activity = "1.7.2"
implementation "androidx.compose.ui:ui:$compose"
implementation "androidx.compose.material3:material3:$compose_material3"
implementation "androidx.compose.material:material:$compose"
@@ -86,12 +89,10 @@ dependencies {
implementation "com.google.accompanist:accompanist-pager:$compose_accompanist"
implementation "com.google.accompanist:accompanist-pager-indicators:$compose_accompanist"
implementation "com.google.accompanist:accompanist-flowlayout:$compose_accompanist"
// implementation "com.google.accompanist:accompanist-insets:$compose_accompanist"
implementation "androidx.navigation:navigation-compose:$compose_navigation"
implementation "androidx.paging:paging-compose:$compose_paging"
implementation "androidx.constraintlayout:constraintlayout-compose:$compose_constraint_layout"
implementation "androidx.paging:paging-compose:$compose_paging"
implementation "com.google.accompanist:accompanist-webview:0.28.0"
implementation "com.google.accompanist:accompanist-webview:$compose_accompanist"
// material you
def monet_compat = "0.4.1"
@@ -104,7 +105,7 @@ dependencies {
// retrofit
def retrofit = "2.9.0"
def stetho = "1.6.0"
def gson = "2.9.0"
def gson = "2.10.1"
def profiler = "1.0.8"
implementation "com.squareup.retrofit2:retrofit:$retrofit"
implementation "com.squareup.retrofit2:converter-gson:$retrofit"
@@ -145,7 +146,7 @@ dependencies {
// testing
def junit = "4.13.2"
def androidx_junit = "1.1.3"
def espresso_core = "3.4.0"
def espresso_core = "3.5.1"
testImplementation "junit:junit:$junit"
androidTestImplementation "androidx.test.ext:junit:$androidx_junit"
androidTestImplementation "androidx.test.espresso:espresso-core:$espresso_core"

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.owenlejeune.tvtime">
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.INTERNET" />

View File

@@ -8,14 +8,12 @@ import androidx.compose.runtime.DisposableEffect
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalFocusManager
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.rememberNavController
import com.kieronquinn.monetcompat.app.MonetCompatActivity
import com.owenlejeune.tvtime.extensions.rememberWindowSizeClass
import com.owenlejeune.tvtime.ui.navigation.AppNavigationHost
import com.owenlejeune.tvtime.ui.navigation.HomeScreenNavItem
import com.owenlejeune.tvtime.ui.theme.TVTimeTheme
import com.owenlejeune.tvtime.ui.viewmodel.ConfigurationViewModel
import com.owenlejeune.tvtime.utils.KeyboardManager
import com.owenlejeune.tvtime.utils.SessionManager
import kotlinx.coroutines.CoroutineScope

View File

@@ -38,14 +38,12 @@ import androidx.compose.ui.focus.onFocusEvent
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.*
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.layout.onGloballyPositioned
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.TextStyle
@@ -73,9 +71,9 @@ import com.owenlejeune.tvtime.extensions.unlessEmpty
import com.owenlejeune.tvtime.preferences.AppPreferences
import com.owenlejeune.tvtime.ui.navigation.AppNavItem
import com.owenlejeune.tvtime.ui.viewmodel.HomeScreenViewModel
import com.owenlejeune.tvtime.utils.types.MediaViewType
import com.owenlejeune.tvtime.utils.SessionManager
import com.owenlejeune.tvtime.utils.TmdbUtils
import com.owenlejeune.tvtime.utils.types.MediaViewType
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor
@@ -756,6 +754,7 @@ fun AccountIcon(
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun ThemedOutlineTextField(
value: String,
@@ -803,12 +802,13 @@ fun ThemedOutlineTextField(
maxLines = maxLines,
interactionSource = interactionSource,
shape = shape,
colors = TextFieldDefaults.outlinedTextFieldColors(
colors = OutlinedTextFieldDefaults.colors(
unfocusedBorderColor = MaterialTheme.colorScheme.onBackground,
focusedBorderColor = MaterialTheme.colorScheme.primary,
focusedLabelColor = MaterialTheme.colorScheme.primary,
cursorColor = MaterialTheme.colorScheme.primary,
textColor = MaterialTheme.colorScheme.onBackground,
focusedTextColor = MaterialTheme.colorScheme.onBackground,
unfocusedTextColor = MaterialTheme.colorScheme.onBackground,
errorBorderColor = MaterialTheme.colorScheme.error,
errorCursorColor = MaterialTheme.colorScheme.error,
errorLabelColor = MaterialTheme.colorScheme.error

View File

@@ -1,5 +1,10 @@
package com.owenlejeune.tvtime.ui.navigation
import android.util.Log
import androidx.compose.animation.AnimatedContentTransitionScope
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import androidx.navigation.NavHostController
@@ -11,17 +16,17 @@ import androidx.navigation.navDeepLink
import com.owenlejeune.tvtime.R
import com.owenlejeune.tvtime.extensions.WindowSizeClass
import com.owenlejeune.tvtime.preferences.AppPreferences
import com.owenlejeune.tvtime.ui.screens.SearchScreen
import com.owenlejeune.tvtime.ui.screens.AboutScreen
import com.owenlejeune.tvtime.ui.screens.AccountScreen
import com.owenlejeune.tvtime.ui.screens.HomeScreen
import com.owenlejeune.tvtime.ui.screens.ListDetailScreen
import com.owenlejeune.tvtime.ui.screens.MediaDetailScreen
import com.owenlejeune.tvtime.utils.types.MediaViewType
import com.owenlejeune.tvtime.ui.screens.PersonDetailScreen
import com.owenlejeune.tvtime.ui.screens.SearchScreen
import com.owenlejeune.tvtime.ui.screens.SettingsScreen
import com.owenlejeune.tvtime.ui.screens.WebLinkScreen
import com.owenlejeune.tvtime.ui.screens.HomeScreen
import com.owenlejeune.tvtime.utils.NavConstants
import com.owenlejeune.tvtime.utils.types.MediaViewType
import org.koin.java.KoinJavaComponent
@Composable
@@ -32,8 +37,15 @@ fun AppNavigationHost(
windowSize: WindowSizeClass,
preferences: AppPreferences = KoinJavaComponent.get(AppPreferences::class.java)
) {
NavHost(navController = appNavController, startDestination = startDestination) {
composable(AppNavItem.MainView.route) {
NavHost(
navController = appNavController,
startDestination = startDestination,
enterTransition = { slideIntoContainer(AnimatedContentTransitionScope.SlideDirection.Start, tween(500)) },
popEnterTransition = { fadeIn(tween(500)) },
exitTransition = { fadeOut(tween(500)) },
popExitTransition = { slideOutOfContainer(AnimatedContentTransitionScope.SlideDirection.End, tween(500)) }
) {
composable(route = AppNavItem.MainView.route) {
HomeScreen(
appNavController = appNavController,
mainNavStartRoute = mainNavStartRoute,
@@ -41,7 +53,7 @@ fun AppNavigationHost(
)
}
composable(
AppNavItem.DetailView.route.plus("/{${NavConstants.TYPE_KEY}}/{${NavConstants.ID_KEY}}"),
route = AppNavItem.DetailView.route.plus("/{${NavConstants.TYPE_KEY}}/{${NavConstants.ID_KEY}}"),
arguments = listOf(
navArgument(NavConstants.ID_KEY) { type = NavType.IntType },
navArgument(NavConstants.TYPE_KEY) { type = NavType.EnumType(MediaViewType::class.java) }

View File

@@ -3,7 +3,6 @@ package com.owenlejeune.tvtime.ui.screens
import android.content.Intent
import android.net.Uri
import android.provider.Settings
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -32,7 +31,7 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarScrollState
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@@ -67,11 +66,9 @@ fun AboutScreen(
val context = LocalContext.current
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec, topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(topAppBarScrollState)
Scaffold(
modifier = Modifier.nestedScroll(connection = scrollBehavior.nestedScrollConnection),
topBar = {
@@ -216,7 +213,10 @@ private fun ColumnScope.AttributionSection() {
.clip(RoundedCornerShape(10.dp))
.clickable(
onClick = {
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.tmdb_home_page)))
val intent = Intent(
Intent.ACTION_VIEW,
Uri.parse(context.getString(R.string.tmdb_home_page))
)
context.startActivity(intent)
}
)

View File

@@ -1,6 +1,5 @@
package com.owenlejeune.tvtime.ui.screens
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material.icons.Icons
@@ -63,11 +62,9 @@ fun AccountScreen(
val currentSessionState = remember { SessionManager.currentSession }
val currentSession = currentSessionState.value
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec, topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(topAppBarScrollState)
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {

View File

@@ -2,17 +2,14 @@ package com.owenlejeune.tvtime.ui.screens
import android.app.Activity
import androidx.activity.compose.BackHandler
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope
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.shape.RoundedCornerShape
import androidx.compose.material.NavigationRailDefaults
import androidx.compose.material.Scaffold
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
@@ -27,9 +24,8 @@ import androidx.compose.material3.NavigationRailItemDefaults
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.TopAppBarScrollBehavior
import androidx.compose.material3.rememberTopAppBarScrollState
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
@@ -50,8 +46,8 @@ import com.owenlejeune.tvtime.preferences.AppPreferences
import com.owenlejeune.tvtime.ui.components.AccountIcon
import com.owenlejeune.tvtime.ui.components.ProfileMenuContainer
import com.owenlejeune.tvtime.ui.components.ProfileMenuDefaults
import com.owenlejeune.tvtime.ui.navigation.HomeScreenNavItem
import com.owenlejeune.tvtime.ui.navigation.HomeScreenNavHost
import com.owenlejeune.tvtime.ui.navigation.HomeScreenNavItem
import com.owenlejeune.tvtime.ui.viewmodel.HomeScreenViewModel
import org.koin.java.KoinJavaComponent
@@ -64,11 +60,8 @@ fun HomeScreen(
) {
val navController = rememberNavController()
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec, topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(topAppBarScrollState)
val homeScreenViewModel = viewModel<HomeScreenViewModel>()
@@ -123,6 +116,7 @@ fun HomeScreen(
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun TopBar(
scrollBehavior: TopAppBarScrollBehavior,
@@ -179,6 +173,7 @@ private fun BottomNavBar(
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun MainContent(
windowSize: WindowSizeClass,
@@ -218,6 +213,7 @@ private fun SingleColumnMainContent(
)
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun DualColumnMainContent(
appNavController: NavHostController,

View File

@@ -1,10 +1,7 @@
package com.owenlejeune.tvtime.ui.screens
import android.accounts.Account
import android.content.Context
import android.content.Intent
import android.util.Log
import android.widget.Toast
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.*
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.selection.selectable
@@ -13,11 +10,7 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Book
import androidx.compose.material.icons.filled.Bookmark
import androidx.compose.material.icons.filled.Delete
import androidx.compose.material.icons.filled.Favorite
import androidx.compose.material.icons.filled.Star
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
@@ -41,32 +34,22 @@ import androidx.navigation.NavController
import coil.compose.AsyncImage
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.owenlejeune.tvtime.R
import com.owenlejeune.tvtime.api.tmdb.api.v3.AccountService
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.MarkAsFavoriteBody
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.WatchlistBody
import com.owenlejeune.tvtime.api.tmdb.api.v4.ListV4Service
import com.owenlejeune.tvtime.api.tmdb.api.v4.model.*
import com.owenlejeune.tvtime.extensions.WindowSizeClass
import com.owenlejeune.tvtime.extensions.unlessEmpty
import com.owenlejeune.tvtime.preferences.AppPreferences
import com.owenlejeune.tvtime.ui.components.Actions
import com.owenlejeune.tvtime.ui.components.ActionsView
import com.owenlejeune.tvtime.ui.components.FavoriteButton
import com.owenlejeune.tvtime.ui.components.RatingView
import com.owenlejeune.tvtime.ui.components.Spinner
import com.owenlejeune.tvtime.ui.components.SwitchPreference
import com.owenlejeune.tvtime.ui.navigation.AppNavItem
import com.owenlejeune.tvtime.ui.theme.*
import com.owenlejeune.tvtime.ui.viewmodel.AccountViewModel
import com.owenlejeune.tvtime.utils.SessionManager
import com.owenlejeune.tvtime.utils.TmdbUtils
import com.owenlejeune.tvtime.utils.types.MediaViewType
import de.charlex.compose.RevealDirection
import de.charlex.compose.RevealSwipe
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.koin.java.KoinJavaComponent
import kotlin.math.roundToInt
@@ -90,19 +73,16 @@ fun ListDetailScreen(
val listMap = remember { accountViewModel.listMap }
val parentList = listMap[itemId]
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
SmallTopAppBar(
TopAppBar(
scrollBehavior = scrollBehavior,
colors = TopAppBarDefaults
.smallTopAppBarColors(
.topAppBarColors(
scrolledContainerColor = MaterialTheme.colorScheme.background,
titleContentColor = MaterialTheme.colorScheme.primary
),

View File

@@ -81,11 +81,8 @@ fun MediaDetailScreen(
val imagesMap = remember { mainViewModel.produceImagesFor(type) }
val images = imagesMap[itemId]
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
val pagerState = rememberPagerState(initialPage = 0)
@@ -96,10 +93,10 @@ fun MediaDetailScreen(
Scaffold(
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
SmallTopAppBar(
TopAppBar(
scrollBehavior = scrollBehavior,
colors = TopAppBarDefaults
.smallTopAppBarColors(
.topAppBarColors(
scrolledContainerColor = MaterialTheme.colorScheme.background,
titleContentColor = MaterialTheme.colorScheme.primary
),

View File

@@ -1,6 +1,5 @@
package com.owenlejeune.tvtime.ui.screens
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -19,14 +18,13 @@ import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SmallTopAppBar
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.material3.rememberTopAppBarScrollState
import androidx.compose.material3.rememberTopAppBarState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.res.stringResource
@@ -58,6 +56,7 @@ fun PersonDetailScreen(
LaunchedEffect(Unit) {
mainViewModel.getById(personId, MediaViewType.PERSON)
mainViewModel.getExternalIds(personId, MediaViewType.PERSON)
mainViewModel.getCastAndCrew(personId, MediaViewType.PERSON)
}
val systemUiController = rememberSystemUiController()
@@ -67,19 +66,16 @@ fun PersonDetailScreen(
val peopleMap = remember { mainViewModel.peopleMap }
val person = peopleMap[personId]
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehaviour = remember(decayAnimationSpec) {
TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.pinnedScrollBehavior(topAppBarScrollState)
Scaffold(
modifier = Modifier.nestedScroll(scrollBehaviour.nestedScrollConnection),
modifier = Modifier.nestedScroll(scrollBehavior.nestedScrollConnection),
topBar = {
SmallTopAppBar(
scrollBehavior = scrollBehaviour,
TopAppBar(
scrollBehavior = scrollBehavior,
colors = TopAppBarDefaults
.smallTopAppBarColors(
.topAppBarColors(
scrolledContainerColor = MaterialTheme.colorScheme.background,
titleContentColor = MaterialTheme.colorScheme.primary
),
@@ -96,8 +92,6 @@ fun PersonDetailScreen(
)
}
) { innerPadding ->
val scope = rememberCoroutineScope()
Box(modifier = Modifier.padding(innerPadding)) {
Column(
modifier = Modifier

View File

@@ -23,22 +23,17 @@ import androidx.paging.compose.collectAsLazyPagingItems
import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.owenlejeune.tvtime.R
import com.owenlejeune.tvtime.api.tmdb.api.v3.MoviesService
import com.owenlejeune.tvtime.api.tmdb.api.v3.SearchService
import com.owenlejeune.tvtime.api.tmdb.api.v3.TvService
import com.owenlejeune.tvtime.api.tmdb.api.v3.model.*
import com.owenlejeune.tvtime.extensions.listItems
import com.owenlejeune.tvtime.extensions.lazyPagingItems
import com.owenlejeune.tvtime.ui.components.MediaResultCard
import com.owenlejeune.tvtime.ui.viewmodel.MainViewModel
import com.owenlejeune.tvtime.ui.viewmodel.SearchViewModel
import com.owenlejeune.tvtime.utils.TmdbUtils
import com.owenlejeune.tvtime.utils.types.MediaViewType
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.koin.java.KoinJavaComponent.get
import com.owenlejeune.tvtime.extensions.lazyPagingItems
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun SearchScreen(
appNavController: NavHostController,
@@ -67,14 +62,15 @@ fun SearchScreen(
}
}
SmallTopAppBar(
TopAppBar(
title = {
TextField(
value = searchValue.value,
onValueChange = { searchValue.value = it },
placeholder = { Text(text = stringResource(id = R.string.search_placeholder, title)) },
colors = TextFieldDefaults.textFieldColors(
containerColor = MaterialTheme.colorScheme.surface,
colors = TextFieldDefaults.colors(
focusedContainerColor = MaterialTheme.colorScheme.surface,
unfocusedContainerColor = MaterialTheme.colorScheme.surface,
focusedIndicatorColor = MaterialTheme.colorScheme.surface,
unfocusedIndicatorColor = MaterialTheme.colorScheme.surface
),

View File

@@ -3,7 +3,6 @@ package com.owenlejeune.tvtime.ui.screens
import android.os.Build
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.animation.rememberSplineBasedDecay
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
@@ -61,11 +60,8 @@ fun SettingsScreen(
systemUiController.setStatusBarColor(color = MaterialTheme.colorScheme.background)
systemUiController.setNavigationBarColor(color = MaterialTheme.colorScheme.background)
val decayAnimationSpec = rememberSplineBasedDecay<Float>()
val topAppBarScrollState = rememberTopAppBarScrollState()
val scrollBehavior = remember(decayAnimationSpec) {
TopAppBarDefaults.exitUntilCollapsedScrollBehavior(decayAnimationSpec, topAppBarScrollState)
}
val topAppBarScrollState = rememberTopAppBarState()
val scrollBehavior = TopAppBarDefaults.exitUntilCollapsedScrollBehavior(topAppBarScrollState)
val appBarTitle = remember { mutableStateOf("") }
val defaultRestoreAction = ::resetAllPreferences

View File

@@ -199,7 +199,7 @@ class MainViewModel: ViewModel(), KoinComponent {
when (type) {
MediaViewType.MOVIE -> movieService.getCastAndCrew(id)
MediaViewType.TV -> tvService.getCastAndCrew(id)
MediaViewType.PERSON -> tvService.getCastAndCrew(id)
MediaViewType.PERSON -> peopleService.getCredits(id)
else -> {}
}
}

View File

@@ -1,6 +1,6 @@
buildscript {
def gradle = "7.1.2"
def kotlin = "1.6.21"
def gradle = "8.0.2"
def kotlin = "1.8.21"
repositories {
google()
mavenCentral()

View File

@@ -1,6 +1,6 @@
#Tue Feb 08 23:49:04 EST 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME