From a5762d98a07ce30e8b3e1ac364e15e1c65029b75 Mon Sep 17 00:00:00 2001 From: pacien Date: Sat, 31 Mar 2018 16:56:35 +0200 Subject: Prompt for bug report --- .../org/pacien/tincapp/context/CrashRecorder.kt | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt (limited to 'app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt') diff --git a/app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt b/app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt new file mode 100644 index 0000000..1e8556a --- /dev/null +++ b/app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt @@ -0,0 +1,30 @@ +package org.pacien.tincapp.context + +import org.slf4j.Logger + +/** + * @author pacien + */ +class CrashRecorder(private val logger: Logger, + private val upstreamCrashHandler: Thread.UncaughtExceptionHandler) : Thread.UncaughtExceptionHandler { + + companion object { + private val flagFile = AppPaths.crashFlagFile() + + fun hasPreviouslyCrashed() = flagFile.exists() + + fun flagCrash() { + flagFile.apply { if (!exists()) createNewFile() } + } + + fun dismissPreviousCrash() { + flagFile.delete() + } + } + + override fun uncaughtException(thread: Thread, throwable: Throwable) { + logger.error("Fatal application error.", throwable) + flagCrash() + upstreamCrashHandler.uncaughtException(thread, throwable) + } +} -- cgit v1.2.3