Optimize coroutineScope calls
authorTheSaminator <TheSaminator@users.noreply.github.com>
Mon, 14 Feb 2022 17:27:43 +0000 (12:27 -0500)
committerTheSaminator <TheSaminator@users.noreply.github.com>
Mon, 14 Feb 2022 17:27:43 +0000 (12:27 -0500)
src/jvmMain/kotlin/starshipfights/auth/providers.kt
src/jvmMain/kotlin/starshipfights/info/views_user.kt

index 6b8b450ebc3adc1bd10c7d822fcf5273e587efca..cab29d64af78aae4283d691a7f7f102ac3ecc24f 100644 (file)
@@ -13,6 +13,7 @@ import io.ktor.response.*
 import io.ktor.routing.*
 import io.ktor.sessions.*
 import io.ktor.util.*
+import kotlinx.coroutines.async
 import kotlinx.coroutines.coroutineScope
 import kotlinx.coroutines.flow.toList
 import kotlinx.coroutines.launch
@@ -165,7 +166,9 @@ interface AuthProvider {
                                        val shipId = call.parameters["ship"]?.let { Id<ShipInDrydock>(it) }!!
                                        
                                        val (admiral, ship) = coroutineScope {
-                                               Admiral.get(admiralId)!! to ShipInDrydock.get(shipId)!!
+                                               val admiral = async { Admiral.get(admiralId)!! }
+                                               val ship = async { ShipInDrydock.get(shipId)!! }
+                                               admiral.await() to ship.await()
                                        }
                                        
                                        if (admiral.owningUser != currentUser) throw ForbiddenException()
@@ -187,7 +190,9 @@ interface AuthProvider {
                                        val shipId = call.parameters["ship"]?.let { Id<ShipInDrydock>(it) }!!
                                        
                                        val (admiral, ship) = coroutineScope {
-                                               Admiral.get(admiralId)!! to ShipInDrydock.get(shipId)!!
+                                               val admiral = async { Admiral.get(admiralId)!! }
+                                               val ship = async { ShipInDrydock.get(shipId)!! }
+                                               admiral.await() to ship.await()
                                        }
                                        
                                        if (admiral.owningUser != currentUser) throw ForbiddenException()
index 043ec17d91bd4fcc3525496e0164869362cecae6..5faf523680339bf19a6a9e16796c8e8fa98ae6a7 100644 (file)
@@ -678,7 +678,9 @@ suspend fun ApplicationCall.renameShipPage(): HTML.() -> Unit {
        val shipId = parameters["ship"]?.let { Id<ShipInDrydock>(it) }!!
        
        val (admiral, ship) = coroutineScope {
-               Admiral.get(admiralId)!! to ShipInDrydock.get(shipId)!!
+               val admiral = async { Admiral.get(admiralId)!! }
+               val ship = async { ShipInDrydock.get(shipId)!! }
+               admiral.await() to ship.await()
        }
        
        if (admiral.owningUser != currentUser) throw ForbiddenException()
@@ -724,7 +726,9 @@ suspend fun ApplicationCall.sellShipConfirmPage(): HTML.() -> Unit {
        val shipId = parameters["ship"]?.let { Id<ShipInDrydock>(it) }!!
        
        val (admiral, ship) = coroutineScope {
-               Admiral.get(admiralId)!! to ShipInDrydock.get(shipId)!!
+               val admiral = async { Admiral.get(admiralId)!! }
+               val ship = async { ShipInDrydock.get(shipId)!! }
+               admiral.await() to ship.await()
        }
        
        if (admiral.owningUser != currentUser) throw ForbiddenException()