From 8e8f9222de58584d6938f9de220566e252722d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= <sebastian@mobanisto.de> Date: Wed, 12 Feb 2025 10:23:47 +0100 Subject: [PATCH] Upgrade toolchain * Use Compose 1.7.3 * Set jvmTarget to 17 for the kotlin compile task (Gradle displayed a warning about it being at 11) * Replace ResourceLoader from Compose used for loading images with a custom resources loading mechanism * Due to the way we load resources from the classpath, we need to prepend all resources used for testing with a slash ('/') --- briar-desktop/build.gradle.kts | 4 ++-- .../desktop/attachment/media/AvatarManager.kt | 2 +- .../desktop/conversation/ConversationInput.kt | 10 ++++------ .../briar/desktop/utils/ImagePicker.kt | 2 +- .../briar/desktop/utils/ImageUtils.kt | 7 ++++++- .../testdata/DeterministicTestDataCreatorImpl.kt | 6 ++---- .../testdata/conversation/ConversationsData.kt | 16 ++++++++-------- build.gradle.kts | 1 - 8 files changed, 24 insertions(+), 24 deletions(-) diff --git a/briar-desktop/build.gradle.kts b/briar-desktop/build.gradle.kts index cebb9dcfab..58b6e35f63 100644 --- a/briar-desktop/build.gradle.kts +++ b/briar-desktop/build.gradle.kts @@ -24,7 +24,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { kotlin("jvm") version "1.9.10" kotlin("kapt") version "1.9.10" - id("org.jetbrains.compose") version "1.6.11" + id("org.jetbrains.compose") version "1.7.3" id("de.mobanisto.pinpit") version "0.9.0" id("java") id("idea") @@ -166,7 +166,7 @@ tasks.test { } tasks.withType<KotlinCompile> { - kotlinOptions.jvmTarget = "11" + kotlinOptions.jvmTarget = "17" kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn" } diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/AvatarManager.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/AvatarManager.kt index 9593ae47ae..ecf40a9d46 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/AvatarManager.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/attachment/media/AvatarManager.kt @@ -23,7 +23,6 @@ import androidx.compose.runtime.State import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.produceState import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.res.loadImageBitmap import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.swing.Swing import kotlinx.coroutines.withContext @@ -34,6 +33,7 @@ import org.briarproject.briar.api.identity.AuthorInfo import org.briarproject.briar.desktop.threading.BriarExecutors import org.briarproject.briar.desktop.threading.UiExecutor import org.briarproject.briar.desktop.ui.LocalAvatarManager +import org.briarproject.briar.desktop.utils.ImageUtils.loadImageBitmap import javax.inject.Inject class AvatarManager @Inject constructor( diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt index 19f8bff69f..887b20a1e0 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/conversation/ConversationInput.kt @@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.AlertDialog -import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.IconButton import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -47,25 +46,24 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.input.pointer.PointerIcon import androidx.compose.ui.input.pointer.pointerHoverIcon -import androidx.compose.ui.res.ResourceLoader -import androidx.compose.ui.res.loadImageBitmap import androidx.compose.ui.unit.dp import org.briarproject.briar.desktop.theme.sendButton import org.briarproject.briar.desktop.ui.ColoredIconButton import org.briarproject.briar.desktop.ui.HorizontalDivider import org.briarproject.briar.desktop.ui.LocalWindowScope import org.briarproject.briar.desktop.utils.ImagePicker.pickImageUsingDialog +import org.briarproject.briar.desktop.utils.ImageUtils.loadImageBitmap import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n import org.briarproject.briar.desktop.utils.PreviewUtils.preview +import org.briarproject.briar.desktop.utils.ResourceUtils.getResourceAsStream @Suppress("HardCodedStringLiteral") -@OptIn(ExperimentalMaterialApi::class, ExperimentalComposeUiApi::class) fun main() = preview { - val bitmap = ResourceLoader.Default.load("images/logo_circle.png").use { + val bitmap = getResourceAsStream("/images/logo_circle.png")?.use { loadImageBitmap(it) } val (text, updateText) = remember { mutableStateOf("Lorem ipsum.") } - val (image, updateImage) = remember { mutableStateOf<ImageBitmap?>(bitmap) } + val (image, updateImage) = remember { mutableStateOf(bitmap) } var dialogVisible by remember { mutableStateOf(false) } var sentText by remember { mutableStateOf("") } ConversationInput(text, updateText, image, updateImage) { diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt index 33f2d820a9..1e0891510d 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImagePicker.kt @@ -20,8 +20,8 @@ package org.briarproject.briar.desktop.utils import androidx.compose.ui.awt.ComposeWindow import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.res.loadImageBitmap import mu.KotlinLogging +import org.briarproject.briar.desktop.utils.ImageUtils.loadImageBitmap import org.briarproject.briar.desktop.utils.KLoggerUtils.d import org.briarproject.briar.desktop.utils.KLoggerUtils.w import java.io.FileInputStream diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt index 9bdbdd9b7b..ed18ebd2f4 100644 --- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt +++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/utils/ImageUtils.kt @@ -19,10 +19,11 @@ package org.briarproject.briar.desktop.utils import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.res.loadImageBitmap +import androidx.compose.ui.graphics.toComposeImageBitmap import org.briarproject.bramble.api.db.Transaction import org.briarproject.briar.api.attachment.AttachmentHeader import org.briarproject.briar.api.attachment.AttachmentReader +import java.io.InputStream object ImageUtils { @@ -36,4 +37,8 @@ object ImageUtils { return loadImageBitmap(it) } } + + fun loadImageBitmap(it: InputStream): ImageBitmap { + return org.jetbrains.skia.Image.makeFromEncoded(it.readAllBytes()).toComposeImageBitmap() + } } diff --git a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt index 4fdd116ad0..bc46970b16 100644 --- a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt +++ b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/DeterministicTestDataCreatorImpl.kt @@ -18,8 +18,6 @@ package org.briarproject.briar.desktop.testdata -import androidx.compose.ui.ExperimentalComposeUiApi -import androidx.compose.ui.res.ResourceLoader import mu.KotlinLogging import org.briarproject.bramble.api.FormatException import org.briarproject.bramble.api.client.ClientHelper @@ -71,6 +69,7 @@ import org.briarproject.briar.desktop.testdata.forum.PostAuthor import org.briarproject.briar.desktop.testdata.forum.forums import org.briarproject.briar.desktop.utils.KLoggerUtils.i import org.briarproject.briar.desktop.utils.KLoggerUtils.w +import org.briarproject.briar.desktop.utils.ResourceUtils.getResourceAsStream import java.io.IOException import java.io.InputStream import java.time.LocalDateTime @@ -406,9 +405,8 @@ class DeterministicTestDataCreatorImpl @Inject internal constructor( } } - @OptIn(ExperimentalComposeUiApi::class) private fun image(imageResource: String): InputStream { - val input = ResourceLoader.Default.load(imageResource) + val input = getResourceAsStream(imageResource) val image = input.use { ImageIO.read(input) } diff --git a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/conversation/ConversationsData.kt b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/conversation/ConversationsData.kt index 335d3c6133..8d1425dbeb 100644 --- a/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/conversation/ConversationsData.kt +++ b/briar-desktop/src/test/kotlin/org/briarproject/briar/desktop/testdata/conversation/ConversationsData.kt @@ -45,7 +45,7 @@ val conversations = conversations { date = "2022-01-21 10:13:05" } outgoing { - images = listOf("images/do-it-now.png") + images = listOf("/images/do-it-now.png") read = true date = "2022-01-21 10:13:15" } @@ -141,7 +141,7 @@ val conversations = conversations { } incoming { text = "Check out my latest diagrams" - images = listOf("images/voronoi1.png") + images = listOf("/images/voronoi1.png") read = true date = start.plusSeconds(120) } @@ -153,12 +153,12 @@ val conversations = conversations { outgoing { text = "I've also made some" images = listOf( - "images/voronoi2.png", - "images/voronoi3.png", - "images/voronoi4.png", - "images/voronoi2.png", - "images/voronoi3.png", - "images/voronoi4.png", + "/images/voronoi2.png", + "/images/voronoi3.png", + "/images/voronoi4.png", + "/images/voronoi2.png", + "/images/voronoi3.png", + "/images/voronoi4.png", ) read = true date = start.plusSeconds(250) diff --git a/build.gradle.kts b/build.gradle.kts index 3ec523eb52..31d3fa06dd 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,6 +55,5 @@ allprojects { repositories { mavenCentral() google() - jcenter() } } -- GitLab