aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt
diff options
context:
space:
mode:
authorAllan Wang <me@allanwang.ca>2018-12-28 23:09:58 -0500
committerAllan Wang <me@allanwang.ca>2018-12-28 23:09:58 -0500
commit0d6f53c82c4c55afdc61ea20773e7421b368e46f (patch)
tree4ba35717cb3805cd270b3fc0bda498a1598a6e66 /app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt
parent7f545a19dcb52073bc22d2bb59e6cb4beecac4a6 (diff)
downloadfrost-0d6f53c82c4c55afdc61ea20773e7421b368e46f.tar.gz
frost-0d6f53c82c4c55afdc61ea20773e7421b368e46f.tar.bz2
frost-0d6f53c82c4c55afdc61ea20773e7421b368e46f.zip
Fully remove anko, resolves #1184
Diffstat (limited to 'app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt')
-rw-r--r--app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt54
1 files changed, 33 insertions, 21 deletions
diff --git a/app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt b/app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt
index 4b538e87..ece1f677 100644
--- a/app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt
+++ b/app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt
@@ -21,6 +21,7 @@ import ca.allanwang.kau.kpref.activity.KPrefAdapterBuilder
import ca.allanwang.kau.utils.materialDialog
import ca.allanwang.kau.utils.startActivityForResult
import ca.allanwang.kau.utils.string
+import ca.allanwang.kau.utils.toast
import com.pitchedapps.frost.R
import com.pitchedapps.frost.activities.DebugActivity
import com.pitchedapps.frost.activities.SettingsActivity
@@ -35,11 +36,13 @@ import com.pitchedapps.frost.facebook.parsers.SearchParser
import com.pitchedapps.frost.utils.L
import com.pitchedapps.frost.utils.frostUriFromFile
import com.pitchedapps.frost.utils.sendFrostEmail
-import org.jetbrains.anko.doAsync
-import org.jetbrains.anko.toast
-import org.jetbrains.anko.uiThread
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.Job
+import kotlinx.coroutines.channels.Channel
+import kotlinx.coroutines.isActive
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
import java.io.File
-import java.util.concurrent.Future
/**
* Created by Allan Wang on 2017-06-30.
@@ -69,26 +72,29 @@ fun SettingsActivity.getDebugPrefs(): KPrefAdapterBuilder.() -> Unit = {
itemsCallback { dialog, _, position, _ ->
dialog.dismiss()
val parser = parsers[position]
- var attempt: Future<Unit>? = null
+ var attempt: Job? = null
val loading = materialDialog {
content(parser.nameRes)
progress(true, 100)
negativeText(R.string.kau_cancel)
onNegative { dialog, _ ->
- attempt?.cancel(true)
+ attempt?.cancel()
dialog.dismiss()
}
canceledOnTouchOutside(false)
}
- attempt = loading.doAsync({
- createEmail(parser, "Error: ${it.message}")
- }) {
- val data = parser.parse(FbCookie.webCookie)
- uiThread {
- if (it.isCancelled) return@uiThread
- it.dismiss()
- createEmail(parser, data?.data)
+ attempt = launch(Dispatchers.IO) {
+ try {
+ val data = parser.parse(FbCookie.webCookie)
+ withContext(Dispatchers.Main) {
+ if (!isActive)
+ return@withContext
+ loading.dismiss()
+ createEmail(parser, data?.data)
+ }
+ } catch (e: Exception) {
+ createEmail(parser, "Error: ${e.message}")
}
}
}
@@ -123,14 +129,20 @@ fun SettingsActivity.sendDebug(url: String, html: String?) {
dismissListener { downloader.cancel() }
}
- md.doAsync {
- downloader.loadAndZip(ZIP_NAME, { progress ->
- uiThread { it.setProgress(progress) }
- }) { success ->
- uiThread {
- it.dismiss()
+ val progressChannel = Channel<Int>(10)
+
+ launch(Dispatchers.Main) {
+ for (p in progressChannel) {
+ md.setProgress(p)
+ }
+ }
+ launch(Dispatchers.IO) {
+ downloader.loadAndZip(ZIP_NAME, { progressChannel.offer(it) }) { success ->
+ launch(Dispatchers.Main) {
+ if (!isActive) return@launch
+ md.dismiss()
if (success) {
- val zipUri = it.context.frostUriFromFile(
+ val zipUri = frostUriFromFile(
File(downloader.baseDir, "$ZIP_NAME.zip")
)
L.i { "Sending debug zip with uri $zipUri" }