include initial support for more languages

This commit is contained in:
Owen LeJeune
2022-02-16 17:34:18 -05:00
parent fc2710fc01
commit 1fa93c4073
5 changed files with 41 additions and 10 deletions

View File

@@ -1,5 +1,6 @@
package com.owenlejeune.tvtime.api.tmdb
import androidx.compose.ui.text.intl.Locale
import com.owenlejeune.tvtime.BuildConfig
import com.owenlejeune.tvtime.api.Client
import com.owenlejeune.tvtime.api.QueryParam
@@ -14,6 +15,8 @@ class TmdbClient: KoinComponent {
companion object {
const val BASE_URL = "https://api.themoviedb.org/3/"
private val SUPPORTED_LANGUAGES = listOf("en", "fr")
}
private val client: Client by inject { parametersOf(BASE_URL) }
@@ -34,7 +37,15 @@ class TmdbClient: KoinComponent {
override fun intercept(chain: Interceptor.Chain): Response {
val apiParam = QueryParam("api_key", BuildConfig.TMDB_ApiKey)
val request = chain.addQueryParams(apiParam)
val locale = Locale.current
val languageParam = if (SUPPORTED_LANGUAGES.contains(locale.language)) {
val languageCode = "${locale.language}-${locale.region}"
QueryParam("language", languageCode)
} else {
null
}
val request = chain.addQueryParams(apiParam, languageParam)
return chain.proceed(request)
}

View File

@@ -4,13 +4,15 @@ import com.owenlejeune.tvtime.api.QueryParam
import okhttp3.Interceptor
import okhttp3.Request
fun Interceptor.Chain.addQueryParams(vararg queryParams: QueryParam): Request {
fun Interceptor.Chain.addQueryParams(vararg queryParams: QueryParam?): Request {
val original = request()
val originalHttpUrl = original.url()
val urlBuilder = originalHttpUrl.newBuilder()
queryParams.forEach { param ->
urlBuilder.addQueryParameter(param.key, param.param)
if (param != null) {
urlBuilder.addQueryParameter(param.key, param.param)
}
}
val url = urlBuilder.build()

View File

@@ -19,6 +19,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import androidx.constraintlayout.compose.ConstraintLayout
@@ -318,14 +319,21 @@ private fun CastCard(itemId: Int?, service: DetailService) {
backgroundColor = MaterialTheme.colorScheme.primary,
elevation = 8.dp
) {
LazyRow(modifier = Modifier
.fillMaxSize()
.padding(12.dp)
) {
items(castAndCrew.value?.cast?.size ?: 0) { i ->
val castMember = castAndCrew.value!!.cast[i]
Column(modifier = Modifier.fillMaxSize()) {
Text(
text = stringResource(R.string.cast_label),
style = MaterialTheme.typography.titleLarge,
modifier = Modifier.padding(start = 12.dp, top = 12.dp)
)
LazyRow(modifier = Modifier
.fillMaxWidth()
.padding(12.dp)
) {
items(castAndCrew.value?.cast?.size ?: 0) { i ->
val castMember = castAndCrew.value!!.cast[i]
CastCrewCard(person = castMember)
CastCrewCard(person = castMember)
}
}
}
}

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">TVTime</string>
<string name="nav_movies_title">Films</string>
<string name="nav_tv_title">Télé</string>
<string name="nav_favourites_title">Favoris</string>
<string name="nav_settings_title">Réglages</string>
<string name="cast_label">Acteurs</string>
</resources>

View File

@@ -4,4 +4,5 @@
<string name="nav_tv_title">TV</string>
<string name="nav_favourites_title">Favourites</string>
<string name="nav_settings_title">Settings</string>
<string name="cast_label">Cast</string>
</resources>