aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt
diff options
context:
space:
mode:
authorpacien2018-03-31 16:56:35 +0200
committerpacien2018-03-31 16:56:35 +0200
commita5762d98a07ce30e8b3e1ac364e15e1c65029b75 (patch)
tree324096d5feffd396cef8660b3a1bcb53b16d7f15 /app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt
parent32a68afadec59da045118c6707cf4caec145502b (diff)
downloadtincapp-a5762d98a07ce30e8b3e1ac364e15e1c65029b75.tar.gz
Prompt for bug report
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}