Store the group filter as JSON in preferences

This ensures we don't run into issues if the group name contains a ','
pull/760/head
Alexander Bakker 4 years ago
parent d2eed8a356
commit d1e3224cba

@ -6,9 +6,11 @@ import android.content.res.Resources;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.preference.PreferenceManager; 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.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -230,16 +232,25 @@ public class Preferences {
} }
public void setGroupFilter(List<String> groupFilter) { public void setGroupFilter(List<String> groupFilter) {
String filter = TextUtils.join(",", groupFilter); JSONArray json = new JSONArray(groupFilter);
_prefs.edit().putString("pref_group_filter", filter).apply(); _prefs.edit().putString("pref_group_filter", json.toString()).apply();
} }
public List<String> getGroupFilter() { public List<String> getGroupFilter() {
String filter = _prefs.getString("pref_group_filter", null); String raw = _prefs.getString("pref_group_filter", null);
if (filter == null || filter.isEmpty()) { if (raw == null || raw.isEmpty()) {
return Collections.emptyList(); return Collections.emptyList();
} }
return Arrays.asList(filter.split(",")); try {
JSONArray json = new JSONArray(raw);
List<String> filter = new ArrayList<>();
for (int i = 0; i < json.length(); i++) {
filter.add(json.getString(i));
}
return filter;
} catch (JSONException e) {
return Collections.emptyList();
}
} }
} }

Loading…
Cancel
Save