diff --git a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java index b9fc25407..db831c8d2 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/ApiConfig.java @@ -115,15 +115,15 @@ public class ApiConfig { private void parseJson(JsonObject object) { for (JsonElement element : object.get("sites").getAsJsonArray()) { - Site site = Site.objectFrom(element); + Site site = Site.objectFrom(element).sync(); site.setExt(parseExt(site.getExt())); if (site.getKey().equals(Prefers.getHome())) setHome(site); - sites.add(site); + if (!sites.contains(site)) sites.add(site); } for (JsonElement element : object.get("parses").getAsJsonArray()) { Parse parse = Parse.objectFrom(element); if (parse.getName().equals(Prefers.getParse())) setParse(parse); - parses.add(parse); + if (!parses.contains(parse)) parses.add(parse); } if (home == null) setHome(sites.isEmpty() ? new Site() : sites.get(0)); if (parse == null) setParse(parses.isEmpty() ? new Parse() : parses.get(0)); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Site.java b/app/src/main/java/com/fongmi/android/tv/bean/Site.java index 086ee8bde..0653d1b1a 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Site.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Site.java @@ -7,6 +7,7 @@ import androidx.room.Entity; import androidx.room.PrimaryKey; import com.fongmi.android.tv.R; +import com.fongmi.android.tv.db.AppDatabase; import com.google.gson.Gson; import com.google.gson.JsonElement; import com.google.gson.annotations.SerializedName; @@ -142,16 +143,18 @@ public class Site { return getSearchable() == null || getSearchable() == 1; } - public void setSearchable(boolean searchable) { + public Site setSearchable(boolean searchable) { setSearchable(searchable ? 1 : 0); + return this; } public boolean isFilterable() { return getFilterable() == null || getFilterable() == 1; } - public void setFilterable(boolean filterable) { + public Site setFilterable(boolean filterable) { setFilterable(filterable ? 1 : 0); + return this; } public int getSearchIcon() { @@ -162,6 +165,22 @@ public class Site { return isFilterable() ? R.drawable.ic_filter_on : R.drawable.ic_filter_off; } + public static Site find(String key) { + return AppDatabase.get().getSiteDao().find(key); + } + + public void save() { + AppDatabase.get().getSiteDao().insertOrUpdate(this); + } + + public Site sync() { + Site item = find(getKey()); + if (item == null) return this; + setSearchable(item.getSearchable()); + setFilterable(item.getFilterable()); + return this; + } + @Override public boolean equals(Object obj) { if (this == obj) return true;