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 <celenity@celenity.dev>
This commit is contained in:
celenity
2025-12-22 04:51:58 -05:00
parent b7006e2baa
commit 8d6a57aff8
4 changed files with 80 additions and 74 deletions

View File

@@ -118,10 +118,10 @@ index 5f0f76aa62..43b654a1e5 100644
* Helper function used to migrate a legacy wallpaper's card colors that previously did not exist. * 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 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 --- 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 +++ 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.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
@@ -136,18 +136,21 @@ index ab7ba29ba3..de133fc771 100644
import org.mozilla.fenix.utils.toHexColor import org.mozilla.fenix.utils.toHexColor
import java.text.SimpleDateFormat import java.text.SimpleDateFormat
import java.util.Date 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. * @param client The client that will be used to fetch metadata.
*/ */
-class WallpaperMetadataFetcher( class WallpaperMetadataFetcher(
- private val client: Client, - private val client: Client,
-) { + private val resources: Resources,
) {
- private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") + - private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") +
- "metadata/v$CURRENT_JSON_VERSION/wallpapers.json" - "metadata/v$CURRENT_JSON_VERSION/wallpapers.json"
+class WallpaperMetadataFetcher {
+// private val client: Client,
+//) {
+// private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") + +// private val metadataUrl = BuildConfig.WALLPAPER_URL.substringBefore("android") +
+// "metadata/v$CURRENT_JSON_VERSION/wallpapers.json" +// "metadata/v$CURRENT_JSON_VERSION/wallpapers.json"
@@ -161,76 +164,16 @@ index ab7ba29ba3..de133fc771 100644
- response.body.useBufferedReader { - response.body.useBufferedReader {
- val json = it.readText() - val json = it.readText()
- JSONObject(json).parseAsWallpapers() - 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() } - }.getOrElse { listOf() }
+ """.trimIndent() + val json = resources.openRawResource(R.raw.wallpapers).bufferedReader()
+ .use { it.readText() }
+ return@withContext JSONObject(json).parseAsWallpapers() + return@withContext JSONObject(json).parseAsWallpapers()
+// }
+// }.getOrElse { listOf() }
} }
private fun JSONObject.parseAsWallpapers(): List<Wallpaper> = private fun JSONObject.parseAsWallpapers(): List<Wallpaper> =
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 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 --- 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 +++ b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/wallpapers/WallpapersUseCases.kt
@@ -45,9 +45,10 @@ class WallpapersUseCases( @@ -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. // in the app's lifetime to ensure that any potential long-running tasks can complete quickly.
val initialize: InitializeWallpapersUseCase by lazy { val initialize: InitializeWallpapersUseCase by lazy {
- val metadataFetcher = WallpaperMetadataFetcher(client) - val metadataFetcher = WallpaperMetadataFetcher(client)
+ val metadataFetcher = WallpaperMetadataFetcher() + val metadataFetcher = WallpaperMetadataFetcher(context.resources)
val migrationHelper = LegacyWallpaperMigration( val migrationHelper = LegacyWallpaperMigration(
storageRootDirectory = storageRootDirectory, storageRootDirectory = storageRootDirectory,
+ assetManager = context.assets, + assetManager = context.assets,

View File

@@ -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"
}
]
}
]
}

View File

@@ -109,6 +109,10 @@
<!-- Toast shown after confirming the UnifiedPush configuration --> <!-- Toast shown after confirming the UnifiedPush configuration -->
<string name="toast_change_unifiedpush_done">UnifiedPush setting modified. Quitting the application to apply changes…</string> <string name="toast_change_unifiedpush_done">UnifiedPush setting modified. Quitting the application to apply changes…</string>
<!-- Wallpapers -->
<string name="wallpaper_collection_fennec" translatable="false">Fennec F-Droid</string>
<string name="wallpaper_collection_fennec_description">Wallpapers from Fennec F-Droid. %s</string>
<!-- WebAssembly --> <!-- WebAssembly -->
<string name="preference_wasm_enabled">Enable WebAssembly (WASM)</string> <string name="preference_wasm_enabled">Enable WebAssembly (WASM)</string>

View File

@@ -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/dune
mkdir -vp app/src/main/assets/wallpapers/firey-red 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 # Set up target parameters
case "$1" in case "$1" in
arm) arm)