Disable input elements in LoginFragment and AddServerFragment when loading
Fix a bug when adding a server keeps loading Fix "Invalid username or password" error message
This commit is contained in:
parent
7b85df6e69
commit
8f117ccacb
4 changed files with 53 additions and 12 deletions
|
@ -97,15 +97,26 @@ class AddServerFragment : Fragment() {
|
||||||
private fun bindUiStateNormal() {
|
private fun bindUiStateNormal() {
|
||||||
binding.buttonConnect.isEnabled = true
|
binding.buttonConnect.isEnabled = true
|
||||||
binding.progressCircular.isVisible = false
|
binding.progressCircular.isVisible = false
|
||||||
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
|
(binding.editTextServerAddress as AppCompatEditText).isEnabled = true
|
||||||
|
} else {
|
||||||
|
binding.editTextServerAddressLayout!!.isEnabled = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun bindUiStateError(uiState: AddServerViewModel.UiState.Error) {
|
private fun bindUiStateError(uiState: AddServerViewModel.UiState.Error) {
|
||||||
binding.buttonConnect.isEnabled = true
|
binding.buttonConnect.isEnabled = true
|
||||||
binding.progressCircular.isVisible = false
|
binding.progressCircular.isVisible = false
|
||||||
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
(binding.editTextServerAddress as AppCompatEditText).error = uiState.message
|
(binding.editTextServerAddress as AppCompatEditText).apply {
|
||||||
|
error = uiState.message
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
binding.editTextServerAddressLayout!!.error = uiState.message
|
binding.editTextServerAddressLayout!!.apply {
|
||||||
|
error = uiState.message
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,9 +124,15 @@ class AddServerFragment : Fragment() {
|
||||||
binding.buttonConnect.isEnabled = false
|
binding.buttonConnect.isEnabled = false
|
||||||
binding.progressCircular.isVisible = true
|
binding.progressCircular.isVisible = true
|
||||||
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
(binding.editTextServerAddress as AppCompatEditText).error = null
|
(binding.editTextServerAddress as AppCompatEditText).apply {
|
||||||
|
error = null
|
||||||
|
isEnabled = false
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
binding.editTextServerAddressLayout!!.error = null
|
binding.editTextServerAddressLayout!!.apply {
|
||||||
|
error = null
|
||||||
|
isEnabled = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -97,15 +97,30 @@ class LoginFragment : Fragment() {
|
||||||
private fun bindUiStateNormal() {
|
private fun bindUiStateNormal() {
|
||||||
binding.buttonLogin.isEnabled = true
|
binding.buttonLogin.isEnabled = true
|
||||||
binding.progressCircular.isVisible = false
|
binding.progressCircular.isVisible = false
|
||||||
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
|
(binding.editTextUsername as AppCompatEditText).isEnabled = true
|
||||||
|
(binding.editTextPassword as AppCompatEditText).isEnabled = true
|
||||||
|
} else {
|
||||||
|
binding.editTextUsernameLayout!!.isEnabled = true
|
||||||
|
binding.editTextPasswordLayout!!.isEnabled = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun bindUiStateError(uiState: LoginViewModel.UiState.Error) {
|
private fun bindUiStateError(uiState: LoginViewModel.UiState.Error) {
|
||||||
binding.buttonLogin.isEnabled = true
|
binding.buttonLogin.isEnabled = true
|
||||||
binding.progressCircular.isVisible = false
|
binding.progressCircular.isVisible = false
|
||||||
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
(binding.editTextUsername as AppCompatEditText).error = uiState.message
|
(binding.editTextUsername as AppCompatEditText).apply {
|
||||||
|
error = uiState.message
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
|
(binding.editTextPassword as AppCompatEditText).isEnabled = true
|
||||||
} else {
|
} else {
|
||||||
binding.editTextUsernameLayout!!.error = uiState.message
|
binding.editTextUsernameLayout!!.apply {
|
||||||
|
error = uiState.message
|
||||||
|
isEnabled = true
|
||||||
|
}
|
||||||
|
binding.editTextPasswordLayout!!.isEnabled = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -113,9 +128,17 @@ class LoginFragment : Fragment() {
|
||||||
binding.buttonLogin.isEnabled = false
|
binding.buttonLogin.isEnabled = false
|
||||||
binding.progressCircular.isVisible = true
|
binding.progressCircular.isVisible = true
|
||||||
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
if (uiModeManager.currentModeType == Configuration.UI_MODE_TYPE_TELEVISION) {
|
||||||
(binding.editTextUsername as AppCompatEditText).error = null
|
(binding.editTextUsername as AppCompatEditText).apply {
|
||||||
|
error = null
|
||||||
|
isEnabled = false
|
||||||
|
}
|
||||||
|
(binding.editTextPassword as AppCompatEditText).isEnabled = false
|
||||||
} else {
|
} else {
|
||||||
binding.editTextUsernameLayout!!.error = null
|
binding.editTextUsernameLayout!!.apply {
|
||||||
|
error = null
|
||||||
|
isEnabled = false
|
||||||
|
}
|
||||||
|
binding.editTextPasswordLayout!!.isEnabled = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -95,7 +95,10 @@ constructor(
|
||||||
|
|
||||||
recommended
|
recommended
|
||||||
.onCompletion {
|
.onCompletion {
|
||||||
if (serverFound) return@onCompletion
|
if (serverFound) {
|
||||||
|
serverFound = false
|
||||||
|
return@onCompletion
|
||||||
|
}
|
||||||
when {
|
when {
|
||||||
goodServers.isNotEmpty() -> {
|
goodServers.isNotEmpty() -> {
|
||||||
val issuesString = createIssuesString(goodServers.first())
|
val issuesString = createIssuesString(goodServers.first())
|
||||||
|
|
|
@ -18,7 +18,6 @@ import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.jellyfin.sdk.model.api.AuthenticateUserByName
|
import org.jellyfin.sdk.model.api.AuthenticateUserByName
|
||||||
import timber.log.Timber
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
import kotlin.Exception
|
import kotlin.Exception
|
||||||
|
|
||||||
|
@ -111,9 +110,8 @@ constructor(
|
||||||
_uiState.emit(UiState.Normal)
|
_uiState.emit(UiState.Normal)
|
||||||
_navigateToMain.emit(true)
|
_navigateToMain.emit(true)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Timber.e(e)
|
|
||||||
val message =
|
val message =
|
||||||
if (e.cause?.message?.contains("401") == true) resources.getString(R.string.login_error_wrong_username_password) else resources.getString(
|
if (e.message?.contains("401") == true) resources.getString(R.string.login_error_wrong_username_password) else resources.getString(
|
||||||
R.string.unknown_error
|
R.string.unknown_error
|
||||||
)
|
)
|
||||||
_uiState.emit(UiState.Error(message))
|
_uiState.emit(UiState.Error(message))
|
||||||
|
|
Loading…
Reference in a new issue