diff options
author | Allan Wang <me@allanwang.ca> | 2018-12-28 23:09:58 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2018-12-28 23:09:58 -0500 |
commit | 0d6f53c82c4c55afdc61ea20773e7421b368e46f (patch) | |
tree | 4ba35717cb3805cd270b3fc0bda498a1598a6e66 /app/src/main/kotlin/com/pitchedapps/frost/settings/Debug.kt | |
parent | 7f545a19dcb52073bc22d2bb59e6cb4beecac4a6 (diff) | |
download | frost-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.kt | 54 |
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" } |