aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt')
-rw-r--r--app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt30
1 files changed, 30 insertions, 0 deletions
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 @@
1package org.pacien.tincapp.context
2
3import org.slf4j.Logger
4
5/**
6 * @author pacien
7 */
8class CrashRecorder(private val logger: Logger,
9 private val upstreamCrashHandler: Thread.UncaughtExceptionHandler) : Thread.UncaughtExceptionHandler {
10
11 companion object {
12 private val flagFile = AppPaths.crashFlagFile()
13
14 fun hasPreviouslyCrashed() = flagFile.exists()
15
16 fun flagCrash() {
17 flagFile.apply { if (!exists()) createNewFile() }
18 }
19
20 fun dismissPreviousCrash() {
21 flagFile.delete()
22 }
23 }
24
25 override fun uncaughtException(thread: Thread, throwable: Throwable) {
26 logger.error("Fatal application error.", throwable)
27 flagCrash()
28 upstreamCrashHandler.uncaughtException(thread, throwable)
29 }
30}