From aacf30ebb7951b72ca372c95e8cda018bc8b02d0 Mon Sep 17 00:00:00 2001 From: TheSaminator Date: Thu, 17 Feb 2022 14:57:05 -0500 Subject: [PATCH] Fix ship selling (hopefully) --- .../kotlin/starshipfights/auth/providers.kt | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/jvmMain/kotlin/starshipfights/auth/providers.kt b/src/jvmMain/kotlin/starshipfights/auth/providers.kt index 87ba140..20bdce2 100644 --- a/src/jvmMain/kotlin/starshipfights/auth/providers.kt +++ b/src/jvmMain/kotlin/starshipfights/auth/providers.kt @@ -188,6 +188,7 @@ interface AuthProvider { val newName = formParams["name"]?.takeIf { it.isNotBlank() && it.length <= SHIP_NAME_MAX_LENGTH } ?: redirect("/admiral/${admiralId}/manage") ShipInDrydock.set(shipId, setValue(ShipInDrydock::name, newName)) + redirect("/admiral/${admiralId}/manage") } @@ -215,9 +216,9 @@ interface AuthProvider { if (ship.status != DrydockStatus.Ready) redirect("/admiral/${admiralId}/manage") if (ship.shipType.weightClass.isUnique) redirect("/admiral/${admiralId}/manage") - launch { ShipInDrydock.del(shipId) } - launch { - Admiral.set(admiralId, inc(Admiral::money, ship.shipType.weightClass.sellPrice)) + coroutineScope { + launch { ShipInDrydock.del(shipId) } + launch { Admiral.set(admiralId, inc(Admiral::money, ship.shipType.weightClass.sellPrice)) } } redirect("/admiral/${admiralId}/manage") @@ -262,9 +263,9 @@ interface AuthProvider { owningAdmiral = admiralId ) - launch { ShipInDrydock.put(newShip) } - launch { - Admiral.set(admiralId, inc(Admiral::money, -shipType.weightClass.buyPrice)) + coroutineScope { + launch { ShipInDrydock.put(newShip) } + launch { Admiral.set(admiralId, inc(Admiral::money, -shipType.weightClass.buyPrice)) } } redirect("/admiral/${admiralId}/manage") @@ -283,8 +284,11 @@ interface AuthProvider { if (admiral.owningUser != currentUser) throw ForbiddenException() - Admiral.del(admiralId) - ShipInDrydock.remove(ShipInDrydock::owningAdmiral eq admiralId) + coroutineScope { + launch { Admiral.del(admiralId) } + launch { ShipInDrydock.remove(ShipInDrydock::owningAdmiral eq admiralId) } + } + redirect("/me") } @@ -570,8 +574,10 @@ class ProductionAuthProvider(val discordLogin: DiscordLogin) : AuthProvider { expiration = Instant.now().plus(1, ChronoUnit.HOURS) ) - launch { User.put(user) } - launch { UserSession.put(userSession) } + coroutineScope { + launch { User.put(user) } + launch { UserSession.put(userSession) } + } call.sessions.set(userSession.id) redirect(redirectTo) -- 2.25.1