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.injection.MoshiModule
|
||||||
import dev.msfjarvis.lobsters.util.TestUtils
|
import dev.msfjarvis.lobsters.util.TestUtils
|
||||||
import kotlinx.coroutines.runBlocking
|
import kotlinx.coroutines.runBlocking
|
||||||
import okhttp3.mockwebserver.Dispatcher
|
import mockwebserver3.Dispatcher
|
||||||
import okhttp3.mockwebserver.MockResponse
|
import mockwebserver3.MockResponse
|
||||||
import okhttp3.mockwebserver.MockWebServer
|
import mockwebserver3.MockWebServer
|
||||||
import okhttp3.mockwebserver.RecordedRequest
|
import mockwebserver3.RecordedRequest
|
||||||
import org.junit.AfterClass
|
import org.junit.AfterClass
|
||||||
import org.junit.Assert.assertEquals
|
import org.junit.Assert.assertEquals
|
||||||
import org.junit.Assert.assertTrue
|
import org.junit.Assert.assertTrue
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package dev.msfjarvis.lobsters.data.remote
|
package dev.msfjarvis.lobsters.data.remote
|
||||||
|
|
||||||
import androidx.paging.PagingSource
|
import androidx.paging.PagingSource
|
||||||
|
import androidx.paging.PagingState
|
||||||
import dev.msfjarvis.lobsters.data.local.LobstersPost
|
import dev.msfjarvis.lobsters.data.local.LobstersPost
|
||||||
import dev.msfjarvis.lobsters.data.repo.LobstersRepository
|
import dev.msfjarvis.lobsters.data.repo.LobstersRepository
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
@ -26,4 +27,8 @@ class LobstersPagingSource @Inject constructor(
|
||||||
LoadResult.Error(e)
|
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
|
navBackStackEntry?.arguments?.getString(KEY_ROUTE) ?: Destination.startDestination.route
|
||||||
Destination.values().forEach { screen ->
|
Destination.values().forEach { screen ->
|
||||||
BottomNavigationItem(
|
BottomNavigationItem(
|
||||||
icon = { IconResource(resourceId = screen.badgeRes) },
|
icon = {
|
||||||
|
IconResource(
|
||||||
|
resourceId = screen.badgeRes,
|
||||||
|
contentDescription = stringResource(screen.labelRes),
|
||||||
|
)
|
||||||
|
},
|
||||||
label = { Text(stringResource(id = screen.labelRes)) },
|
label = { Text(stringResource(id = screen.labelRes)) },
|
||||||
selected = currentRoute == screen.route,
|
selected = currentRoute == screen.route,
|
||||||
alwaysShowLabels = false,
|
alwaysShowLabels = false,
|
||||||
|
|
|
@ -25,11 +25,16 @@ fun EmptyList(saved: Boolean) {
|
||||||
IconResource(
|
IconResource(
|
||||||
R.drawable.ic_favorite_border_24px,
|
R.drawable.ic_favorite_border_24px,
|
||||||
tint = Color(0xFFD97373),
|
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))
|
Text(stringResource(R.string.no_saved_posts))
|
||||||
} else {
|
} 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))
|
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.padding
|
||||||
import androidx.compose.foundation.layout.width
|
import androidx.compose.foundation.layout.width
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||||
import androidx.compose.material.IconToggleButton
|
import androidx.compose.material.IconToggleButton
|
||||||
import androidx.compose.material.Surface
|
import androidx.compose.material.Surface
|
||||||
|
@ -99,6 +100,10 @@ fun LobstersItem(
|
||||||
)
|
)
|
||||||
CoilImage(
|
CoilImage(
|
||||||
data = "${LobstersApi.BASE_URL}/${post.submitter_user.avatarUrl}",
|
data = "${LobstersApi.BASE_URL}/${post.submitter_user.avatarUrl}",
|
||||||
|
contentDescription = stringResource(
|
||||||
|
R.string.avatar_content_description,
|
||||||
|
post.submitter_user.username
|
||||||
|
),
|
||||||
fadeIn = true,
|
fadeIn = true,
|
||||||
requestBuilder = {
|
requestBuilder = {
|
||||||
transformations(CircleCropTransformation())
|
transformations(CircleCropTransformation())
|
||||||
|
@ -132,9 +137,17 @@ fun LobstersItem(
|
||||||
) {
|
) {
|
||||||
Crossfade(current = isSaved) {
|
Crossfade(current = isSaved) {
|
||||||
if (it) {
|
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 {
|
} 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
|
package dev.msfjarvis.lobsters.ui.posts
|
||||||
|
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
|
import androidx.compose.foundation.lazy.items
|
||||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
|
|
@ -27,12 +27,18 @@ import androidx.compose.ui.res.loadVectorResource
|
||||||
@Composable
|
@Composable
|
||||||
fun IconResource(
|
fun IconResource(
|
||||||
@DrawableRes resourceId: Int,
|
@DrawableRes resourceId: Int,
|
||||||
|
contentDescription: String,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
tint: Color = AmbientContentColor.current
|
tint: Color = AmbientContentColor.current
|
||||||
) {
|
) {
|
||||||
val deferredResource = loadVectorResource(resourceId)
|
val deferredResource = loadVectorResource(resourceId)
|
||||||
deferredResource.onLoadRun { vector ->
|
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="hottest_posts">Hottest</string>
|
||||||
<string name="saved_posts">Saved</string>
|
<string name="saved_posts">Saved</string>
|
||||||
<string name="submitted_by">submitted by %1$s</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>
|
</resources>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
plugins {
|
plugins {
|
||||||
id("com.github.ben-manes.versions") version "0.36.0"
|
|
||||||
`lobsters-plugin`
|
`lobsters-plugin`
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,13 +9,13 @@ object Plugins {
|
||||||
const val androidGradlePlugin = "com.android.tools.build:gradle:7.0.0-alpha05"
|
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 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 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 jsemver = "com.github.zafarkhaja:java-semver:0.9.0"
|
||||||
const val sqldelightGradlePlugin = "com.squareup.sqldelight:gradle-plugin:1.4.4"
|
const val sqldelightGradlePlugin = "com.squareup.sqldelight:gradle-plugin:1.4.4"
|
||||||
}
|
}
|
||||||
|
|
||||||
object Dependencies {
|
object Dependencies {
|
||||||
const val COMPOSE_VERSION = "1.0.0-alpha10"
|
const val COMPOSE_VERSION = "1.0.0-alpha11"
|
||||||
|
|
||||||
object Kotlin {
|
object Kotlin {
|
||||||
|
|
||||||
|
@ -39,8 +39,8 @@ object Dependencies {
|
||||||
const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION"
|
const val foundation = "androidx.compose.foundation:foundation:$COMPOSE_VERSION"
|
||||||
const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION"
|
const val foundationLayout = "androidx.compose.foundation:foundation-layout:$COMPOSE_VERSION"
|
||||||
const val material = "androidx.compose.material:material:$COMPOSE_VERSION"
|
const val material = "androidx.compose.material:material:$COMPOSE_VERSION"
|
||||||
const val navigation = "androidx.navigation:navigation-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-alpha05"
|
const val paging = "androidx.paging:paging-compose:1.0.0-alpha06"
|
||||||
const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION"
|
const val runtime = "androidx.compose.runtime:runtime:$COMPOSE_VERSION"
|
||||||
const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION"
|
const val ui = "androidx.compose.ui:ui:$COMPOSE_VERSION"
|
||||||
const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION"
|
const val uiUnit = "androidx.compose.ui:ui-unit:$COMPOSE_VERSION"
|
||||||
|
@ -62,13 +62,13 @@ object Dependencies {
|
||||||
|
|
||||||
object ThirdParty {
|
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 {
|
object Moshi {
|
||||||
|
|
||||||
private const val version = "1.11.0"
|
private const val version = "1.11.0"
|
||||||
const val lib = "com.squareup.moshi:moshi:$version"
|
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 {
|
object Retrofit {
|
||||||
|
@ -90,7 +90,7 @@ object Dependencies {
|
||||||
|
|
||||||
const val daggerHilt = "com.google.dagger:hilt-android-testing:$DAGGER_HILT_VERSION"
|
const val daggerHilt = "com.google.dagger:hilt-android-testing:$DAGGER_HILT_VERSION"
|
||||||
const val junit = "junit:junit:4.13.1"
|
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"
|
const val uiTest = "androidx.compose.ui:ui-test:$COMPOSE_VERSION"
|
||||||
|
|
||||||
object AndroidX {
|
object AndroidX {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue