From 87d4c78c67a690c369769f64c138186ee87bf579 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Purple=5F=CE=9Eye=E2=84=A2?= <168314373+Purple-EyeZ@users.noreply.github.com> Date: Thu, 29 Jan 2026 06:58:59 +0100 Subject: [PATCH] feat(modules/UpdaterModule): show update dialog when bundle is updated in background --- .../xposed/modules/HookScriptLoaderModule.kt | 5 ++--- .../revenge/xposed/modules/UpdaterModule.kt | 19 +++++++++++++------ 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/app/src/main/kotlin/io/github/revenge/xposed/modules/HookScriptLoaderModule.kt b/app/src/main/kotlin/io/github/revenge/xposed/modules/HookScriptLoaderModule.kt index 536a6de..4e239f9 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/modules/HookScriptLoaderModule.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/modules/HookScriptLoaderModule.kt @@ -86,12 +86,11 @@ object HookScriptLoaderModule : Module() { if (mainScript.exists()) { Log.i("Main script exists, updating in background...") - UpdaterModule.downloadScript() - + UpdaterModule.downloadScript(showUpdateDialog = true) ready.await() } else { Log.i("Main script does not exist, downloading before load...") - val download = async { UpdaterModule.downloadScript().join() } + val download = async { UpdaterModule.downloadScript(showUpdateDialog = false).join() } awaitAll(ready, download) } } diff --git a/app/src/main/kotlin/io/github/revenge/xposed/modules/UpdaterModule.kt b/app/src/main/kotlin/io/github/revenge/xposed/modules/UpdaterModule.kt index 8a31e64..d5d439a 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/modules/UpdaterModule.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/modules/UpdaterModule.kt @@ -80,7 +80,7 @@ object UpdaterModule : Module() { } } - fun downloadScript(activity: Activity? = null): Job = scope.launch { + fun downloadScript(activity: Activity? = null, showUpdateDialog: Boolean = true): Job = scope.launch { try { HttpClient(CIO) { expectSuccess = false @@ -115,15 +115,22 @@ object UpdaterModule : Module() { Log.i("Bundle updated (${bytes.size} bytes)") - // This is a retry, so we show a dialog - if (activity != null) { - withContext(Dispatchers.Main) { - AlertDialog.Builder(activity).setTitle("Revenge Update Successful") + if (showUpdateDialog) { + val activity = activity ?: lastActivity?.get() + + activity?.runOnUiThread { + AlertDialog.Builder(activity) + .setTitle("Revenge Update Downloaded") .setMessage("A reload is required for changes to take effect.") .setPositiveButton("Reload") { dialog, _ -> reloadApp() dialog.dismiss() - }.setCancelable(false).show() + } + .setNegativeButton("Later") { dialog, _ -> + dialog.dismiss() + } + .setCancelable(false) + .show() } } }