From b87e242de2dd984e631f24adb3e36ce8b3b60830 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 8 Feb 2021 13:13:02 +0530 Subject: [PATCH 1/4] build: remove gradle-versions-plugin I use a Gradle init script for this now Signed-off-by: Harsh Shandilya --- build.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 5688b086..d3d9db38 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,3 @@ plugins { - id("com.github.ben-manes.versions") version "0.36.0" `lobsters-plugin` } From cdfa20b9a70cb3c6ed93b727f33f80c7147bd7c8 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 8 Feb 2021 13:15:12 +0530 Subject: [PATCH 2/4] build: upgrade to Compose alpha11 Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/lobsters/ui/main/MainActivity.kt | 7 ++++++- .../dev/msfjarvis/lobsters/ui/posts/EmptyList.kt | 9 +++++++-- .../dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt | 13 +++++++++++-- .../dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt | 1 + .../dev/msfjarvis/lobsters/util/DeferredIcon.kt | 8 +++++++- app/src/main/res/values/strings.xml | 2 ++ buildSrc/src/main/java/Dependencies.kt | 2 +- 7 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/MainActivity.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/MainActivity.kt index 31c8f9c3..414f8dde 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/main/MainActivity.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/main/MainActivity.kt @@ -106,7 +106,12 @@ fun LobstersBottomNav( navBackStackEntry?.arguments?.getString(KEY_ROUTE) ?: Destination.startDestination.route Destination.values().forEach { screen -> BottomNavigationItem( - icon = { IconResource(resourceId = screen.badgeRes) }, + icon = { + IconResource( + resourceId = screen.badgeRes, + contentDescription = stringResource(screen.labelRes), + ) + }, label = { Text(stringResource(id = screen.labelRes)) }, selected = currentRoute == screen.route, alwaysShowLabels = false, diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt index 71c2352b..d1e20809 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt @@ -25,11 +25,16 @@ fun EmptyList(saved: Boolean) { IconResource( R.drawable.ic_favorite_border_24px, tint = Color(0xFFD97373), - modifier = Modifier.padding(16.dp) + modifier = Modifier.padding(16.dp), + contentDescription = stringResource(R.string.add_to_saved_posts), ) Text(stringResource(R.string.no_saved_posts)) } else { - IconResource(R.drawable.ic_sync_problem_24px, modifier = Modifier.padding(16.dp)) + IconResource( + R.drawable.ic_sync_problem_24px, + modifier = Modifier.padding(16.dp), + contentDescription = stringResource(R.string.remove_from_saved_posts), + ) Text(stringResource(R.string.loading)) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index 2f1736c7..2f434064 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -10,6 +10,7 @@ import androidx.compose.foundation.layout.fillMaxWidth 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.material.IconToggleButton import androidx.compose.material.Surface @@ -132,9 +133,17 @@ fun LobstersItem( ) { Crossfade(current = isSaved) { if (it) { - IconResource(resourceId = R.drawable.ic_favorite_24px, tint = Color(0xFFD97373)) + IconResource( + resourceId = R.drawable.ic_favorite_24px, + tint = Color(0xFFD97373), + contentDescription = stringResource(R.string.remove_from_saved_posts), + ) } else { - IconResource(resourceId = R.drawable.ic_favorite_border_24px, tint = Color(0xFFD97373)) + IconResource( + resourceId = R.drawable.ic_favorite_border_24px, + tint = Color(0xFFD97373), + contentDescription = stringResource(R.string.add_to_saved_posts), + ) } } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt index deb275a5..7ad26843 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt @@ -1,6 +1,7 @@ package dev.msfjarvis.lobsters.ui.posts import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier diff --git a/app/src/main/java/dev/msfjarvis/lobsters/util/DeferredIcon.kt b/app/src/main/java/dev/msfjarvis/lobsters/util/DeferredIcon.kt index 3df5bf6d..887c18f7 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/util/DeferredIcon.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/util/DeferredIcon.kt @@ -27,12 +27,18 @@ import androidx.compose.ui.res.loadVectorResource @Composable fun IconResource( @DrawableRes resourceId: Int, + contentDescription: String, modifier: Modifier = Modifier, tint: Color = AmbientContentColor.current ) { val deferredResource = loadVectorResource(resourceId) deferredResource.onLoadRun { vector -> - Icon(imageVector = vector, modifier = modifier, tint = tint) + Icon( + imageVector = vector, + modifier = modifier, + tint = tint, + contentDescription = contentDescription, + ) } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1d52480b..ada50823 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,4 +5,6 @@ Hottest Saved submitted by %1$s + Add to saved posts + Remove from saved posts diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index 2548c564..b0f04052 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -15,7 +15,7 @@ object Plugins { } object Dependencies { - const val COMPOSE_VERSION = "1.0.0-alpha10" + const val COMPOSE_VERSION = "1.0.0-alpha11" object Kotlin { From 020976e257f5de127ad21493c451839c3061950c Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 8 Feb 2021 13:29:58 +0530 Subject: [PATCH 3/4] build: update remaining dependencies Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt | 8 ++++---- .../lobsters/data/remote/LobstersPagingSource.kt | 5 +++++ .../dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt | 4 ++++ app/src/main/res/values/strings.xml | 1 + buildSrc/src/main/java/Dependencies.kt | 10 +++++----- 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt index 77c9764b..c6fe7042 100644 --- a/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt +++ b/api/src/test/java/dev/msfjarvis/lobsters/data/api/LobstersApiTest.kt @@ -4,10 +4,10 @@ import dev.msfjarvis.lobsters.injection.ApiModule import dev.msfjarvis.lobsters.injection.MoshiModule import dev.msfjarvis.lobsters.util.TestUtils import kotlinx.coroutines.runBlocking -import okhttp3.mockwebserver.Dispatcher -import okhttp3.mockwebserver.MockResponse -import okhttp3.mockwebserver.MockWebServer -import okhttp3.mockwebserver.RecordedRequest +import mockwebserver3.Dispatcher +import mockwebserver3.MockResponse +import mockwebserver3.MockWebServer +import mockwebserver3.RecordedRequest import org.junit.AfterClass import org.junit.Assert.assertEquals import org.junit.Assert.assertTrue diff --git a/app/src/main/java/dev/msfjarvis/lobsters/data/remote/LobstersPagingSource.kt b/app/src/main/java/dev/msfjarvis/lobsters/data/remote/LobstersPagingSource.kt index 619e39ed..f50b5c2e 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/data/remote/LobstersPagingSource.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/data/remote/LobstersPagingSource.kt @@ -1,6 +1,7 @@ package dev.msfjarvis.lobsters.data.remote import androidx.paging.PagingSource +import androidx.paging.PagingState import dev.msfjarvis.lobsters.data.local.LobstersPost import dev.msfjarvis.lobsters.data.repo.LobstersRepository import javax.inject.Inject @@ -26,4 +27,8 @@ class LobstersPagingSource @Inject constructor( LoadResult.Error(e) } } + + override fun getRefreshKey(state: PagingState): Int { + return state.pages.size + 1 + } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index 2f434064..04aade2e 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -100,6 +100,10 @@ fun LobstersItem( ) CoilImage( data = "${LobstersApi.BASE_URL}/${post.submitter_user.avatarUrl}", + contentDescription = stringResource( + R.string.avatar_content_description, + post.submitter_user.username + ), fadeIn = true, requestBuilder = { transformations(CircleCropTransformation()) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ada50823..94b2c294 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -5,6 +5,7 @@ Hottest Saved submitted by %1$s + %1$s\'s avatar Add to saved posts Remove from saved posts diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index b0f04052..fc93d519 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -39,8 +39,8 @@ object Dependencies { const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION" const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION" const val material = "androidx.compose.material:material:$COMPOSE_VERSION" - const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha05" - const val paging = "androidx.paging:paging-compose:1.0.0-alpha05" + const val navigation = "androidx.navigation:navigation-compose:1.0.0-alpha06" + const val paging = "androidx.paging:paging-compose:1.0.0-alpha06" const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION" const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION" const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION" @@ -62,13 +62,13 @@ object Dependencies { object ThirdParty { - const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.4.2" + const val accompanist = "dev.chrisbanes.accompanist:accompanist-coil:0.5.0" object Moshi { private const val version = "1.11.0" const val lib = "com.squareup.moshi:moshi:$version" - const val moshiMetadataReflect = "dev.zacsweers.moshix:moshi-metadata-reflect:0.7.1" + const val moshiMetadataReflect = "dev.zacsweers.moshix:moshi-metadata-reflect:0.8.0" } object Retrofit { @@ -90,7 +90,7 @@ object Dependencies { const val daggerHilt = "com.google.dagger:hilt-android-testing:$DAGGER_HILT_VERSION" const val junit = "junit:junit:4.13.1" - const val mockWebServer = "com.squareup.okhttp3:mockwebserver:4.6.0" + const val mockWebServer = "com.squareup.okhttp3:mockwebserver3-junit4:5.0.0-alpha.2" const val uiTest = "androidx.compose.ui:ui-test:$COMPOSE_VERSION" object AndroidX { From 8f53a39f63b595a28c48ea86b95920d4d0af5c41 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 8 Feb 2021 13:38:50 +0530 Subject: [PATCH 4/4] build: upgrade kotlin Signed-off-by: Harsh Shandilya --- buildSrc/src/main/java/Dependencies.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildSrc/src/main/java/Dependencies.kt b/buildSrc/src/main/java/Dependencies.kt index fc93d519..db039d46 100644 --- a/buildSrc/src/main/java/Dependencies.kt +++ b/buildSrc/src/main/java/Dependencies.kt @@ -9,7 +9,7 @@ object Plugins { const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha05" const val androidGradlePlugin_lintModel = "com.android.tools.lint:lint-model:30.0.0-alpha05" const val daggerGradlePlugin = "com.google.dagger:hilt-android-gradle-plugin:${DAGGER_HILT_VERSION}" - const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21" + const val kotlinGradlePlugin = "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21-2" const val jsemver = "com.github.zafarkhaja:java-semver:0.9.0" const val sqldelightGradlePlugin = "com.squareup.sqldelight:gradle-plugin:1.4.4" }