From 7b04dd9ff32d7692b02938a1474995d5f6207aed Mon Sep 17 00:00:00 2001 From: FongMi Date: Sun, 21 May 2023 19:30:58 +0800 Subject: [PATCH] Support doh - part 4 --- .../main/java/com/fongmi/android/tv/App.java | 18 +-------------- .../com/fongmi/android/tv/api/ApiConfig.java | 6 ++++- .../com/fongmi/android/tv/api/LiveConfig.java | 4 ++++ .../com/fongmi/android/tv/api/WallConfig.java | 4 ++++ .../server/process/ActionRequestProcess.java | 4 ++-- .../android/tv/ui/activity/KeepActivity.java | 2 +- .../tv/ui/custom/dialog/ReceiveDialog.java | 2 +- .../tv/ui/fragment/SettingFragment.java | 22 ++++++++++++------- .../main/java/com/github/catvod/bean/Doh.java | 2 +- 9 files changed, 33 insertions(+), 31 deletions(-) diff --git a/app/src/main/java/com/fongmi/android/tv/App.java b/app/src/main/java/com/fongmi/android/tv/App.java index 642ebf5bb..94f21db80 100644 --- a/app/src/main/java/com/fongmi/android/tv/App.java +++ b/app/src/main/java/com/fongmi/android/tv/App.java @@ -2,8 +2,6 @@ package com.fongmi.android.tv; import android.app.Activity; import android.app.Application; -import android.content.Context; -import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -38,12 +36,6 @@ public class App extends Application { gson = new Gson(); } - @Override - protected void attachBaseContext(Context base) { - super.attachBaseContext(base); - setDoh(base); - } - public static App get() { return instance; } @@ -77,15 +69,6 @@ public class App extends Application { for (Runnable r : runnable) get().handler.removeCallbacks(r); } - public static void restart(Class clz) { - App.activity().startActivity(Intent.makeRestartActivityTask(new Intent(get(), clz).getComponent())); - System.exit(0); - } - - private void setDoh(Context context) { - OkHttp.get().setDoh(context, Doh.objectFrom(Prefers.getDoh())); - } - private void setActivity(Activity activity) { this.activity = activity; } @@ -93,6 +76,7 @@ public class App extends Application { @Override public void onCreate() { super.onCreate(); + OkHttp.get().setDoh(this, Doh.objectFrom(Prefers.getDoh())); CaocConfig.Builder.create().backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT).errorActivity(CrashActivity.class).apply(); registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() { @Override 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 68ba113d0..7bf89dcd2 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 @@ -80,6 +80,10 @@ public class ApiConfig { return get().getParses().size() > 0; } + public static void load(Config config, Callback callback) { + get().clear().config(config).load(callback); + } + public ApiConfig init() { this.ads = null; this.wall = null; @@ -258,7 +262,7 @@ public class ApiConfig { public List getDoh() { List items = new ArrayList<>(); - items.add(Doh.create(App.get())); + items.add(Doh.system(App.get())); items.addAll(doh); return items; } diff --git a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java index 4a287ad7f..77f37c99b 100644 --- a/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java +++ b/app/src/main/java/com/fongmi/android/tv/api/LiveConfig.java @@ -61,6 +61,10 @@ public class LiveConfig { return getUrl() != null && getUrl().length() > 0; } + public static void load(Config config, Callback callback) { + get().clear().config(config).load(callback); + } + public LiveConfig init() { this.home = null; this.config = Config.live(); 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 732e89a69..2f94e0cb5 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 @@ -44,6 +44,10 @@ public class WallConfig { return drawable; } + public static void load(Config config, Callback callback) { + get().clear().config(config).load(callback); + } + public WallConfig init() { this.config = Config.wall(); return this; diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java b/app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java index cdbc9fc89..9c497e338 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/ActionRequestProcess.java @@ -118,7 +118,7 @@ public class ActionRequestProcess implements RequestProcess { if (ApiConfig.get().getConfig().equals(config)) { History.sync(targets); } else { - ApiConfig.get().clear().config(config).load(getCallback(targets)); + ApiConfig.load(config, getCallback(targets)); } } @@ -142,7 +142,7 @@ public class ActionRequestProcess implements RequestProcess { List configs = Config.arrayFrom(params.get("configs")); List targets = Keep.arrayFrom(params.get("targets")); if (ApiConfig.getUrl() == null && configs.size() > 0) { - ApiConfig.get().clear().config(Config.find(configs.get(0), 0)).load(getCallback(configs, targets)); + ApiConfig.load(Config.find(configs.get(0), 0), getCallback(configs, targets)); } else { Keep.sync(configs, targets); } diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java index ff1d0a706..4dbceb152 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/KeepActivity.java @@ -79,7 +79,7 @@ public class KeepActivity extends BaseActivity implements KeepAdapter.OnClickLis } private void loadConfig(Config config, Keep item) { - ApiConfig.get().clear().config(config).load(true, new Callback() { + ApiConfig.load(config, new Callback() { @Override public void success() { DetailActivity.start(getActivity(), item.getSiteKey(), item.getVodId(), item.getVodName()); diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ReceiveDialog.java b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ReceiveDialog.java index e7e74edbb..936c8a181 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ReceiveDialog.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/custom/dialog/ReceiveDialog.java @@ -75,7 +75,7 @@ public class ReceiveDialog extends BaseDialog { dismiss(); } else { showProgress(); - ApiConfig.get().clear().config(event.getConfig()).load(getCallback()); + ApiConfig.load(event.getConfig(), getCallback()); } } 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 bb58bac6c..3cb0fa1f8 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 @@ -27,7 +27,6 @@ import com.fongmi.android.tv.impl.Callback; import com.fongmi.android.tv.impl.ConfigCallback; import com.fongmi.android.tv.impl.LiveCallback; import com.fongmi.android.tv.impl.SiteCallback; -import com.fongmi.android.tv.ui.activity.MainActivity; import com.fongmi.android.tv.ui.base.BaseFragment; import com.fongmi.android.tv.ui.custom.dialog.ConfigDialog; import com.fongmi.android.tv.ui.custom.dialog.HistoryDialog; @@ -40,6 +39,7 @@ import com.fongmi.android.tv.utils.Prefers; import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.Utils; import com.github.catvod.bean.Doh; +import com.github.catvod.net.OkHttp; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.permissionx.guolindev.PermissionX; @@ -134,23 +134,23 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit switch (config.getType()) { case 0: Notify.progress(getActivity()); + ApiConfig.load(config, getCallback()); mBinding.vodUrl.setText(config.getDesc()); - ApiConfig.get().clear().config(config).load(getCallback(config)); break; case 1: Notify.progress(getActivity()); + LiveConfig.load(config, getCallback()); mBinding.liveUrl.setText(config.getDesc()); - LiveConfig.get().clear().config(config).load(getCallback(config)); break; case 2: Notify.progress(getActivity()); + WallConfig.load(config, getCallback()); mBinding.wallUrl.setText(config.getDesc()); - WallConfig.get().clear().config(config).load(getCallback(config)); break; } } - private Callback getCallback(Config config) { + private Callback getCallback() { return new Callback() { @Override public void success() { @@ -160,7 +160,6 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit @Override public void error(int resId) { Notify.show(resId); - config.delete(); setConfig(); } }; @@ -295,12 +294,19 @@ public class SettingFragment extends BaseFragment implements ConfigCallback, Sit private void setDoh(View view) { new MaterialAlertDialogBuilder(getActivity()).setTitle(R.string.setting_doh).setNegativeButton(R.string.dialog_negative, null).setSingleChoiceItems(getDohList(), getDohIndex(), (dialog, which) -> { - Prefers.putDoh(ApiConfig.get().getDoh().get(which).toString()); - App.post(() -> App.restart(MainActivity.class), 250); + setDoh(ApiConfig.get().getDoh().get(which)); dialog.dismiss(); }).show(); } + private void setDoh(Doh doh) { + Notify.progress(getActivity()); + Prefers.putDoh(doh.toString()); + OkHttp.get().setDoh(App.get(), doh); + mBinding.dohText.setText(doh.getName()); + ApiConfig.load(Config.vod(), getCallback()); + } + private void onCache(View view) { FileUtil.clearCache(new Callback() { @Override diff --git a/catvod/src/main/java/com/github/catvod/bean/Doh.java b/catvod/src/main/java/com/github/catvod/bean/Doh.java index beeed14c4..a33a964e9 100644 --- a/catvod/src/main/java/com/github/catvod/bean/Doh.java +++ b/catvod/src/main/java/com/github/catvod/bean/Doh.java @@ -26,7 +26,7 @@ public class Doh { @SerializedName("ips") private List ips; - public static Doh create(Context context) { + public static Doh system(Context context) { return new Doh().name(context.getString(R.string.system)); }