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 02dd98f8b..e0b7c4dd2 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 @@ -180,10 +180,8 @@ public class ApiConfig { } private void initLive(JsonObject object) { - boolean hasLive = object.has("lives"); - if (hasLive) Config.create(config.getUrl(), 1); - boolean loadApi = hasLive && LiveConfig.get().isSame(config.getUrl()); - if (loadApi) LiveConfig.get().clear().config(Config.find(config.getUrl(), 1).update()).parse(object); + boolean load = object.has("lives") && LiveConfig.get().isSame(config.getUrl()); + if (load) LiveConfig.get().clear().config(Config.find(config, 1).update()).parse(object); else LiveConfig.get().load(); } @@ -304,8 +302,9 @@ public class ApiConfig { } private void setWall(String wall) { - if (Config.wall().getUrl().isEmpty()) WallConfig.get().setUrl(wall); this.wall = wall; + boolean load = !TextUtils.isEmpty(wall) && WallConfig.get().isSame(wall); + if (load) WallConfig.get().config(Config.find(wall, config.getName(), 2).update()); } public Site getHome() { diff --git a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java index 2d0ae63cd..67ef26b79 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/WallConfig.java @@ -19,6 +19,7 @@ public class WallConfig { private Drawable drawable; private Config config; + private boolean same; private static class Loader { static volatile WallConfig INSTANCE = new WallConfig(); @@ -32,6 +33,10 @@ public class WallConfig { return get().getConfig().getUrl(); } + public static String getDesc() { + return get().getConfig().getDesc(); + } + public static Drawable drawable(Drawable drawable) { if (get().drawable != null) return drawable; get().setDrawable(drawable); @@ -45,6 +50,7 @@ public class WallConfig { public WallConfig config(Config config) { this.config = config; + this.same = config.getUrl().equals(ApiConfig.get().getWall()); return this; } @@ -53,10 +59,6 @@ public class WallConfig { return this; } - public void setUrl(String url) { - this.config = Config.find(url, 2); - } - public Config getConfig() { return config == null ? Config.wall() : config; } @@ -77,12 +79,12 @@ public class WallConfig { try { File file = write(FileUtil.getWall(0)); if (file.exists() && file.length() > 0) refresh(0); - else setUrl(ApiConfig.get().getWall()); + else config(Config.find(ApiConfig.get().getWall(), 2)); App.post(callback::success); config.update(); } catch (Exception e) { App.post(() -> callback.error(R.string.error_config_parse)); - setUrl(ApiConfig.get().getWall()); + config(Config.find(ApiConfig.get().getWall(), 2)); e.printStackTrace(); } } @@ -94,6 +96,10 @@ public class WallConfig { return file; } + public boolean isSame(String url) { + return same || config.getUrl().isEmpty() || url.equals(config.getUrl()); + } + public static void refresh(int index) { Prefers.putWall(index); RefreshEvent.wall(); diff --git a/app/src/main/java/com/fongmi/android/tv/bean/Config.java b/app/src/main/java/com/fongmi/android/tv/bean/Config.java index df5ee02dc..b0d563432 100644 --- a/app/src/main/java/com/fongmi/android/tv/bean/Config.java +++ b/app/src/main/java/com/fongmi/android/tv/bean/Config.java @@ -146,8 +146,7 @@ public class Config { } public static void delete(String url, int type) { - if (type == 2) AppDatabase.get().getConfigDao().delete(type); - else AppDatabase.get().getConfigDao().delete(url, type); + AppDatabase.get().getConfigDao().delete(url, type); } public static Config vod() { @@ -174,6 +173,16 @@ public class Config { return item == null ? create(url, type) : item.type(type); } + public static Config find(String url, String name, int type) { + Config item = AppDatabase.get().getConfigDao().find(url, type); + return item == null ? create(url, name, type) : item.type(type).name(name); + } + + public static Config find(Config config, int type) { + Config item = AppDatabase.get().getConfigDao().find(config.getUrl(), type); + return item == null ? create(config.getUrl(), config.getName(), type) : item.type(type).name(config.getName()); + } + public static Config find(Depot depot, int type) { Config item = AppDatabase.get().getConfigDao().find(depot.getUrl(), type); return item == null ? create(depot.getUrl(), depot.getName(), type) : item.type(type).name(depot.getName()); diff --git a/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java b/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java index 7683e21c6..d1052097a 100644 --- a/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java +++ b/app/src/main/java/com/fongmi/android/tv/db/dao/ConfigDao.java @@ -27,7 +27,4 @@ public abstract class ConfigDao extends BaseDao { @Query("DELETE FROM Config WHERE url = :url") public abstract void delete(String url); - - @Query("DELETE FROM Config WHERE type = :type") - public abstract void delete(int type); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java index 6e9713357..06c7f424b 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingFragment.java @@ -61,8 +61,8 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override protected void initView() { mBinding.vodUrl.setText(ApiConfig.getDesc()); - mBinding.wallUrl.setText(WallConfig.getUrl()); mBinding.liveUrl.setText(LiveConfig.getDesc()); + mBinding.wallUrl.setText(WallConfig.getDesc()); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.sizeText.setText((size = ResUtil.getStringArray(R.array.select_size))[Prefers.getSize()]); mBinding.scaleText.setText((scale = ResUtil.getStringArray(R.array.select_scale))[Prefers.getScale()]); @@ -114,7 +114,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit break; case 2: Notify.progress(getActivity(), true); - mBinding.wallUrl.setText(config.getUrl()); + mBinding.wallUrl.setText(config.getDesc()); WallConfig.get().clear().config(config).load(getCallback(config)); break; } @@ -143,7 +143,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit RefreshEvent.video(); mBinding.vodUrl.setText(ApiConfig.getDesc()); mBinding.liveUrl.setText(LiveConfig.getDesc()); - mBinding.wallUrl.setText(WallConfig.getUrl()); + mBinding.wallUrl.setText(WallConfig.getDesc()); break; case 1: Notify.dismiss(); @@ -151,7 +151,7 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit break; case 2: Notify.dismiss(); - mBinding.wallUrl.setText(WallConfig.getUrl()); + mBinding.wallUrl.setText(WallConfig.getDesc()); break; } } diff --git a/app/src/mobile/res/color-night/nav.xml b/app/src/mobile/res/color-night/nav.xml index f166e7b83..e8c22ee27 100644 --- a/app/src/mobile/res/color-night/nav.xml +++ b/app/src/mobile/res/color-night/nav.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/app/src/mobile/res/color/nav.xml b/app/src/mobile/res/color/nav.xml index b1d0183c4..e8c22ee27 100644 --- a/app/src/mobile/res/color/nav.xml +++ b/app/src/mobile/res/color/nav.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file