Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/android_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
build:

runs-on: ubuntu-latest
timeout-minutes: 15
timeout-minutes: 30

steps:

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ local.properties
play_config.*
keystore.*
Gemfile.lock
build
12 changes: 12 additions & 0 deletions core/image/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
plugins {
alias(libs.plugins.convention.library)
alias(libs.plugins.convention.library.compose)
}

dependencies {
implementation(project(":core:core"))

implementation(libs.bundles.ktor)
implementation(libs.bundles.okhttp)
implementation(libs.coil.ktor)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package st.slex.scplashscreen.core.image

import android.content.Context
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.platform.LocalContext
import coil3.request.CachePolicy
import coil3.request.ImageRequest

object AppImageRequest {

@Composable
fun createImageRequestBuilder(url: String): ImageRequest.Builder {
val context = LocalContext.current
return remember {
createImageRequestBuilder(context, url)
.placeholderMemoryCacheKey(url)
}
}

fun createImageRequestBuilder(
context: Context,
url: String
): ImageRequest.Builder = ImageRequest
.Builder(context)
.data(url)
.networkCachePolicy(CachePolicy.ENABLED)
.diskCachePolicy(CachePolicy.ENABLED)
.memoryCachePolicy(CachePolicy.ENABLED)
.diskCacheKey(url)
.memoryCacheKey(url)
}
1 change: 1 addition & 0 deletions core/ui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ dependencies {
implementation(project(":core:core"))
implementation(project(":core:navigation"))
implementation(project(":core:network"))
implementation(project(":core:image"))
api(libs.androidx.compose.navigation)

implementation(libs.androidx.paging.runtime)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,9 @@ package st.slex.csplashscreen.core.ui.components
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import coil.compose.AsyncImage
import coil.request.CachePolicy
import coil.request.ImageRequest
import coil3.compose.AsyncImage
import coil3.request.crossfade
import st.slex.scplashscreen.core.image.AppImageRequest.createImageRequestBuilder

@Composable
fun ImageComponent(
Expand All @@ -16,14 +15,7 @@ fun ImageComponent(
) {
AsyncImage(
modifier = modifier,
model = ImageRequest.Builder(LocalContext.current)
.data(url)
.placeholderMemoryCacheKey(url)
.memoryCacheKey(url)
.diskCacheKey(url)
.networkCachePolicy(CachePolicy.ENABLED)
.diskCachePolicy(CachePolicy.ENABLED)
.memoryCachePolicy(CachePolicy.ENABLED)
model = createImageRequestBuilder(url)
.crossfade(true)
.build(),
contentDescription = null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ fun <T : Any> PhotosBaseLazyList(
vertical = Dimen.large
),
) {

items(
count = items.itemCount,
key = items.itemKey(key),
Expand Down
6 changes: 3 additions & 3 deletions fastlane/report.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,17 @@



<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000280664">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000275576">

</testcase>


<testcase classname="fastlane.lanes" name="1: clean bundle" time="363.120756488">
<testcase classname="fastlane.lanes" name="1: clean bundle" time="677.542868698">

</testcase>


<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="29.558597256">
<testcase classname="fastlane.lanes" name="2: upload_to_play_store" time="35.738331201">

</testcase>

Expand Down
1 change: 1 addition & 0 deletions feature/photo-detail/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ dependencies {
implementation(project(":core:network"))
implementation(project(":core:photos"))
implementation(project(":core:favourite"))
implementation(project(":core:image"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,23 @@ package st.slex.csplashscreen.feature.photo_detail.ui.utils

import android.app.WallpaperManager
import android.content.Context
import androidx.core.graphics.drawable.toBitmap
import coil.ImageLoader
import coil.request.CachePolicy
import coil.request.ImageRequest
import coil3.SingletonImageLoader
import coil3.toBitmap
import st.slex.scplashscreen.core.image.AppImageRequest

class WallpaperSetUseCaseImpl(
private val context: Context,
) : WallpaperSetUseCase {

override operator fun invoke(url: String) {
val imageLoader = ImageLoader(context)
val imageRequest = ImageRequest.Builder(context)
.data(url)
.diskCacheKey(url)
.memoryCacheKey(url)
.placeholderMemoryCacheKey(url)
.diskCachePolicy(CachePolicy.READ_ONLY)
.diskCachePolicy(CachePolicy.READ_ONLY)
.diskCachePolicy(CachePolicy.READ_ONLY)
val request = AppImageRequest
.createImageRequestBuilder(context, url)
.listener { _, result ->
WallpaperManager
.getInstance(context)
.setBitmap(result.drawable.toBitmap())
.setBitmap(result.image.toBitmap())
}
.build()
imageLoader.enqueue(imageRequest)
SingletonImageLoader.get(context).enqueue(request)
}
}
25 changes: 13 additions & 12 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[versions]
androidDesugarJdkLibs = "2.1.4"
kotlin = "2.0.20"
androidGradlePlugin = "8.8.0"
androidTools = "31.8.0"
kotlin = "2.1.0"
androidGradlePlugin = "8.8.1"
androidTools = "31.8.1"

minSdk = "28"
targetSdk = "35"
compileSdk = "35"
versionName = "1.75"
versionCode = "22"
versionName = "1.76"
versionCode = "23"

ktx = "1.15.0"
material = "1.12.0"
Expand All @@ -17,11 +17,11 @@ immutableCollection = "0.3.5"
lifecycle = "2.8.7"
coroutines = "1.9.0"

composeBom = "2025.01.01"
composeBom = "2025.02.00"
composeGradle = "1.7.0"
composeNavigation = "2.8.6"
composeNavigation = "2.8.7"
accompanist = "0.30.0"
coilCompose = "2.5.0"
coil = "3.0.2"
composeActivity = "1.10.0"

koin = "4.0.0"
Expand All @@ -37,11 +37,11 @@ robolectric = "4.9"
androidxTest = "1.6.1"

room = "2.6.1"
ksp = "2.0.20-1.0.24"
ksp = "2.1.0-1.0.28"
mockito = "2.19.0"
vkompose = "0.6.1-k2"
vkompose = "0.7"
serialization = "1.7.3"
paging = "3.3.5"
paging = "3.3.6"
slf4j = "1.7.9"
coroutineTest = "1.9.0"
[libraries]
Expand Down Expand Up @@ -79,7 +79,8 @@ androidx-compose-tooling = { group = "androidx.compose.ui", name = "ui-tooling"
androidx-compose-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" }
androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" }

coil-compose = { group = "io.coil-kt", name = "coil-compose", version.ref = "coilCompose" }
coil-compose = { group = "io.coil-kt.coil3", name = "coil-compose", version.ref = "coil" }
coil-ktor = { module = "io.coil-kt.coil3:coil-network-ktor3", version.ref = "coil" }

androidx-compose-paging = { group = "androidx.paging", name = "paging-compose", version.ref = "paging" }
androidx-paging-runtime = { group = "androidx.paging", name = "paging-runtime-ktx", version.ref = "paging" }
Expand Down
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ include(":core:navigation")
include(":core:network")
include(":core:photos")
include(":core:collection")
include(":core:image")

include(":feature:home")
include(":feature:collection")
Expand Down