From 933cf73a5e692992a4be2eb436198470893aa236 Mon Sep 17 00:00:00 2001 From: Maximilian Richt Date: Thu, 23 Jul 2026 17:13:57 +0200 Subject: [PATCH] Fix quoted null in OrderPositionModel --- .../models/db/OrderPositionExtensions.kt | 27 ++++++------------- .../pretix/libpretixsync/utils/JSONUtils.java | 9 +++++++ 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/OrderPositionExtensions.kt b/libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/OrderPositionExtensions.kt index 1489e3fe..93fbef0a 100644 --- a/libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/OrderPositionExtensions.kt +++ b/libpretixsync/src/main/java/eu/pretix/libpretixsync/models/db/OrderPositionExtensions.kt @@ -2,6 +2,7 @@ package eu.pretix.libpretixsync.models.db import eu.pretix.libpretixsync.sqldelight.OrderPosition import eu.pretix.libpretixsync.sqldelight.SafeOffsetDateTimeMapper +import eu.pretix.libpretixsync.utils.JSONUtils import org.json.JSONArray import org.json.JSONException import org.json.JSONObject @@ -21,15 +22,15 @@ fun OrderPosition.toModel(): OrderPositionModel { subEventServerId = this.subevent_id, variationServerId = parseVariationId(json), attendeeNameParts = json.optJSONObject("attendee_name_parts"), - city = json.optString("city", null), - company = json.optString("company", null), - country = json.optString("country", null), - email = json.optString("email", null), - street = json.optString("street", null), - zipcode = json.optString("zipcode", null), + city = JSONUtils.optString(json, "city"), + company = JSONUtils.optString(json, "company"), + country = JSONUtils.optString(json, "country"), + email = JSONUtils.optString(json, "email"), + street = JSONUtils.optString(json, "street"), + zipcode = JSONUtils.optString(json, "zipcode"), price = parsePrice(json), taxRate = parseTaxRate(json), - taxCode = parseTaxCode(json), + taxCode = JSONUtils.optString(json, "tax_code"), taxValue = parseTaxValue(json), seatName = parseSeatName(json), addonToServerId = parseAddonToServerId(json), @@ -65,18 +66,6 @@ private fun parsePrice(json: JSONObject): BigDecimal? { } } -private fun parseTaxCode(json: JSONObject): String? { - try { - if (json.isNull("tax_code")) { - return null - } - return json.optString("tax_code", null) - } catch (e: JSONException) { - e.printStackTrace() - return null - } -} - private fun parseTaxRate(json: JSONObject): BigDecimal? { try { return BigDecimal(json.getString("tax_rate")) diff --git a/libpretixsync/src/main/java/eu/pretix/libpretixsync/utils/JSONUtils.java b/libpretixsync/src/main/java/eu/pretix/libpretixsync/utils/JSONUtils.java index 578e2c2a..91175edb 100644 --- a/libpretixsync/src/main/java/eu/pretix/libpretixsync/utils/JSONUtils.java +++ b/libpretixsync/src/main/java/eu/pretix/libpretixsync/utils/JSONUtils.java @@ -22,6 +22,7 @@ of first software and associated documentation files (the "Software"), to deal import org.json.JSONArray; +import org.json.JSONException; import org.json.JSONObject; import java.util.HashSet; @@ -29,6 +30,14 @@ of first software and associated documentation files (the "Software"), to deal import java.util.Set; public class JSONUtils { + + public static String optString(JSONObject object, String key) throws JSONException { + if (object.has(key) && !object.isNull(key)) { + return object.getString(key); + } + return null; + } + private static Set setFromIterable(Iterator it) { HashSet set = new HashSet(); while (it.hasNext()) {