diff options
author | pacien | 2018-03-31 16:56:35 +0200 |
---|---|---|
committer | pacien | 2018-03-31 16:56:35 +0200 |
commit | a5762d98a07ce30e8b3e1ac364e15e1c65029b75 (patch) | |
tree | 324096d5feffd396cef8660b3a1bcb53b16d7f15 /app/src/main/java/org/pacien/tincapp/context/CrashRecorder.kt | |
parent | 32a68afadec59da045118c6707cf4caec145502b (diff) | |
download | tincapp-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.kt | 30 |
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 @@ | |||
1 | package org.pacien.tincapp.context | ||
2 | |||
3 | import org.slf4j.Logger | ||
4 | |||
5 | /** | ||
6 | * @author pacien | ||
7 | */ | ||
8 | class 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 | } | ||