From 74491612efb31bd9acc4949176735428dea453ed Mon Sep 17 00:00:00 2001 From: another-simple-pixel Date: Tue, 7 Jul 2026 13:08:53 -0700 Subject: [PATCH] Keep the desktop-only wallpaper images out of the Android app MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The six desktop-tuned wallpaper images are used only on desktop but sat in commonMain resources, so they shipped inside the Android APK (~585 KB) for nothing. Move them to the desktop source set and pick the platform image through an expect/actual platformRes() — a resource that lives only in desktopMain isn't visible to common code, so the enum field couldn't stay. Co-Authored-By: Claude Opus 4.8 (1M context) --- apps/multiplatform/common/build.gradle.kts | 1 + .../views/helpers/ChatWallpaper.android.kt | 6 ++++++ .../common/views/helpers/ChatWallpaper.kt | 20 +++++++++++------- .../views/helpers/ChatWallpaper.desktop.kt | 15 +++++++++++++ .../MR/images/wallpaper_cats_desktop@4x.png | Bin .../images/wallpaper_flowers_desktop@4x.png | Bin .../MR/images/wallpaper_hearts_desktop@4x.png | Bin .../MR/images/wallpaper_kids_desktop@4x.png | Bin .../MR/images/wallpaper_school_desktop@4x.png | Bin .../MR/images/wallpaper_travel_desktop@4x.png | Bin 10 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.android.kt create mode 100644 apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.desktop.kt rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_cats_desktop@4x.png (100%) rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_flowers_desktop@4x.png (100%) rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_hearts_desktop@4x.png (100%) rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_kids_desktop@4x.png (100%) rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_school_desktop@4x.png (100%) rename apps/multiplatform/common/src/{commonMain => desktopMain}/resources/MR/images/wallpaper_travel_desktop@4x.png (100%) diff --git a/apps/multiplatform/common/build.gradle.kts b/apps/multiplatform/common/build.gradle.kts index 98845365fc..7165440bca 100644 --- a/apps/multiplatform/common/build.gradle.kts +++ b/apps/multiplatform/common/build.gradle.kts @@ -137,6 +137,7 @@ kotlin { } } val desktopMain by getting { + kotlin.srcDir("build/generated/moko/desktopMain/src") dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.0") implementation("com.github.Dansoftowner:jSystemThemeDetector:3.8") { diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.android.kt new file mode 100644 index 0000000000..62b23a856b --- /dev/null +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.android.kt @@ -0,0 +1,6 @@ +package chat.simplex.common.views.helpers + +import dev.icerock.moko.resources.ImageResource + +// Android uses the phone-sized wallpaper image (downscaled at draw time with FilterQuality.High). +actual fun PresetWallpaper.platformRes(): ImageResource = res diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt index 1f5c6aa9a9..3f49dc9d21 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.kt @@ -23,7 +23,6 @@ import kotlin.math.* enum class PresetWallpaper( val res: ImageResource, - val resDesktop: ImageResource, val filename: String, val scale: Float, val scaleDesktop: Float, @@ -31,7 +30,7 @@ enum class PresetWallpaper( val tint: Map, val colors: Map, ) { - CATS(res = MR.images.wallpaper_cats, resDesktop = MR.images.wallpaper_cats_desktop, filename = "cats", scale = 0.5f, scaleDesktop = 0.8f, + CATS(res = MR.images.wallpaper_cats, filename = "cats", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.9838867f, 0.021334622f, 95.39152f), dark = oklch(0.1800f, 0.0250f, 77f), @@ -69,7 +68,7 @@ enum class PresetWallpaper( ), ) ), - FLOWERS(res = MR.images.wallpaper_flowers, resDesktop = MR.images.wallpaper_flowers_desktop, filename = "flowers", scale = 0.5f, scaleDesktop = 0.8f, + FLOWERS(res = MR.images.wallpaper_flowers, filename = "flowers", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.9838867f, 0.02136218f, 130.21953f), dark = oklch(0.1800f, 0.0250f, 130f), @@ -107,7 +106,7 @@ enum class PresetWallpaper( ), ) ), - HEARTS(res = MR.images.wallpaper_hearts, resDesktop = MR.images.wallpaper_hearts_desktop, filename = "hearts", scale = 0.5f, scaleDesktop = 0.8f, + HEARTS(res = MR.images.wallpaper_hearts, filename = "hearts", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.9780521f, 0.010869741f, 10.569774f), dark = oklch(0.1800f, 0.0250f, 5f), @@ -145,7 +144,7 @@ enum class PresetWallpaper( ), ) ), - KIDS(res = MR.images.wallpaper_kids, resDesktop = MR.images.wallpaper_kids_desktop, filename = "kids", scale = 0.5f, scaleDesktop = 0.8f, + KIDS(res = MR.images.wallpaper_kids, filename = "kids", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.98472977f, 0.01831758f, 200.66322f), dark = oklch(0.18017578f, 0.025585549f, 199.76416f), @@ -183,7 +182,7 @@ enum class PresetWallpaper( ), ) ), - SCHOOL(res = MR.images.wallpaper_school, resDesktop = MR.images.wallpaper_school_desktop, filename = "school", scale = 0.5f, scaleDesktop = 0.8f, + SCHOOL(res = MR.images.wallpaper_school, filename = "school", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.9837532f, 0.010169387f, 225.85442f), dark = oklch(0.17883301f, 0.024886385f, 251.75946f), @@ -221,7 +220,7 @@ enum class PresetWallpaper( ), ) ), - TRAVEL(res = MR.images.wallpaper_travel, resDesktop = MR.images.wallpaper_travel_desktop, filename = "travel", scale = 0.5f, scaleDesktop = 0.8f, + TRAVEL(res = MR.images.wallpaper_travel, filename = "travel", scale = 0.5f, scaleDesktop = 0.8f, wallpaperBackgrounds( light = oklch(0.9835678f, 0.01424849f, 325.37686f), dark = oklch(0.17980957f, 0.025278661f, 316.56534f), @@ -283,6 +282,11 @@ fun wallpaperBackgrounds( DefaultTheme.BLACK to oklch(0f, 0f, 0f) // #ff000000 — pure black for hyper-contrast theme ) +// Which wallpaper image to load, by platform: the phone-sized image on Android, a smaller desktop-tuned +// image on desktop. The desktop images live in the desktop source set (desktopMain/resources) so they +// don't ship in the Android APK. (scaleDesktop stays an enum field — a Float costs nothing in the APK.) +expect fun PresetWallpaper.platformRes(): ImageResource + @Serializable enum class WallpaperScaleType(val contentScale: ContentScale, val text: StringResource) { @SerialName("fill") FILL(ContentScale.Crop, MR.strings.wallpaper_scale_fill), @@ -304,7 +308,7 @@ sealed class WallpaperType { cachedImages[filename] } else { val res = if (this is Preset) { - (PresetWallpaper.from(filename) ?: PresetWallpaper.CATS).let { if (appPlatform.isAndroid) it.res else it.resDesktop }.toComposeImageBitmap()!! + (PresetWallpaper.from(filename) ?: PresetWallpaper.CATS).platformRes().toComposeImageBitmap()!! } else { try { // In case of unintentional image deletion don't crash the app diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.desktop.kt new file mode 100644 index 0000000000..e46772670b --- /dev/null +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/ChatWallpaper.desktop.kt @@ -0,0 +1,15 @@ +package chat.simplex.common.views.helpers + +import chat.simplex.res.MR +import dev.icerock.moko.resources.ImageResource + +// Desktop uses smaller, desktop-tuned images: FilterQuality.Low there pixelates downscaling, so the +// source must already be near display size. These live in desktopMain/resources, out of the Android APK. +actual fun PresetWallpaper.platformRes(): ImageResource = when (this) { + PresetWallpaper.CATS -> MR.images.wallpaper_cats_desktop + PresetWallpaper.FLOWERS -> MR.images.wallpaper_flowers_desktop + PresetWallpaper.HEARTS -> MR.images.wallpaper_hearts_desktop + PresetWallpaper.KIDS -> MR.images.wallpaper_kids_desktop + PresetWallpaper.SCHOOL -> MR.images.wallpaper_school_desktop + PresetWallpaper.TRAVEL -> MR.images.wallpaper_travel_desktop +} diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_cats_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_cats_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_cats_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_cats_desktop@4x.png diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_flowers_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_flowers_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_flowers_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_flowers_desktop@4x.png diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_hearts_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_hearts_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_hearts_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_hearts_desktop@4x.png diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_kids_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_kids_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_kids_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_kids_desktop@4x.png diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_school_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_school_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_school_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_school_desktop@4x.png diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_travel_desktop@4x.png b/apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_travel_desktop@4x.png similarity index 100% rename from apps/multiplatform/common/src/commonMain/resources/MR/images/wallpaper_travel_desktop@4x.png rename to apps/multiplatform/common/src/desktopMain/resources/MR/images/wallpaper_travel_desktop@4x.png