commit ae2e4c16ae04acd19d715783424d3bfed15e92bf
parent a9983c9301e714cc0224135052313359f4834e6a
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sat,  7 Sep 2024 21:47:31 +0200

refactor(core): InAppOverlay
- deny network requests on crash overlay
- exit button

Diffstat:
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/ui/InAppOverlay.kt | 21++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/InAppOverlay.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/ui/InAppOverlay.kt @@ -34,11 +34,14 @@ import me.rhunk.snapenhance.common.ui.AppMaterialTheme import me.rhunk.snapenhance.common.ui.createComposeView import me.rhunk.snapenhance.common.util.ktx.copyToClipboard import me.rhunk.snapenhance.core.ModContext +import me.rhunk.snapenhance.core.SnapEnhance import me.rhunk.snapenhance.core.util.hook.HookStage import me.rhunk.snapenhance.core.util.hook.Hooker +import me.rhunk.snapenhance.core.util.hook.hook import me.rhunk.snapenhance.core.util.ktx.isDarkTheme import kotlin.math.roundToInt import kotlin.random.Random +import kotlin.system.exitProcess typealias CustomComposable = @Composable BoxScope.() -> Unit @@ -47,11 +50,20 @@ class InAppOverlay( ) { companion object { fun showCrashOverlay(content: String, throwable: Throwable? = null) { + // deny network requests + SnapEnhance.classCache.apply { + unifiedGrpcService.hook("unaryCall", HookStage.BEFORE) { param -> + param.setResult(null) + } + networkApi.hook("submit", HookStage.BEFORE) { param -> + param.setResult(null) + } + } + Hooker.ephemeralHook(Activity::class.java, "onPostCreate", HookStage.AFTER) { param -> val contentView = param.thisObject<Activity>().findViewById<FrameLayout>(android.R.id.content) contentView.children().forEach { it.visibility = View.GONE } - lateinit var screenView: View - screenView = createComposeView(param.thisObject()) { + val screenView = createComposeView(param.thisObject()) { AppMaterialTheme(isDarkTheme = true) { Surface( color = MaterialTheme.colorScheme.surface @@ -88,10 +100,9 @@ class InAppOverlay( } } Button(onClick = { - contentView.children().forEach { it.visibility = View.VISIBLE } - contentView.removeView(screenView) + exitProcess(1) }) { - Text("Ignore") + Text("Exit") } } }