diff --git a/briar-desktop/build.gradle.kts b/briar-desktop/build.gradle.kts index cebb9dcfabe9e0eac303ea883e1fdd4a5bc91e98..58b6e35f63f033471065231a848d237b50932289 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 9593ae47aedda85331c13e2dbed23838becaeafb..ecf40a9d468609dbcd7407b7c910f5c06bdef9c0 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 19f8bff69f117771ba7ec73db8199839ba589128..887b20a1e0e6e3d47f6a262594f528dc72980a74 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 33f2d820a91194f19c4f05e3faa3005761810dc3..1e0891510d1f89aac4879b57634c0852c8b04b0c 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 9bdbdd9b7bd7cd392ba93d0062910ffcf0c53a9a..ed18ebd2f47129da75a228c4b5cbca1a6c91ca99 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 4fdd116ad0b116d0e09d81e2e4632d212e58697f..bc46970b16e7b04b23828823f3b5806ada5c0448 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 335d3c613326eb44ae88835a94e736cd2471626f..8d1425dbebda4f4286d1247791fe3c6d368b53b5 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 3ec523eb52687b1b0789d3f6a5c2c5bf53679909..31d3fa06ddbcb59bbcf7347c46788d60698ca98e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -55,6 +55,5 @@ allprojects { repositories { mavenCentral() google() - jcenter() } }