From 3ac085573f67a3d31e8202a687a9fdc9555702d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miko=C5=82aj=20Pich?= Date: Sun, 12 Apr 2020 18:55:16 +0200 Subject: [PATCH] Show all known adfslight registers in register list (#766) --- .../modules/login/form/LoginFormFragment.kt | 34 +- .../modules/login/form/LoginFormPresenter.kt | 23 +- .../ui/modules/login/form/LoginFormView.kt | 10 - .../login/recover/LoginRecoverFragment.kt | 28 +- .../login/recover/LoginRecoverPresenter.kt | 18 +- .../modules/login/recover/LoginRecoverView.kt | 10 +- .../main/res/layout/fragment_login_form.xml | 36 +- .../res/layout/fragment_login_recover.xml | 36 +- app/src/main/res/values/api_hosts.xml | 35 +- app/src/main/res/values/api_symbols.xml | 358 +++++++++++++++++- .../login/form/LoginFormPresenterTest.kt | 4 - 11 files changed, 397 insertions(+), 195 deletions(-) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt index 999ec22a..058e702e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormFragment.kt @@ -7,7 +7,6 @@ import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.view.ViewGroup -import android.widget.ArrayAdapter import androidx.core.widget.doOnTextChanged import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Student @@ -46,9 +45,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override val formHostSymbol: String get() = hostSymbols.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty() - override val formSymbolValue: String - get() = loginFormSymbol.text.toString() - override val nicknameLabel: String get() = getString(R.string.login_nickname_hint) @@ -77,7 +73,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormUsername.doOnTextChanged { _, _, _, _ -> presenter.onUsernameTextChanged() } loginFormPass.doOnTextChanged { _, _, _, _ -> presenter.onPassTextChanged() } - loginFormSymbol.doOnTextChanged { _, _, _, _ -> presenter.onSymbolTextChanged() } loginFormHost.setOnItemClickListener { _, _, _, _ -> presenter.onHostSelected() } loginFormSignIn.setOnClickListener { presenter.onSignInClick() } loginFormAdvancedButton.setOnClickListener { presenter.onAdvancedLoginClick() } @@ -86,9 +81,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormContactEmail.setOnClickListener { presenter.onEmailClick() } loginFormRecoverLink.setOnClickListener { presenter.onRecoverClick() } loginFormPass.setOnEditorDoneSignIn { loginFormSignIn.callOnClick() } - loginFormSymbol.setOnEditorDoneSignIn { loginFormSignIn.callOnClick() } - - loginFormSymbol.setAdapter(ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, resources.getStringArray(R.array.symbols_values))) with(loginFormHost) { setText(hostKeys.getOrNull(0).orEmpty()) @@ -102,18 +94,10 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormPass.setText(pass) } - override fun setSymbol(symbol: String) { - loginFormSymbol.setText(symbol) - } - override fun setUsernameLabel(label: String) { loginFormUsernameLayout.hint = label } - override fun showSymbol(show: Boolean) { - loginFormSymbolLayout.visibility = if (show) VISIBLE else GONE - } - override fun setErrorUsernameRequired() { with(loginFormUsernameLayout) { requestFocus() @@ -135,13 +119,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView { } } - override fun setErrorSymbolRequired(focus: Boolean) { - with(loginFormSymbolLayout) { - if (focus) requestFocus() - error = getString(R.string.login_symbol_helper) - } - } - override fun setErrorPassRequired(focus: Boolean) { with(loginFormPassLayout) { if (focus) requestFocus() @@ -171,10 +148,6 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormPassLayout.error = null } - override fun clearSymbolError() { - loginFormSymbolLayout.error = null - } - override fun showSoftKeyboard() { activity?.showSoftInput() } @@ -227,10 +200,7 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override fun onResume() { super.onResume() - with(presenter) { - updateUsernameLabel() - updateSymbolInputVisibility() - } + presenter.updateUsernameLabel() } override fun openEmail(lastError: String) { @@ -242,7 +212,7 @@ class LoginFormFragment : BaseFragment(), LoginFormView { "${appInfo.systemManufacturer} ${appInfo.systemModel}", appInfo.systemVersion.toString(), appInfo.versionName, - "$formHostValue/$formSymbolValue", + "$formHostValue/$formHostSymbol", lastError ) ) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt index e566d3d6..997e1e85 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenter.kt @@ -48,9 +48,7 @@ class LoginFormPresenter @Inject constructor( if (formHostValue.contains("fakelog")) { setCredentials("jan@fakelog.cf", "jan123") } - setSymbol(formHostSymbol) updateUsernameLabel() - updateSymbolInputVisibility() } } @@ -60,12 +58,6 @@ class LoginFormPresenter @Inject constructor( } } - fun updateSymbolInputVisibility() { - view?.run { - showSymbol("adfs" in formHostValue) - } - } - fun onPassTextChanged() { view?.clearPassError() } @@ -74,17 +66,13 @@ class LoginFormPresenter @Inject constructor( view?.clearUsernameError() } - fun onSymbolTextChanged() { - view?.clearSymbolError() - } - fun onSignInClick() { val email = view?.formUsernameValue.orEmpty().trim() val password = view?.formPassValue.orEmpty().trim() val host = view?.formHostValue.orEmpty().trim() - val symbol = view?.formSymbolValue.orEmpty().trim() + val symbol = view?.formHostSymbol.orEmpty().trim() - if (!validateCredentials(email, password, host, symbol)) return + if (!validateCredentials(email, password, host)) return disposable.add(studentRepository.getStudentsScrapper(email, password, host, symbol) .subscribeOn(schedulers.backgroundThread) @@ -128,7 +116,7 @@ class LoginFormPresenter @Inject constructor( view?.onRecoverClick() } - private fun validateCredentials(login: String, password: String, host: String, symbol: String): Boolean { + private fun validateCredentials(login: String, password: String, host: String): Boolean { var isCorrect = true if (login.isEmpty()) { @@ -156,11 +144,6 @@ class LoginFormPresenter @Inject constructor( isCorrect = false } - if ("standard" !in host && symbol.isBlank()) { - view?.setErrorSymbolRequired(focus = isCorrect) - isCorrect = false - } - return isCorrect } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt index 8e46f93f..6506fa88 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/form/LoginFormView.kt @@ -15,28 +15,20 @@ interface LoginFormView : BaseView { val formHostSymbol: String - val formSymbolValue: String - val nicknameLabel: String val emailLabel: String fun setCredentials(username: String, pass: String) - fun setSymbol(symbol: String) - fun setUsernameLabel(label: String) - fun showSymbol(show: Boolean) - fun setErrorUsernameRequired() fun setErrorLoginRequired() fun setErrorEmailRequired() - fun setErrorSymbolRequired(focus: Boolean) - fun setErrorPassRequired(focus: Boolean) fun setErrorPassInvalid(focus: Boolean) @@ -47,8 +39,6 @@ interface LoginFormView : BaseView { fun clearPassError() - fun clearSymbolError() - fun showSoftKeyboard() fun hideSoftKeyboard() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverFragment.kt index 6e8a83c7..1bff4926 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverFragment.kt @@ -11,7 +11,6 @@ import android.view.ViewGroup import android.webkit.JavascriptInterface import android.webkit.WebView import android.webkit.WebViewClient -import android.widget.ArrayAdapter import androidx.core.widget.doOnTextChanged import io.github.wulkanowy.R import io.github.wulkanowy.ui.base.BaseFragment @@ -35,15 +34,17 @@ class LoginRecoverFragment : BaseFragment(), LoginRecoverView { private lateinit var hostValues: Array + private lateinit var hostSymbols: Array + override val recoverHostValue: String get() = hostValues.getOrNull(hostKeys.indexOf(loginRecoverHost.text.toString())).orEmpty() + override val formHostSymbol: String + get() = hostSymbols.getOrNull(hostKeys.indexOf(loginRecoverHost.text.toString())).orEmpty() + override val recoverNameValue: String get() = loginRecoverName.text.toString().trim() - override val recoverSymbolValue: String - get() = loginRecoverSymbol.text.toString().trim() - override val emailHintString: String get() = getString(R.string.login_email_hint) @@ -66,17 +67,15 @@ class LoginRecoverFragment : BaseFragment(), LoginRecoverView { loginRecoverWebView.setBackgroundColor(Color.TRANSPARENT) hostKeys = resources.getStringArray(R.array.hosts_keys) hostValues = resources.getStringArray(R.array.hosts_values) + hostSymbols = resources.getStringArray(R.array.hosts_symbols) loginRecoverName.doOnTextChanged { _, _, _, _ -> presenter.onNameTextChanged() } - loginRecoverSymbol.doOnTextChanged { _, _, _, _ -> presenter.onSymbolTextChanged() } loginRecoverHost.setOnItemClickListener { _, _, _, _ -> presenter.onHostSelected() } loginRecoverButton.setOnClickListener { presenter.onRecoverClick() } loginRecoverErrorRetry.setOnClickListener { presenter.onRecoverClick() } loginRecoverErrorDetails.setOnClickListener { presenter.onDetailsClick() } loginRecoverLogin.setOnClickListener { (activity as LoginActivity).switchView(0) } - loginRecoverSymbol.setAdapter(ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, resources.getStringArray(R.array.symbols_values))) - with(loginRecoverHost) { setText(hostKeys.getOrNull(0).orEmpty()) setAdapter(LoginSymbolAdapter(context, R.layout.support_simple_spinner_dropdown_item, hostKeys)) @@ -106,25 +105,10 @@ class LoginRecoverFragment : BaseFragment(), LoginRecoverView { } } - override fun setSymbolError(focus: Boolean) { - with(loginRecoverSymbolLayout) { - if (focus) requestFocus() - error = getString(R.string.login_field_required) - } - } - override fun clearUsernameError() { loginRecoverNameLayout.error = null } - override fun clearSymbolError() { - loginRecoverSymbolLayout.error = null - } - - override fun showSymbol(show: Boolean) { - loginRecoverSymbolLayout.visibility = if (show) VISIBLE else GONE - } - override fun showProgress(show: Boolean) { loginRecoverProgress.visibility = if (show) VISIBLE else GONE } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverPresenter.kt index 7016d173..b292ded5 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverPresenter.kt @@ -34,10 +34,6 @@ class LoginRecoverPresenter @Inject constructor( view?.clearUsernameError() } - fun onSymbolTextChanged() { - view?.clearSymbolError() - } - fun onHostSelected() { view?.run { if ("fakelog" in recoverHostValue) setDefaultCredentials("jan@fakelog.cf") @@ -48,7 +44,6 @@ class LoginRecoverPresenter @Inject constructor( fun updateFields() { view?.run { - showSymbol("adfs" in recoverHostValue) setUsernameHint(if ("standard" in recoverHostValue) emailHintString else loginPeselEmailHintString) } } @@ -56,9 +51,9 @@ class LoginRecoverPresenter @Inject constructor( fun onRecoverClick() { val username = view?.recoverNameValue.orEmpty() val host = view?.recoverHostValue.orEmpty() - val symbol = view?.recoverSymbolValue.orEmpty() + val symbol = view?.formHostSymbol.orEmpty() - if (!validateInput(username, host, symbol)) return + if (!validateInput(username, host)) return disposable.add(recoverRepository.getReCaptchaSiteKey(host, symbol.ifBlank { "Default" }) .subscribeOn(schedulers.backgroundThread) @@ -80,7 +75,7 @@ class LoginRecoverPresenter @Inject constructor( }) } - private fun validateInput(username: String, host: String, symbol: String): Boolean { + private fun validateInput(username: String, host: String): Boolean { var isCorrect = true if (username.isEmpty()) { @@ -93,18 +88,13 @@ class LoginRecoverPresenter @Inject constructor( isCorrect = false } - if ("adfs" in host && symbol.isBlank()) { - view?.setSymbolError(focus = isCorrect) - isCorrect = false - } - return isCorrect } fun onReCaptchaVerified(reCaptchaResponse: String) { val username = view?.recoverNameValue.orEmpty() val host = view?.recoverHostValue.orEmpty() - val symbol = view?.recoverSymbolValue.ifNullOrBlank { "Default" } + val symbol = view?.formHostSymbol.ifNullOrBlank { "Default" } with(disposable) { clear() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverView.kt index 693c52a3..2e21d335 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/recover/LoginRecoverView.kt @@ -6,9 +6,9 @@ interface LoginRecoverView : BaseView { val recoverHostValue: String - val recoverNameValue: String + val formHostSymbol: String - val recoverSymbolValue: String + val recoverNameValue: String val emailHintString: String @@ -22,18 +22,12 @@ interface LoginRecoverView : BaseView { fun clearUsernameError() - fun clearSymbolError() - - fun showSymbol(show: Boolean) - fun setErrorNameRequired() fun setUsernameHint(hint: String) fun setUsernameError(message: String) - fun setSymbolError(focus: Boolean) - fun showSoftKeyboard() fun hideSoftKeyboard() diff --git a/app/src/main/res/layout/fragment_login_form.xml b/app/src/main/res/layout/fragment_login_form.xml index 99a24802..ba261e09 100644 --- a/app/src/main/res/layout/fragment_login_form.xml +++ b/app/src/main/res/layout/fragment_login_form.xml @@ -202,7 +202,7 @@ android:layout_marginRight="24dp" android:hint="@string/login_host_hint" android:orientation="vertical" - app:layout_constraintBottom_toTopOf="@+id/loginFormSymbolLayout" + app:layout_constraintBottom_toTopOf="@+id/loginFormAdvancedButton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/loginFormRecoverLink"> @@ -215,36 +215,6 @@ tools:ignore="Deprecated,LabelFor" /> - - - - - + app:layout_constraintTop_toBottomOf="@+id/loginFormHostLayout" /> @@ -105,7 +106,7 @@ android:layout_marginRight="24dp" android:hint="@string/login_host_hint" android:orientation="vertical" - app:layout_constraintBottom_toTopOf="@+id/loginRecoverSymbolLayout" + app:layout_constraintBottom_toTopOf="@+id/loginRecoverButton" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/loginRecoverNameLayout"> @@ -118,46 +119,17 @@ tools:ignore="Deprecated,LabelFor" /> - - - - -