From 7ef86e0d663a03e29df6554aea4902abb5f839c1 Mon Sep 17 00:00:00 2001 From: FongMi Date: Thu, 1 Dec 2022 02:04:40 +0800 Subject: [PATCH] Support push update --- .../android/tv/ui/activity/HomeActivity.java | 3 + .../fongmi/android/tv/event/ServerEvent.java | 6 +- .../com/fongmi/android/tv/server/Nano.java | 6 +- .../com/fongmi/android/tv/server/Server.java | 13 ++- .../server/process/InputRequestProcess.java | 9 +- .../com/fongmi/android/tv/utils/Updater.java | 45 +++++--- app/src/main/res/raw-zh-rCN/index.html | 107 ------------------ app/src/main/res/raw-zh-rTW/index.html | 107 ------------------ app/src/main/res/raw/index.html | 35 +++--- app/src/main/res/raw/script.js | 12 +- 10 files changed, 88 insertions(+), 255 deletions(-) delete mode 100644 app/src/main/res/raw-zh-rCN/index.html delete mode 100644 app/src/main/res/raw-zh-rTW/index.html 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 54e8e2668..8b9bd93ed 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 @@ -288,6 +288,9 @@ public class HomeActivity extends BaseActivity implements CustomTitleView.Listen case SEARCH: CollectActivity.start(this, event.getText(), true); break; + case UPDATE: + Updater.create(this).force().branch(event.getText()).start(); + break; case PUSH: if (ApiConfig.get().getSite("push_agent") == null) return; DetailActivity.start(this, "push_agent", event.getText(), true); diff --git a/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java b/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java index 17850d45b..11f4aad05 100644 --- a/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java +++ b/app/src/main/java/com/fongmi/android/tv/event/ServerEvent.java @@ -11,6 +11,10 @@ public class ServerEvent { EventBus.getDefault().post(new ServerEvent(Type.SEARCH, text)); } + public static void update(String text) { + EventBus.getDefault().post(new ServerEvent(Type.UPDATE, text)); + } + public static void push(String text) { EventBus.getDefault().post(new ServerEvent(Type.PUSH, text)); } @@ -33,6 +37,6 @@ public class ServerEvent { } public enum Type { - SEARCH, PUSH, API + SEARCH, UPDATE, PUSH, API } } diff --git a/app/src/main/java/com/fongmi/android/tv/server/Nano.java b/app/src/main/java/com/fongmi/android/tv/server/Nano.java index eff494b10..9f1d3f549 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Nano.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Nano.java @@ -95,8 +95,10 @@ public class Nano extends NanoHTTPD { void onSearch(String text); - void onPush(String url); + void onUpdate(String text); - void onApi(String url); + void onPush(String text); + + void onApi(String text); } } diff --git a/app/src/main/java/com/fongmi/android/tv/server/Server.java b/app/src/main/java/com/fongmi/android/tv/server/Server.java index 6a5faaff9..6946087ab 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/Server.java +++ b/app/src/main/java/com/fongmi/android/tv/server/Server.java @@ -87,12 +87,17 @@ public class Server implements Nano.Listener { } @Override - public void onPush(String url) { - if (url.length() > 0) ServerEvent.push(url); + public void onUpdate(String text) { + if (text.length() > 0) ServerEvent.update(text); } @Override - public void onApi(String url) { - if (url.length() > 0) ServerEvent.api(url); + public void onPush(String text) { + if (text.length() > 0) ServerEvent.push(text); + } + + @Override + public void onApi(String text) { + if (text.length() > 0) ServerEvent.api(text); } } diff --git a/app/src/main/java/com/fongmi/android/tv/server/process/InputRequestProcess.java b/app/src/main/java/com/fongmi/android/tv/server/process/InputRequestProcess.java index ad0f4c01a..4274e75b3 100644 --- a/app/src/main/java/com/fongmi/android/tv/server/process/InputRequestProcess.java +++ b/app/src/main/java/com/fongmi/android/tv/server/process/InputRequestProcess.java @@ -25,13 +25,16 @@ public class InputRequestProcess implements RequestProcess { Map params = session.getParms(); switch (params.get("do")) { case "search": - nano.getListener().onSearch(params.get("word").trim()); + nano.getListener().onSearch(params.get("text").trim()); + break; + case "update": + nano.getListener().onUpdate(params.get("text").trim()); break; case "push": - nano.getListener().onPush(params.get("url").trim()); + nano.getListener().onPush(params.get("text").trim()); break; case "api": - nano.getListener().onApi(params.get("url").trim()); + nano.getListener().onApi(params.get("text").trim()); break; } return Nano.createPlainTextResponse(NanoHTTPD.Response.Status.OK, "ok"); diff --git a/app/src/main/java/com/fongmi/android/tv/utils/Updater.java b/app/src/main/java/com/fongmi/android/tv/utils/Updater.java index 3b03fa651..423f196db 100644 --- a/app/src/main/java/com/fongmi/android/tv/utils/Updater.java +++ b/app/src/main/java/com/fongmi/android/tv/utils/Updater.java @@ -11,6 +11,7 @@ import com.fongmi.android.tv.BuildConfig; import com.fongmi.android.tv.R; import com.fongmi.android.tv.databinding.DialogUpdateBinding; import com.fongmi.android.tv.net.OKHttp; +import com.google.android.exoplayer2.util.Log; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import org.json.JSONObject; @@ -19,13 +20,12 @@ import java.io.File; public class Updater implements View.OnClickListener { - private static final String DEF = "https://raw.githubusercontent.com/FongMi/TV/release/release/"; - private static final String URL = DEF + BuildConfig.FLAVOR_mode + ".json"; - private static final String APK = DEF + BuildConfig.FLAVOR_mode + "-" + BuildConfig.FLAVOR_api + ".apk"; private static final String PROXY = "https://ghproxy.com/"; private final Activity activity; private AlertDialog dialog; + private String branch; + private boolean force; public static Updater create(Activity activity) { return new Updater(activity); @@ -33,10 +33,16 @@ public class Updater implements View.OnClickListener { private Updater(Activity activity) { this.activity = activity; + this.branch = "release"; } public Updater force() { - Prefers.putUpdate(true); + this.force = true; + return this; + } + + public Updater branch(String branch) { + this.branch = branch; return this; } @@ -45,31 +51,42 @@ public class Updater implements View.OnClickListener { } private void doInBackground() { - connect(URL, 0); + Log.e("DDD", getJson()); + connect(getJson()); } - private File getApk() { + private File getFile() { return FileUtil.getCacheFile("update.apk"); } - private void connect(String target, int retry) { + private String getPath() { + return "https://raw.githubusercontent.com/FongMi/TV/" + branch + "/release/"; + } + + private String getJson() { + return PROXY + getPath() + BuildConfig.FLAVOR_mode + ".json"; + } + + private String getApk() { + return PROXY + getPath() + BuildConfig.FLAVOR_mode + "-" + BuildConfig.FLAVOR_api + ".apk"; + } + + private void connect(String target) { try { JSONObject object = new JSONObject(OKHttp.newCall(target).execute().body().string()); String name = object.optString("name"); String desc = object.optString("desc"); int code = object.optInt("code"); - String url = retry > 0 ? PROXY + APK : APK; - if (code <= BuildConfig.VERSION_CODE) FileUtil.clearDir(getApk()); - else FileUtil.write(getApk(), OKHttp.newCall(url).execute().body().bytes()); - if (getApk().exists() && Prefers.getUpdate()) App.post(() -> checkActivity(name, desc)); + if (code <= BuildConfig.VERSION_CODE) FileUtil.clearDir(getFile()); + if (code > BuildConfig.VERSION_CODE || force) FileUtil.write(getFile(), OKHttp.newCall(getApk()).execute().body().bytes()); + if (getFile().exists() && (Prefers.getUpdate() || force)) App.post(() -> checkActivity(name, desc)); } catch (Exception e) { - if (retry == 0) connect(PROXY + target, 1); e.printStackTrace(); } } private void checkActivity(String version, String desc) { - if (activity.isFinishing()) FileUtil.openFile(getApk()); + if (activity.isFinishing()) FileUtil.openFile(getFile()); else showDialog(version, desc); } @@ -85,7 +102,7 @@ public class Updater implements View.OnClickListener { @Override public void onClick(View view) { - if (view.getId() == R.id.confirm) FileUtil.openFile(getApk()); + if (view.getId() == R.id.confirm) FileUtil.openFile(getFile()); else if (view.getId() == R.id.cancel) Prefers.putUpdate(false); dialog.dismiss(); } diff --git a/app/src/main/res/raw-zh-rCN/index.html b/app/src/main/res/raw-zh-rCN/index.html deleted file mode 100644 index 9e6d470e7..000000000 --- a/app/src/main/res/raw-zh-rCN/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - TV - - - - - - - - - - -
-
-
-
-
-
-

搜索

-
-
-
-
-
-
- - -
-
-
-
-
-
-
- - -
- - - -
-
-
-
- - - - \ No newline at end of file diff --git a/app/src/main/res/raw-zh-rTW/index.html b/app/src/main/res/raw-zh-rTW/index.html deleted file mode 100644 index 1395fb39b..000000000 --- a/app/src/main/res/raw-zh-rTW/index.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - TV - - - - - - - - - - -
-
-
-
-
-
-

搜尋

-
-
-
-
-
-
- - -
-
-
-
-
-
-
- - -
- - - -
-
-
-
- - - - \ No newline at end of file diff --git a/app/src/main/res/raw/index.html b/app/src/main/res/raw/index.html index 643387e32..8a9a2b59a 100644 --- a/app/src/main/res/raw/index.html +++ b/app/src/main/res/raw/index.html @@ -1,5 +1,6 @@ + TV @@ -11,6 +12,7 @@ +
@@ -18,15 +20,15 @@
-

Search

+

搜尋

- - + +
@@ -37,15 +39,21 @@