summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-01 15:04:58 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-01 19:03:03 +0000
commit4361bd5a454a9cff85d5e0d85300d04242028e50 (patch)
tree42b967ed16eb838c9219111e29d3fb02c7cdf844 /android/src
parent28033c96a8e1a3718b5e3161506b6abc387d0ca5 (diff)
downloadmullvadvpn-4361bd5a454a9cff85d5e0d85300d04242028e50.tar.xz
mullvadvpn-4361bd5a454a9cff85d5e0d85300d04242028e50.zip
Delete problem report file in the background
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt20
1 files changed, 17 insertions, 3 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
index 66a55503d6..82d213bb65 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/dataproxy/MullvadProblemReport.kt
@@ -5,7 +5,9 @@ import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.Job
import kotlinx.coroutines.async
+import kotlinx.coroutines.launch
const val PROBLEM_REPORT_FILE = "problem_report.txt"
@@ -14,6 +16,7 @@ class MullvadProblemReport(val logDirectory: File) {
private var collectJob: Deferred<Boolean>? = null
private var sendJob: Deferred<Boolean>? = null
+ private var deleteJob: Job? = null
var confirmNoEmail: CompletableDeferred<Boolean>? = null
@@ -39,7 +42,7 @@ class MullvadProblemReport(val logDirectory: File) {
synchronized(this) {
if (!isActive) {
collectJob = GlobalScope.async(Dispatchers.Default) {
- deleteReportFile()
+ deleteReportFile().join()
collectReport(logDirectory.absolutePath, problemReportPath.absolutePath)
}
}
@@ -73,8 +76,19 @@ class MullvadProblemReport(val logDirectory: File) {
}
}
- fun deleteReportFile() {
- problemReportPath.delete()
+ fun deleteReportFile(): Job {
+ synchronized(this) {
+ val oldDeleteJob = deleteJob
+
+ val job = GlobalScope.launch(Dispatchers.Default) {
+ oldDeleteJob?.join()
+ problemReportPath.delete()
+ }
+
+ deleteJob = job
+
+ return job
+ }
}
private external fun collectReport(logDirectory: String, reportPath: String): Boolean