mirror of
https://github.com/msfjarvis/compose-lobsters
synced 2025-08-17 23:47:02 +05:30
Merge #103
103: Dependency updates r=msfjarvis a=msfjarvis bors r+ Co-authored-by: Harsh Shandilya <me@msfjarvis.dev>
This commit is contained in:
commit
2b39717cab
10 changed files with 55 additions and 18 deletions
|
@ -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
|
||||
|
|
|
@ -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, LobstersPost>): Int {
|
||||
return state.pages.size + 1
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
@ -99,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())
|
||||
|
@ -132,9 +137,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),
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -5,4 +5,7 @@
|
|||
<string name="hottest_posts">Hottest</string>
|
||||
<string name="saved_posts">Saved</string>
|
||||
<string name="submitted_by">submitted by %1$s</string>
|
||||
<string name="avatar_content_description">%1$s\'s avatar</string>
|
||||
<string name="add_to_saved_posts">Add to saved posts</string>
|
||||
<string name="remove_from_saved_posts">Remove from saved posts</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
plugins {
|
||||
id("com.github.ben-manes.versions") version "0.36.0"
|
||||
`lobsters-plugin`
|
||||
}
|
||||
|
|
|
@ -9,13 +9,13 @@ 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"
|
||||
}
|
||||
|
||||
object Dependencies {
|
||||
const val COMPOSE_VERSION = "1.0.0-alpha10"
|
||||
const val COMPOSE_VERSION = "1.0.0-alpha11"
|
||||
|
||||
object Kotlin {
|
||||
|
||||
|
@ -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 {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue