Skip to content

Commit 7663ae3

Browse files
committed
fix previews on android
closes #37
1 parent 24c91f5 commit 7663ae3

File tree

7 files changed

+830
-115
lines changed

7 files changed

+830
-115
lines changed

gradle/libs.versions.toml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,23 @@ com-android-application = { id = "com.android.application", version.ref = "agp"
1414
kotlin = "2.1.0"
1515
agp = "8.7.3"
1616

17-
okio = "3.9.1"
17+
okio = "3.10.2"
1818
startup-runtime = "1.2.0"
1919
vanniktech-publish = "0.30.0"
2020
compose = "1.7.3"
2121
coroutines = "1.10.1"
2222
ktor = "3.0.3"
23-
cache4k = "0.13.0"
23+
cache4k = "0.14.0"
2424
xmlutil = "0.90.3"
25-
activity-compose ="1.9.3"
25+
activity-compose = "1.10.0"
2626
appcompat = "1.7.0"
2727
material = "1.12.0"
2828
androidsvg = "1.4"
2929
batik = "1.18"
3030
slf4j = "2.0.16"
3131
annotation = "1.9.1"
3232
core-ctx = "1.15.0"
33+
ui-tooling = "1.7.6"
3334

3435
[libraries]
3536

@@ -61,3 +62,4 @@ com-caverok-androidsvg = { module = "com.caverock:androidsvg-aar", version.ref =
6162
apache-batik-transcoder = { module = "org.apache.xmlgraphics:batik-transcoder", version.ref = "batik" }
6263
apache-batik-codec = { module = "org.apache.xmlgraphics:batik-codec", version.ref = "batik" }
6364
slf4j = { module = "org.slf4j:slf4j-nop", version.ref = "slf4j" }
65+
androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "ui-tooling" }

kamel-core/src/androidMain/kotlin/io/kamel/core/ApplicationContextInitializer.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import android.content.Context
44
import androidx.startup.Initializer
55

66

7-
public lateinit var applicationContext: Context
7+
public var applicationContext: Context? = null
88

99
internal class ApplicationContextInitializer : Initializer<Context> {
1010
override fun create(context: Context): Context = context.also {

kamel-core/src/androidMain/kotlin/io/kamel/core/cache/httpCache.android.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,22 @@ package io.kamel.core.cache
22

33
import io.kamel.core.applicationContext
44
import io.kamel.core.cache.disk.DiskCacheStorage
5-
import io.ktor.client.plugins.cache.storage.CacheStorage
5+
import io.ktor.client.plugins.cache.storage.*
66
import okio.FileSystem
77
import okio.Path.Companion.toOkioPath
88

9-
private val cacheDir = applicationContext.cacheDir.toOkioPath()
9+
private val cacheDir = applicationContext?.cacheDir?.toOkioPath()
1010

11-
internal actual fun httpCacheStorage(maxSize: Long): CacheStorage = DiskCacheStorage(
12-
fileSystem = FileSystem.SYSTEM,
13-
directory = cacheDir,
14-
maxSize = maxSize
15-
)
11+
internal actual fun httpCacheStorage(maxSize: Long): CacheStorage {
12+
return if (cacheDir == null) {
13+
println(
14+
"Warning: applicationContext is null, DiskCacheStorage is disabled")
15+
CacheStorage.Disabled
16+
} else {
17+
DiskCacheStorage(
18+
fileSystem = FileSystem.SYSTEM,
19+
directory = cacheDir,
20+
maxSize = maxSize
21+
)
22+
}
23+
}

kamel-image-default/src/androidMain/kotlin/io/kamel/image/config/KamelConfig.android.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ import io.kamel.core.applicationContext
44
import io.kamel.core.config.KamelConfigBuilder
55

66
internal actual fun KamelConfigBuilder.platformSpecificConfig() {
7-
resourcesIdMapper(applicationContext)
8-
resourcesFetcher(applicationContext)
7+
if (applicationContext == null) {
8+
println("Warning: Android application context is not provided. Skipping adding Kamel Components requiring Android application context.")
9+
}
10+
11+
applicationContext?.applicationContext?.let { context ->
12+
resourcesIdMapper(context)
13+
resourcesFetcher(context)
14+
}
915
}
16+

kamel-samples/build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@ kotlin {
129129
}
130130
}
131131

132+
dependencies {
133+
// https://youtrack.jetbrains.com/issue/KTIJ-32720/Support-common-org.jetbrains.compose.ui.tooling.preview.Preview-in-IDEA-and-Android-Studio#focus=Comments-27-11400795.0-0
134+
debugImplementation(libs.androidx.ui.tooling)
135+
}
136+
132137
compose {
133138
desktop {
134139
application {

kamel-samples/src/commonMain/kotlin/io/kamel/samples/launcher.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@ import androidx.compose.material.Tab
77
import androidx.compose.material.Text
88
import androidx.compose.runtime.*
99
import androidx.compose.ui.Modifier
10+
import io.kamel.core.config.Core
11+
import io.kamel.core.config.KamelConfig
12+
import io.kamel.core.config.takeFrom
1013
import io.kamel.image.KamelImage
1114
import io.kamel.image.asyncPainterResource
15+
import io.kamel.image.config.*
1216
import org.jetbrains.compose.ui.tooling.preview.Preview
1317

1418
@Composable

0 commit comments

Comments
 (0)