From 8d6a57aff8c324ed98fc636366bd1b75bb4d5d36 Mon Sep 17 00:00:00 2001 From: celenity Date: Mon, 22 Dec 2025 04:51:58 -0500 Subject: [PATCH] fix: Get wallpaper metadata from a `wallpapers.json` file (instead of hardcoding like we've been doing - this is now closer to stock's approach) + fix metadata for our existing wallpapers (as they currently originate from Fennec F-Droid) Signed-off-by: celenity --- patches/fenix-local-wallpapers.patch | 91 ++++--------------- .../app/src/main/res/raw/wallpapers.json | 55 +++++++++++ .../src/main/res/values/ironfox_strings.xml | 4 + scripts/prebuild.sh | 4 + 4 files changed, 80 insertions(+), 74 deletions(-) create mode 100644 patches/fenix-overlay/app/src/main/res/raw/wallpapers.json diff --git a/patches/fenix-local-wallpapers.patch b/patches/fenix-local-wallpapers.patch index 46fc6a5..423e558 100644 --- a/patches/fenix-local-wallpapers.patch +++ b/patches/fenix-local-wallpapers.patch @@ -118,10 +118,10 @@ index 5f0f76aa62..43b654a1e5 100644 * Helper function used to migrate a legacy wallpaper's card colors that previously did not exist. */ diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperMetadataFetcher.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperMetadataFetcher.kt -index ab7ba29ba3..de133fc771 100644 +index ab7ba29ba34c88..c6e50be81d64f3 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperMetadataFetcher.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpaperMetadataFetcher.kt -@@ -6,11 +6,11 @@ package org.mozilla.fenix.wallpapers +@@ -6,15 +6,17 @@ package org.mozilla.fenix.wallpapers import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -136,18 +136,21 @@ index ab7ba29ba3..de133fc771 100644 import org.mozilla.fenix.utils.toHexColor import java.text.SimpleDateFormat import java.util.Date -@@ -21,24 +21,80 @@ import java.util.Locale - * + import java.util.Locale ++import android.content.res.Resources ++import org.mozilla.fenix.R + + /** + * Utility class for downloading wallpaper metadata from the remote server. +@@ -22,23 +24,18 @@ import java.util.Locale * @param client The client that will be used to fetch metadata. */ --class WallpaperMetadataFetcher( + class WallpaperMetadataFetcher( - private val client: Client, --) { ++ private val resources: Resources, + ) { - private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") + - "metadata/v$CURRENT_JSON_VERSION/wallpapers.json" -+class WallpaperMetadataFetcher { -+// private val client: Client, -+//) { +// private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") + +// "metadata/v$CURRENT_JSON_VERSION/wallpapers.json" @@ -161,76 +164,16 @@ index ab7ba29ba3..de133fc771 100644 - response.body.useBufferedReader { - val json = it.readText() - JSONObject(json).parseAsWallpapers() -+// Result.runCatching { -+// val request = Request(url = metadataUrl, method = Request.Method.GET, conservative = true) -+// val response = client.fetch(request) -+// response.body.useBufferedReader { -+ val json = """ -+ { -+ "last-updated-date": "2023-08-23", -+ "collections": [ -+ { -+ "id": "classic-firefox", -+ "heading": null, -+ "description": null, -+ "available-locales": null, -+ "availability-range": null, -+ "learn-more-url": null, -+ "wallpapers": [ -+ { -+ "id": "algae", -+ "text-color": "FBFBFE", -+ "card-color": "15141A", -+ "card-color-light": "E3F8F9", -+ "card-color-dark": "1D2D32", -+ "logo-text-color": "FBFBFE" -+ }, -+ { -+ "id": "colorful-bubbles", -+ "text-color": "FBFBFE", -+ "card-color": "15141A", -+ "card-color-light": "E3F8F9", -+ "card-color-dark": "1D2D32", -+ "logo-text-color": "FBFBFE" -+ }, -+ { -+ "id": "dark-dune", -+ "text-color": "FBFBFE", -+ "card-color": "15141A", -+ "card-color-light": "E3F8F9", -+ "card-color-dark": "1D2D32", -+ "logo-text-color": "FBFBFE" -+ }, -+ { -+ "id": "dune", -+ "text-color": "FBFBFE", -+ "card-color": "15141A", -+ "card-color-light": "E3F8F9", -+ "card-color-dark": "1D2D32", -+ "logo-text-color": "FBFBFE" -+ }, -+ { -+ "id": "firey-red", -+ "text-color": "FBFBFE", -+ "card-color": "15141A", -+ "card-color-light": "E3F8F9", -+ "card-color-dark": "1D2D32", -+ "logo-text-color": "FBFBFE" -+ } -+ ] -+ } -+ ] - } +- } - }.getOrElse { listOf() } -+ """.trimIndent() ++ val json = resources.openRawResource(R.raw.wallpapers).bufferedReader() ++ .use { it.readText() } + return@withContext JSONObject(json).parseAsWallpapers() -+// } -+// }.getOrElse { listOf() } } private fun JSONObject.parseAsWallpapers(): List = diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt -index 2a696cacea..a4a9add6ab 100644 +index 2a696cacea3c7f..441df87ea560c2 100644 --- a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt @@ -45,9 +45,10 @@ class WallpapersUseCases( @@ -238,7 +181,7 @@ index 2a696cacea..a4a9add6ab 100644 // in the app's lifetime to ensure that any potential long-running tasks can complete quickly. val initialize: InitializeWallpapersUseCase by lazy { - val metadataFetcher = WallpaperMetadataFetcher(client) -+ val metadataFetcher = WallpaperMetadataFetcher() ++ val metadataFetcher = WallpaperMetadataFetcher(context.resources) val migrationHelper = LegacyWallpaperMigration( storageRootDirectory = storageRootDirectory, + assetManager = context.assets, diff --git a/patches/fenix-overlay/app/src/main/res/raw/wallpapers.json b/patches/fenix-overlay/app/src/main/res/raw/wallpapers.json new file mode 100644 index 0000000..1b9200e --- /dev/null +++ b/patches/fenix-overlay/app/src/main/res/raw/wallpapers.json @@ -0,0 +1,55 @@ +{ + "last-updated-date": "2025-12-22", + "collections": [ + { + "id": "fennec-fdroid", + "heading": "Fennec F-Droid", + "description": "Wallpapers from Fennec F-Droid.", + "available-locales": null, + "availability-range": null, + "learn-more-url": "https://gitlab.com/relan/fennecmedia", + "wallpapers": [ + { + "id": "algae", + "text-color": "FBFBFE", + "card-color": "15141A", + "card-color-light": "E3F8F9", + "card-color-dark": "1D2D32", + "logo-text-color": "FBFBFE" + }, + { + "id": "colorful-bubbles", + "text-color": "FBFBFE", + "card-color": "15141A", + "card-color-light": "E3F8F9", + "card-color-dark": "1D2D32", + "logo-text-color": "FBFBFE" + }, + { + "id": "dark-dune", + "text-color": "FBFBFE", + "card-color": "15141A", + "card-color-light": "E3F8F9", + "card-color-dark": "1D2D32", + "logo-text-color": "FBFBFE" + }, + { + "id": "dune", + "text-color": "FBFBFE", + "card-color": "15141A", + "card-color-light": "E3F8F9", + "card-color-dark": "1D2D32", + "logo-text-color": "FBFBFE" + }, + { + "id": "firey-red", + "text-color": "FBFBFE", + "card-color": "15141A", + "card-color-light": "E3F8F9", + "card-color-dark": "1D2D32", + "logo-text-color": "FBFBFE" + } + ] + } + ] +} diff --git a/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml b/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml index 3f6dcfd..bb87f84 100644 --- a/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml +++ b/patches/fenix-overlay/app/src/main/res/values/ironfox_strings.xml @@ -109,6 +109,10 @@ UnifiedPush setting modified. Quitting the application to apply changes… + + Fennec F-Droid + Wallpapers from Fennec F-Droid. %s + Enable WebAssembly (WASM) diff --git a/scripts/prebuild.sh b/scripts/prebuild.sh index c7e626c..f34c6f1 100755 --- a/scripts/prebuild.sh +++ b/scripts/prebuild.sh @@ -378,6 +378,10 @@ mkdir -vp app/src/main/assets/wallpapers/dark-dune mkdir -vp app/src/main/assets/wallpapers/dune mkdir -vp app/src/main/assets/wallpapers/firey-red +# Display proper name and description for wallpaper collection +$SED -i -e 's|R.string.wallpaper_artist_series_title|R.string.wallpaper_collection_fennec|' app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt +$SED -i -e 's|R.string.wallpaper_artist_series_description_with_learn_more|R.string.wallpaper_collection_fennec_description|' app/src/main/java/org/mozilla/fenix/settings/wallpaper/WallpaperSettings.kt + # Set up target parameters case "$1" in arm)