commit 420c02af64080a403a0f08ac5dbaaea84784f746
parent 9973da1021908ff61322f90e59398fd65f7dd7ce
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date: Wed, 29 May 2024 14:04:55 +0200
feat(app): crash notification
Diffstat:
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt b/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt
@@ -27,6 +27,7 @@ import me.rhunk.snapenhance.common.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.common.bridge.wrapper.LoggerWrapper
import me.rhunk.snapenhance.common.bridge.wrapper.MappingsWrapper
import me.rhunk.snapenhance.common.config.ModConfig
+import me.rhunk.snapenhance.common.logger.fatalCrash
import me.rhunk.snapenhance.common.util.getPurgeTime
import me.rhunk.snapenhance.e2ee.E2EEImplementation
import me.rhunk.snapenhance.scripting.RemoteScriptManager
@@ -129,6 +130,7 @@ class RemoteSideContext(
}
}.onFailure {
log.error("Failed to load RemoteSideContext", it)
+ androidContext.fatalCrash(it)
}
scriptManager.runtime.eachModule {
diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt
@@ -1,6 +1,11 @@
package me.rhunk.snapenhance.common.logger
+import android.app.Notification
+import android.app.NotificationChannel
+import android.app.NotificationManager
+import android.content.Context
import android.util.Log
+import kotlin.system.exitProcess
abstract class AbstractLogger(
logChannel: LogChannel,
@@ -35,4 +40,21 @@ abstract class AbstractLogger(
open fun warn(message: Any?, tag: String = TAG) {}
open fun assert(message: Any?, tag: String = TAG) {}
+}
+
+fun Context.fatalCrash(throwable: Throwable) {
+ getSystemService(NotificationManager::class.java).apply {
+ createNotificationChannel(
+ NotificationChannel("default", "Default", NotificationManager.IMPORTANCE_HIGH)
+ )
+ notify(
+ 0,
+ Notification.Builder(this@fatalCrash, "default")
+ .setContentTitle("Failed to load SnapEnhance")
+ .setStyle(Notification.BigTextStyle().bigText(throwable.message + "\n" + throwable.stackTraceToString()))
+ .setSmallIcon(android.R.drawable.stat_notify_error)
+ .build()
+ )
+ }
+ exitProcess(1)
}
\ No newline at end of file