mirror of
https://github.com/yairm210/Unciv.git
synced 2025-03-10 12:51:16 +07:00
Resolved #10818 - Updating server URL allows checking connection immediately
This commit is contained in:
parent
869154cc73
commit
bd1a3d4d2a
@ -11,14 +11,11 @@ import com.unciv.logic.multiplayer.storage.ApiV2FileStorageWrapper
|
||||
import com.unciv.logic.multiplayer.storage.MultiplayerFileNotFoundException
|
||||
import com.unciv.utils.Concurrency
|
||||
import com.unciv.utils.Log
|
||||
import io.ktor.client.call.body
|
||||
import io.ktor.client.plugins.websocket.ClientWebSocketSession
|
||||
import io.ktor.client.request.get
|
||||
import io.ktor.http.isSuccess
|
||||
import io.ktor.websocket.Frame
|
||||
import io.ktor.websocket.FrameType
|
||||
import io.ktor.websocket.close
|
||||
import io.ktor.websocket.readText
|
||||
import io.ktor.client.call.*
|
||||
import io.ktor.client.plugins.websocket.*
|
||||
import io.ktor.client.request.*
|
||||
import io.ktor.http.*
|
||||
import io.ktor.websocket.*
|
||||
import kotlinx.coroutines.CancellationException
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.cancel
|
||||
@ -35,6 +32,7 @@ import java.time.Instant
|
||||
import java.util.Random
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.atomic.AtomicReference
|
||||
import kotlin.collections.set
|
||||
|
||||
/**
|
||||
* Main class to interact with multiplayer servers implementing [ApiVersion.ApiV2]
|
||||
@ -569,7 +567,7 @@ class ApiV2(private val baseUrl: String) : ApiV2Wrapper(baseUrl), Disposable {
|
||||
}
|
||||
val success = auth.login(
|
||||
UncivGame.Current.settings.multiplayer.userName,
|
||||
UncivGame.Current.settings.multiplayer.passwords[UncivGame.Current.onlineMultiplayer.multiplayerServer.serverUrl] ?: "",
|
||||
UncivGame.Current.settings.multiplayer.passwords[UncivGame.Current.onlineMultiplayer.multiplayerServer.getServerUrl()] ?: "",
|
||||
suppress = true
|
||||
)
|
||||
if (success) {
|
||||
|
@ -20,11 +20,11 @@ import com.unciv.logic.multiplayer.ServerFeatureSet
|
||||
*/
|
||||
@Suppress("RedundantSuspendModifier") // Methods can take a long time, so force users to use them in a coroutine to not get ANRs on Android
|
||||
class OnlineMultiplayerServer(
|
||||
fileStorageIdentifier: String? = null,
|
||||
val fileStorageIdentifier: String? = null,
|
||||
private var authenticationHeader: Map<String, String>? = null
|
||||
) {
|
||||
internal var featureSet = ServerFeatureSet()
|
||||
val serverUrl = fileStorageIdentifier ?: UncivGame.Current.settings.multiplayer.server
|
||||
fun getServerUrl() = fileStorageIdentifier ?: UncivGame.Current.settings.multiplayer.server
|
||||
|
||||
fun fileStorage(): FileStorage {
|
||||
val authHeader = if (authenticationHeader == null) {
|
||||
@ -32,9 +32,9 @@ class OnlineMultiplayerServer(
|
||||
mapOf("Authorization" to settings.getAuthHeader())
|
||||
} else authenticationHeader
|
||||
|
||||
return if (serverUrl == Constants.dropboxMultiplayerServer) DropBox
|
||||
return if (getServerUrl() == Constants.dropboxMultiplayerServer) DropBox
|
||||
else UncivServerFileStorage.apply {
|
||||
serverUrl = this@OnlineMultiplayerServer.serverUrl
|
||||
serverUrl = this@OnlineMultiplayerServer.getServerUrl()
|
||||
this.authHeader = authHeader
|
||||
}
|
||||
}
|
||||
@ -45,7 +45,7 @@ class OnlineMultiplayerServer(
|
||||
*/
|
||||
fun checkServerStatus(): Boolean {
|
||||
var statusOk = false
|
||||
SimpleHttp.sendGetRequest("${serverUrl}/isalive") { success, result, _ ->
|
||||
SimpleHttp.sendGetRequest("${getServerUrl()}/isalive") { success, result, _ ->
|
||||
statusOk = success
|
||||
if (result.isNotEmpty()) {
|
||||
featureSet = try {
|
||||
|
@ -17,11 +17,11 @@ import com.unciv.ui.components.extensions.addSeparator
|
||||
import com.unciv.ui.components.extensions.brighten
|
||||
import com.unciv.ui.components.extensions.format
|
||||
import com.unciv.ui.components.extensions.isEnabled
|
||||
import com.unciv.ui.components.input.onChange
|
||||
import com.unciv.ui.components.input.onClick
|
||||
import com.unciv.ui.components.extensions.toGdxArray
|
||||
import com.unciv.ui.components.extensions.toLabel
|
||||
import com.unciv.ui.components.extensions.toTextButton
|
||||
import com.unciv.ui.components.input.onChange
|
||||
import com.unciv.ui.components.input.onClick
|
||||
import com.unciv.ui.popups.AuthPopup
|
||||
import com.unciv.ui.popups.Popup
|
||||
import com.unciv.ui.popups.options.SettingsSelect.SelectItem
|
||||
@ -151,18 +151,14 @@ private fun addMultiplayerServerOptions(
|
||||
multiplayerServerTextField.text = Gdx.app.clipboard.contents
|
||||
}).colspan(2).row()
|
||||
multiplayerServerTextField.onChange {
|
||||
fixTextFieldUrlOnType(multiplayerServerTextField)
|
||||
// we can't trim on 'fixTextFieldUrlOnType' for reasons
|
||||
settings.multiplayer.server = multiplayerServerTextField.text.trimEnd('/')
|
||||
|
||||
val isCustomServer = OnlineMultiplayer.usesCustomServer()
|
||||
connectionToServerButton.isEnabled = isCustomServer
|
||||
|
||||
for (refreshSelect in toUpdate) refreshSelect.update(isCustomServer)
|
||||
|
||||
if (isCustomServer) {
|
||||
fixTextFieldUrlOnType(multiplayerServerTextField)
|
||||
// we can't trim on 'fixTextFieldUrlOnType' for reasons
|
||||
settings.multiplayer.server = multiplayerServerTextField.text.trimEnd('/')
|
||||
} else {
|
||||
settings.multiplayer.server = multiplayerServerTextField.text
|
||||
}
|
||||
}
|
||||
|
||||
serverIpTable.add(multiplayerServerTextField)
|
||||
|
Loading…
Reference in New Issue
Block a user