diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt b/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt index ce93f89a..f1793663 100644 --- 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 index 6401d227..1de33266 100644 --- 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