From d1e3224cba06fe5173bccf3e4acf53597b3d14f0 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Wed, 26 May 2021 10:46:49 +0200 Subject: [PATCH] Store the group filter as JSON in preferences This ensures we don't run into issues if the group name contains a ',' --- .../beemdevelopment/aegis/Preferences.java | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index 2fbd3ebd..9634143c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -6,9 +6,11 @@ import android.content.res.Resources; import android.net.Uri; import android.os.Build; import android.preference.PreferenceManager; -import android.text.TextUtils; -import java.util.Arrays; +import org.json.JSONArray; +import org.json.JSONException; + +import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; @@ -230,16 +232,25 @@ public class Preferences { } public void setGroupFilter(List groupFilter) { - String filter = TextUtils.join(",", groupFilter); - _prefs.edit().putString("pref_group_filter", filter).apply(); + JSONArray json = new JSONArray(groupFilter); + _prefs.edit().putString("pref_group_filter", json.toString()).apply(); } public List getGroupFilter() { - String filter = _prefs.getString("pref_group_filter", null); - if (filter == null || filter.isEmpty()) { + String raw = _prefs.getString("pref_group_filter", null); + if (raw == null || raw.isEmpty()) { return Collections.emptyList(); } - return Arrays.asList(filter.split(",")); + try { + JSONArray json = new JSONArray(raw); + List filter = new ArrayList<>(); + for (int i = 0; i < json.length(); i++) { + filter.add(json.getString(i)); + } + return filter; + } catch (JSONException e) { + return Collections.emptyList(); + } } }