From fabe82b0b653b9b3df98c9c35a905594aff408ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=97=E5=AE=AB=E9=9B=AA=E7=8F=8A?= Date: Fri, 15 Oct 2021 02:25:36 +0800 Subject: [PATCH] [app] Show release notes (#1277) --- .../manager/ui/dialog/FlashDialogBuilder.java | 15 ++++++++++++--- .../lsposed/manager/ui/fragment/HomeFragment.java | 6 ++++-- .../java/org/lsposed/manager/util/UpdateUtil.java | 2 ++ 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java index 9811a7b8..13bad3aa 100644 --- a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java @@ -33,13 +33,14 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder { private final TextView textView; private final BorderNestedScrollView rootView; - public FlashDialogBuilder(@NonNull Context context, @NonNull String zipPath) { + public FlashDialogBuilder(@NonNull Context context, String zipPath, String notes) { super(context); this.zipPath = zipPath; setTitle(R.string.update_lsposed); textView = new MaterialTextView(context); - textView.setText(R.string.update_lsposed_msg); + var text = notes + "\n\n\n" + context.getString(R.string.update_lsposed_msg) + "\n\n"; + textView.setText(text); textView.setMovementMethod(LinkMovementMethod.getInstance()); LayoutInflater inflater = LayoutInflater.from(context); @@ -57,7 +58,15 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder { public AlertDialog show() { var dialog = super.show(); var button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); - button.setOnClickListener((v) -> setFlashView(v, dialog)); + button.setEnabled(false); + rootView.setOnScrollChangeListener((View.OnScrollChangeListener) + (v, scrollX, scrollY, oldScrollX, oldScrollY) -> button.setEnabled( + v.getScrollY() + v.getHeight() - v.getPaddingTop() - v.getPaddingBottom() + == rootView.getChildAt(0).getHeight())); + button.setOnClickListener((v) -> { + rootView.setOnScrollChangeListener((View.OnScrollChangeListener) null); + setFlashView(v, dialog); + }); return dialog; } diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java index 078c2be3..5d28101e 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java @@ -102,9 +102,11 @@ public class HomeFragment extends BaseFragment { } } else { if (UpdateUtil.canUpdate()) { - var zip = App.getPreferences().getString("zip_file", null); + var pref = App.getPreferences(); + var zip = pref.getString("zip_file", null); + var notes = pref.getString("release_notes", ""); if (zip != null) { - new FlashDialogBuilder(activity, zip).show(); + new FlashDialogBuilder(activity, zip, notes).show(); return; } } diff --git a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java index d48e866d..a4960929 100644 --- a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java @@ -41,9 +41,11 @@ public class UpdateUtil { var name = assets.get("name").getAsString(); var code = Integer.parseInt(name.split("-", 4)[2]); var now = Instant.now().getEpochSecond(); + var releaseNotes = info.get("body").getAsString(); pref.edit() .putInt("latest_version", code) .putLong("latest_check", now) + .putString("release_notes", releaseNotes) .putBoolean("checked", true) .apply(); var updatedAt = Instant.parse(assets.get("updated_at").getAsString());