From cd6986ac7e50b85eb37a90c259e058826a143ac2 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 7 May 2020 11:17:23 +0200 Subject: [PATCH] Small address JSON fixes --- app/src/main/java/eu/faircode/email/DB.java | 29 +++++++++++-------- .../faircode/email/InternetAddressJson.java | 2 +- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/DB.java b/app/src/main/java/eu/faircode/email/DB.java index 0b53c71f55..2419dbfbd9 100644 --- a/app/src/main/java/eu/faircode/email/DB.java +++ b/app/src/main/java/eu/faircode/email/DB.java @@ -1635,19 +1635,24 @@ public abstract class DB extends RoomDatabase { @TypeConverter public static Address[] decodeAddresses(String json) { - if (json == null) + try { + if (TextUtils.isEmpty(json)) + return null; + else if (json.startsWith("[[")) { + // [[{"address":"...","personal":"..."}],[{... ...}]] + // There is a slim chance somebody uses the split pattern in an email address + String[] parts = json.substring(3, json.length() - 3).split(JSPLIT); + Address[] addresses = new Address[parts.length]; + for (int i = 0; i < parts.length; i++) + addresses[i] = InternetAddressJson.from(parts[i]); + return addresses; + } else { + // [{"address":"...","personal":"..."}] + return new Address[]{InternetAddressJson.from(json.substring(2, json.length() - 2))}; + } + } catch (Throwable ex) { + Log.e(ex); return null; - else if (json.startsWith("[[")) { - // [[{"address":"...","personal":"..."}],[{... ...}]] - // There is a slim chance somebody uses the split pattern in an email address - String[] parts = json.substring(3, json.length() - 3).split(JSPLIT); - Address[] addresses = new Address[parts.length]; - for (int i = 0; i < parts.length; i++) - addresses[i] = InternetAddressJson.from(parts[i]); - return addresses; - } else { - // [{"address":"...","personal":"..."}] - return new Address[]{InternetAddressJson.from(json.substring(2, json.length() - 2))}; } } } diff --git a/app/src/main/java/eu/faircode/email/InternetAddressJson.java b/app/src/main/java/eu/faircode/email/InternetAddressJson.java index a00f5964b3..b8b198bda1 100644 --- a/app/src/main/java/eu/faircode/email/InternetAddressJson.java +++ b/app/src/main/java/eu/faircode/email/InternetAddressJson.java @@ -106,7 +106,7 @@ public class InternetAddressJson extends InternetAddress { if (this.json != null) { try { JSONObject jaddress = new JSONObject("{" + this.json + "}"); - String address = jaddress.getString("address"); + String address = jaddress.optString("address"); String personal = jaddress.optString("personal"); if (!TextUtils.isEmpty(address)) super.setAddress(address);