From 4eedeb3ea618e4481bc3661ee5cb52a22de423c6 Mon Sep 17 00:00:00 2001 From: okjack Date: Tue, 12 Mar 2024 13:57:22 +0800 Subject: [PATCH] config cache --- .../android/tv/ui/activity/HomeActivity.java | 2 +- .../tv/ui/activity/SettingActivity.java | 16 +++++ .../leanback/res/layout/activity_setting.xml | 58 +++++++++++++++++++ .../java/com/fongmi/android/tv/Setting.java | 8 +++ .../android/tv/api/config/VodConfig.java | 12 +++- .../com/fongmi/android/tv/bean/Config.java | 5 ++ app/src/main/res/values-zh-rCN/strings.xml | 10 ++++ app/src/main/res/values-zh-rTW/strings.xml | 10 ++++ app/src/main/res/values/strings.xml | 10 ++++ .../android/tv/ui/activity/MainActivity.java | 2 +- 10 files changed, 130 insertions(+), 3 deletions(-) diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java index b4ee403a3..adaa28802 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/HomeActivity.java @@ -299,7 +299,7 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen Notify.progress(this); WallConfig.get().init(); LiveConfig.get().init().load(); - VodConfig.get().init().load(getCallback()); + VodConfig.get().init().load(getCallback(), true); setLoading(true); } diff --git a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java index de403c3b9..21465a6de 100644 --- a/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java +++ b/app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingActivity.java @@ -8,6 +8,7 @@ import android.view.View; import androidx.viewbinding.ViewBinding; import com.fongmi.android.tv.BuildConfig; +import com.fongmi.android.tv.R; import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.Updater; import com.fongmi.android.tv.api.config.LiveConfig; @@ -35,6 +36,7 @@ import com.fongmi.android.tv.ui.dialog.ProxyDialog; import com.fongmi.android.tv.ui.dialog.SiteDialog; import com.fongmi.android.tv.utils.FileUtil; import com.fongmi.android.tv.utils.Notify; +import com.fongmi.android.tv.utils.ResUtil; import com.fongmi.android.tv.utils.UrlUtil; import com.github.catvod.bean.Doh; import com.github.catvod.net.OkHttp; @@ -47,6 +49,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit private ActivitySettingBinding mBinding; private int type; + private String[] configCache; public static void start(Activity activity) { activity.startActivity(new Intent(activity, SettingActivity.class)); @@ -77,6 +80,7 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.dohText.setText(getDohList()[getDohIndex()]); mBinding.versionText.setText(BuildConfig.VERSION_NAME); mBinding.proxyText.setText(UrlUtil.scheme(Setting.getProxy())); + mBinding.configCacheText.setText((configCache = ResUtil.getStringArray(R.array.select_config_cache))[Setting.getConfigCache()]); setCacheText(); } @@ -113,6 +117,8 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit mBinding.wallRefresh.setOnClickListener(this::setWallRefresh); mBinding.custom.setOnClickListener(this::onCustom); mBinding.doh.setOnClickListener(this::setDoh); + mBinding.configCache.setOnClickListener(this::setConfigCache); + mBinding.reset.setOnClickListener(this::onReset); } @Override @@ -277,6 +283,16 @@ public class SettingActivity extends BaseActivity implements ConfigCallback, Sit SettingCustomActivity.start(this); } + private void setConfigCache(View view) { + int index = Setting.getConfigCache(); + Setting.putConfigCache(index = index == configCache.length - 1 ? 0 : ++index); + mBinding.configCacheText.setText(configCache[index]); + } + + private void onReset(View view) { + + } + private void setDoh(View view) { DohDialog.create(this).index(getDohIndex()).show(); } diff --git a/app/src/leanback/res/layout/activity_setting.xml b/app/src/leanback/res/layout/activity_setting.xml index 8426f316b..a684e2c82 100644 --- a/app/src/leanback/res/layout/activity_setting.xml +++ b/app/src/leanback/res/layout/activity_setting.xml @@ -319,6 +319,64 @@ + + + + + + + + + + + + + + + + + + loadConfig(callback)); + load(callback, false); + } + + public void load(Callback callback, boolean cache) { + if (cache) App.execute(() -> loadConfigCache(callback)); + else App.execute(() -> loadConfig(callback)); } private void loadConfig(Callback callback) { @@ -142,6 +147,11 @@ public class VodConfig { else App.post(() -> callback.error(Notify.getError(R.string.error_config_get, e))); } + private void loadConfigCache(Callback callback) { + if (!TextUtils.isEmpty(config.getJson()) && config.isCache()) checkJson(Json.parse(config.getJson()).getAsJsonObject(), callback); + else loadConfig(callback); + } + private void checkJson(JsonObject object, Callback callback) { if (object.has("urls")) { parseDepot(object, callback); 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 d29e2fe4e..70fab9099 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 @@ -7,6 +7,7 @@ import androidx.room.Index; import androidx.room.PrimaryKey; import com.fongmi.android.tv.App; +import com.fongmi.android.tv.Setting; import com.fongmi.android.tv.db.AppDatabase; import com.github.catvod.utils.Prefers; import com.google.gson.annotations.SerializedName; @@ -119,6 +120,10 @@ public class Config { this.time = time; } + public boolean isCache() { + return getTime() + (long)(3600*1000 * Setting.getConfigCache()) > System.currentTimeMillis(); + } + public Config type(int type) { setType(type); return this; diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index d75739cbd..360b0c05c 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -75,6 +75,8 @@ 播放设置 弹幕设置 个性设置 + 接口缓存 + 重置App 图片品质 图片尺寸 聚合搜索 @@ -257,6 +259,14 @@ TVBox风格 + + 关闭 + 1小时 + 2小时 + 3小时 + 4小时 + + 预设 系统 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 0d9b0c834..292ef2d50 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -75,6 +75,8 @@ 播放設定 彈幕設定 個性設定 + 接口暫存 + 重置App 圖片品質 圖片尺寸 聚合搜索 @@ -257,6 +259,14 @@ TVBox風格 + + 關閉 + 1小時 + 2小時 + 3小時 + 4小時 + + 預設 系統 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 63b167d46..2a0e7e81a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -75,6 +75,8 @@ Player setting Danmu setting Custom setting + Config cache + Reset app Image quality Image size Aggregated search @@ -262,6 +264,14 @@ TVBox style + + Close + 1 Hour + 2 Hour + 3 Hour + 4 Hour + + Default System diff --git a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java index 6a5d7e3fa..935fd95bb 100644 --- a/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java +++ b/app/src/mobile/java/com/fongmi/android/tv/ui/activity/MainActivity.java @@ -106,7 +106,7 @@ public class MainActivity extends BaseActivity implements NavigationBarView.OnIt public void initConfig() { WallConfig.get().init(); LiveConfig.get().init().load(); - VodConfig.get().init().load(getCallback()); + VodConfig.get().init().load(getCallback(), true); } private Callback getCallback() {