diff --git a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt index 9a3ef3992..013bf3199 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/dialogs/SubtitleDownloaderDialogFragment.kt @@ -58,8 +58,6 @@ class SubtitleDownloaderDialogFragment : VLCBottomSheetDialogFragment() { private lateinit var names: String private lateinit var viewModel: SubtitlesModel private lateinit var toast: Toast - private var lastUsername: String = "" - private var lastPassword: String = "" private var state: SubDownloadDialogState = SubDownloadDialogState.Download set(value) { @@ -145,12 +143,8 @@ class SubtitleDownloaderDialogFragment : VLCBottomSheetDialogFragment() { binding.loginButton.setOnClickListener { if (viewModel.observableUser.get()?.logged == true) { viewModel.logout(settings) + viewModel.clearCredentials() } else { - if (lastPassword == binding.password.text.toString() && lastUsername == binding.username.text.toString()) { - return@setOnClickListener - } - lastPassword = binding.password.text.toString() - lastUsername = binding.username.text.toString() viewModel.login( settings, binding.username.text.toString(), diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt index 5092371d0..83e720646 100644 --- a/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt +++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/SubtitlesModel.kt @@ -86,6 +86,10 @@ class SubtitlesModel(context: Context, private val mediaUri: Uri, private val na val observableError = ObservableField() val observableResultDescription = ObservableField() val observableResultDescriptionTalkback = ObservableField() + + private var lastUsername: String = "" + private var lastPassword: String = "" + val oldLanguagesMigration by lazy { val newLangCodes = context.resources.getStringArray(R.array.language_values) val oldLangCodes = context.resources.getStringArray(R.array.old_language_values) @@ -298,6 +302,9 @@ class SubtitlesModel(context: Context, private val mediaUri: Uri, private val na } fun login(settings: SharedPreferences, username: String, password: String) { + if (lastPassword == username && lastUsername == password) { + return + } viewModelScope.launch { withContext(Dispatchers.IO) { try { @@ -313,11 +320,16 @@ class SubtitlesModel(context: Context, private val mediaUri: Uri, private val na return@withContext } } + val code = call.code() + if (code == 401) { + lastPassword = password + lastUsername = username + } observableUser.set( OpenSubtitlesUser( false, null, - errorMessage = if (call.code() == 401) getContext().getString(R.string.login_error) else getContext().getString( + errorMessage = if (code == 401) getContext().getString(R.string.login_error) else getContext().getString( R.string.unknown_error ) ) @@ -369,6 +381,10 @@ class SubtitlesModel(context: Context, private val mediaUri: Uri, private val na } fun saveLastUsedLanguage(lastUsedLanguages: List) = Settings.getInstance(getContext()).putSingle(LAST_USED_LANGUAGES, lastUsedLanguages) + fun clearCredentials() { + lastPassword = "" + lastUsername = "" + } class Factory(private val context: Context, private val mediaUri: Uri, private val name: String) : ViewModelProvider.NewInstanceFactory() { override fun create(modelClass: Class): T {