From 0c127bc6b3021827ac5f30e9eddb0f76db840b7e Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Tue, 2 Dec 2025 14:34:39 -0600 Subject: [PATCH] feat(model): Make NetworkDeviceHardware robust to unknown JSON keys (#3880) Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com> --- core/model/build.gradle.kts | 1 + .../org/meshtastic/core/model/NetworkDeviceHardware.kt | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/core/model/build.gradle.kts b/core/model/build.gradle.kts index 0a44105ed..d18352a4f 100644 --- a/core/model/build.gradle.kts +++ b/core/model/build.gradle.kts @@ -35,6 +35,7 @@ dependencies { implementation(projects.core.strings) implementation(libs.androidx.annotation) + implementation(libs.kotlinx.serialization.json) implementation(libs.timber) implementation(libs.zxing.android.embedded) { isTransitive = false } implementation(libs.zxing.core) diff --git a/core/model/src/main/kotlin/org/meshtastic/core/model/NetworkDeviceHardware.kt b/core/model/src/main/kotlin/org/meshtastic/core/model/NetworkDeviceHardware.kt index 1f1bf0a81..5e9c9cd52 100644 --- a/core/model/src/main/kotlin/org/meshtastic/core/model/NetworkDeviceHardware.kt +++ b/core/model/src/main/kotlin/org/meshtastic/core/model/NetworkDeviceHardware.kt @@ -17,10 +17,14 @@ package org.meshtastic.core.model +import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable +import kotlinx.serialization.json.JsonIgnoreUnknownKeys @Serializable +@OptIn(ExperimentalSerializationApi::class) +@JsonIgnoreUnknownKeys data class NetworkDeviceHardware( @SerialName("activelySupported") val activelySupported: Boolean = false, @SerialName("architecture") val architecture: String = "", @@ -30,9 +34,11 @@ data class NetworkDeviceHardware( @SerialName("hwModel") val hwModel: Int = 0, @SerialName("hwModelSlug") val hwModelSlug: String = "", @SerialName("images") val images: List? = null, + @SerialName("key") val key: String? = null, @SerialName("partitionScheme") val partitionScheme: String? = null, @SerialName("platformioTarget") val platformioTarget: String = "", @SerialName("requiresDfu") val requiresDfu: Boolean? = null, @SerialName("supportLevel") val supportLevel: Int? = null, @SerialName("tags") val tags: List? = null, + @SerialName("variant") val variant: String? = null, )