Merge pull request #2913 from Isira-Seneviratne/awaitAll

Use awaitAll() extension.
This commit is contained in:
Bnyro 2023-01-30 16:20:41 +01:00 committed by GitHub
commit 8c6d20d64d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -24,8 +24,9 @@ import java.io.IOException
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import retrofit2.HttpException
object PlaylistsHelper {
@ -228,30 +229,16 @@ object PlaylistsHelper {
}
}
suspend fun exportPlaylists(): List<ImportPlaylist> {
val playlists = getPlaylists()
val importLists = mutableListOf<ImportPlaylist>()
runBlocking {
val tasks = playlists.map {
async {
val list = getPlaylist(it.id!!)
importLists.add(
ImportPlaylist(
name = list.name,
type = "playlist",
visibility = "private",
videos = list.relatedStreams.map {
"$YOUTUBE_FRONTEND_URL/watch?v=${it.url!!.toID()}"
}
)
)
suspend fun exportPlaylists(): List<ImportPlaylist> = withContext(Dispatchers.IO) {
getPlaylists()
.map { async { getPlaylist(it.id!!) } }
.awaitAll()
.map {
val videos = it.relatedStreams.map { item ->
"$YOUTUBE_FRONTEND_URL/watch?v=${item.url!!.toID()}"
}
ImportPlaylist(it.name, "playlist", "private", videos)
}
tasks.forEach {
it.await()
}
}
return importLists
}
fun clonePlaylist(context: Context, playlistId: String) {