fix: don't block ui thread when fetching

This commit is contained in:
Canny 2022-10-11 17:44:53 +03:00
parent dd81b79fac
commit a1052bff3e
No known key found for this signature in database
GPG Key ID: 395CCB0AA979F27B
3 changed files with 20 additions and 8 deletions

View File

@ -8,6 +8,7 @@ import com.vk.knet.core.Knet
import com.vk.knet.core.http.HttpMethod
import com.vk.knet.core.http.HttpRequest
import com.vk.knet.cornet.CronetKnetEngine
import kotlinx.coroutines.*
import java.io.File
class API(private val repository: GitHubRepository, private val prefs: PreferencesManager, cronet: CronetKnetEngine) {
@ -25,8 +26,13 @@ class API(private val repository: GitHubRepository, private val prefs: Preferenc
suspend fun downloadPatchBundle(workdir: File): File {
return try {
val (_, out) = downloadAsset(workdir, findAsset(prefs.srcPatches.toString(), ".jar"))
withContext(Dispatchers.IO) {
val (_, out) = downloadAsset(
workdir,
findAsset(prefs.srcPatches.toString(), ".jar")
)
out
}
} catch (e: Exception) {
throw Exception("Failed to download patch bundle", e)
}
@ -56,9 +62,13 @@ class API(private val repository: GitHubRepository, private val prefs: Preferenc
return assets to out
}
Log.d("ReVanced Manager", "Downloading asset ${assets.asset.name}")
val file = client.execute(HttpRequest(HttpMethod.GET, assets.asset.downloadUrl)).body?.asBytes()
file?.let { out.writeBytes(it) }
val file = client.execute(
HttpRequest(
HttpMethod.GET,
assets.asset.downloadUrl
)
).body!!.asBytes()
out.writeBytes(file)
return assets to out
}

View File

@ -15,12 +15,12 @@ class GitHubRepository(cronet: CronetKnetEngine) {
val client = Knet.Build(cronet)
suspend fun fetchAssets() = withContext(Dispatchers.IO) {
suspend fun fetchAssets() = withContext(Dispatchers.Default) {
val stream = client.execute(HttpRequest(HttpMethod.GET, "$apiUrl/tools")).body!!.asString()
Json.decodeFromString(stream) as Tools
}
suspend fun fetchContributors() = withContext(Dispatchers.IO) {
suspend fun fetchContributors() = withContext(Dispatchers.Default) {
val stream = client.execute(HttpRequest(HttpMethod.GET,"$apiUrl/contributors")).body!!.asString()
Json.decodeFromString(stream) as Repositories
}

View File

@ -13,7 +13,9 @@ import app.revanced.manager.repository.GitHubRepository
import app.revanced.manager.util.ghManager
import app.revanced.manager.util.ghPatcher
import app.revanced.manager.util.tag
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import java.text.SimpleDateFormat
import java.util.*
@ -33,7 +35,7 @@ class DashboardViewModel(private val repository: GitHubRepository) : ViewModel()
private fun fetchLastCommit() {
viewModelScope.launch {
try {
val repo = repository.fetchAssets()
val repo = withContext(Dispatchers.Default) {repository.fetchAssets()}
for (asset in repo.tools) {
when (asset.repository) {
ghPatcher -> {