ref: async and thread stuff
This commit is contained in:
@@ -9,6 +9,8 @@ import io.ktor.client.request.bearerAuth
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.client.statement.bodyAsText
|
||||
import io.ktor.http.HttpStatusCode
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.coroutineScope
|
||||
import org.json.JSONObject
|
||||
import ru.risdeveau.pixeldragon.baseUrl
|
||||
import ru.risdeveau.pixeldragon.client
|
||||
@@ -58,21 +60,26 @@ suspend fun getRoom(rid: String, joined: Boolean? = null): Room {
|
||||
}
|
||||
}
|
||||
|
||||
val name = getState(rid, "m.room.name", "name")
|
||||
val type = getState(rid, "m.room.create", "type") ?: "m.room"
|
||||
val creator = getState(rid, "m.room.create", "creator")
|
||||
val avatar = getState(rid, "m.room.avatar", "url")
|
||||
return Room(
|
||||
rid,
|
||||
name,
|
||||
type,
|
||||
creator,
|
||||
null,
|
||||
avatar,
|
||||
null,
|
||||
joined ?: isJoined(rid),
|
||||
if (directWith.isNotEmpty()) User.getById(directWith) else null
|
||||
)
|
||||
return coroutineScope {
|
||||
val name = async { getState(rid, "m.room.name", "name") }
|
||||
val type = async { getState(rid, "m.room.create", "type") ?: "m.room" }
|
||||
val creator = async { getState(rid, "m.room.create", "creator") }
|
||||
val avatar = async { getState(rid, "m.room.avatar", "url") }
|
||||
val joined = async { joined ?: isJoined(rid) }
|
||||
val direct = async { if (directWith.isNotEmpty()) User.getById(directWith) else null }
|
||||
|
||||
Room(
|
||||
rid,
|
||||
name.await(),
|
||||
type.await(),
|
||||
creator.await(),
|
||||
null,
|
||||
avatar.await(),
|
||||
null,
|
||||
joined.await(),
|
||||
direct.await()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private suspend fun getState(rid: String, state: String, key: String): String? {
|
||||
|
||||
Reference in New Issue
Block a user