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:
Mapp/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt | 2++
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/logger/AbstractLogger.kt | 22++++++++++++++++++++++
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