diff --git a/app/src/main/kotlin/io/github/revenge/xposed/Constants.kt b/app/src/main/kotlin/io/github/revenge/xposed/Constants.kt index c22a78d..a2f9a00 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/Constants.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/Constants.kt @@ -9,9 +9,11 @@ class Constants { const val CACHE_DIR = "cache/pyoncord" const val MAIN_SCRIPT_FILE = "bundle.js" + const val LOG_TAG = "Revenge" const val LOADER_NAME = "RevengeXposed" + const val USER_AGENT = "RevengeXposed" } } \ No newline at end of file diff --git a/app/src/main/kotlin/io/github/revenge/xposed/Main.kt b/app/src/main/kotlin/io/github/revenge/xposed/Main.kt index ea99f66..c5547ce 100644 --- a/app/src/main/kotlin/io/github/revenge/xposed/Main.kt +++ b/app/src/main/kotlin/io/github/revenge/xposed/Main.kt @@ -11,6 +11,7 @@ import io.github.revenge.xposed.modules.* import io.github.revenge.xposed.modules.appearance.FontsModule import io.github.revenge.xposed.modules.appearance.SysColorsModule import io.github.revenge.xposed.modules.appearance.ThemeModule +import io.github.revenge.xposed.modules.bridge.AdditionalBridgeMethodsModule import io.github.revenge.xposed.modules.bridge.BridgeModule class Main : Module(), IXposedHookLoadPackage, IXposedHookZygoteInit { @@ -18,12 +19,13 @@ class Main : Module(), IXposedHookLoadPackage, IXposedHookZygoteInit { private val modules = mutableListOf( HookScriptLoaderModule(), BridgeModule(), + AdditionalBridgeMethodsModule(), UpdaterModule(), FixResourcesModule(), LogBoxModule(), FontsModule(), ThemeModule(), - SysColorsModule(), + SysColorsModule() ) init { diff --git a/app/src/main/kotlin/io/github/revenge/xposed/modules/bridge/AdditionalBridgeMethodsModule.kt b/app/src/main/kotlin/io/github/revenge/xposed/modules/bridge/AdditionalBridgeMethodsModule.kt new file mode 100644 index 0000000..eb252f1 --- /dev/null +++ b/app/src/main/kotlin/io/github/revenge/xposed/modules/bridge/AdditionalBridgeMethodsModule.kt @@ -0,0 +1,45 @@ +package io.github.revenge.xposed.modules.bridge + +import android.app.AlertDialog +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.os.Build +import android.widget.Toast +import io.github.revenge.xposed.Module + +class AdditionalBridgeMethodsModule : Module() { + override fun onContext(context: Context) = with(context) { + BridgeModule.registerMethod("revenge.alertError") { + val (error, version) = it + val app = getAppInfo() + val errorString = "$error" + + val clipboard = applicationContext.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("Stack Trace", errorString) + + AlertDialog.Builder(this) + .setTitle("Revenge Error") + .setMessage( + """ + Revenge: $version + ${app.name}: ${app.version} (${app.versionCode}) + Device: ${Build.MANUFACTURER} ${Build.MODEL} + + + """.trimIndent() + errorString + ) + .setPositiveButton("OK") { dialog, _ -> + dialog.dismiss() + } + .setNeutralButton("Copy") { dialog, _ -> + clipboard.setPrimaryClip(clip) + Toast.makeText(applicationContext, "Copied stack trace", Toast.LENGTH_SHORT).show() + dialog.dismiss() + } + .show() + + null + } + } +} \ No newline at end of file