Login improvements (#1645)

This commit is contained in:
Mikołaj Pich
2021-11-16 22:05:00 +01:00
committed by GitHub
parent 39327ff3ea
commit 981d6d559c
14 changed files with 62 additions and 26 deletions

View File

@ -205,7 +205,7 @@ class LoginAdvancedFragment :
override fun setErrorPassIncorrect(message: String?) {
with(binding.loginFormPassLayout) {
requestFocus()
error = message ?: getString(R.string.login_incorrect_password)
error = message ?: getString(R.string.login_incorrect_password_default)
}
}

View File

@ -152,12 +152,11 @@ class LoginFormFragment : BaseFragment<FragmentLoginFormBinding>(R.layout.fragme
}
override fun setErrorPassIncorrect(message: String?) {
val error = message ?: getString(R.string.login_incorrect_password_default)
with(binding) {
loginFormUsernameLayout.error = " "
loginFormPassLayout.error = " "
loginFormErrorBox.text = getString(R.string.login_incorrect_password, error)
loginFormHostLayout.error = " "
loginFormErrorBox.text = message ?: getString(R.string.login_incorrect_password_default)
loginFormErrorBox.isVisible = true
}
}
@ -178,6 +177,11 @@ class LoginFormFragment : BaseFragment<FragmentLoginFormBinding>(R.layout.fragme
binding.loginFormErrorBox.isVisible = false
}
override fun clearHostError() {
binding.loginFormHostLayout.error = null
binding.loginFormErrorBox.isVisible = false
}
override fun showSoftKeyboard() {
activity?.showSoftInput()
}

View File

@ -30,7 +30,7 @@ class LoginFormPresenter @Inject constructor(
showVersion()
loginErrorHandler.onBadCredentials = {
setErrorPassIncorrect(it)
setErrorPassIncorrect(it.takeIf { !it.isNullOrBlank() })
showSoftKeyboard()
Timber.i("Entered wrong username or password")
}
@ -49,6 +49,7 @@ class LoginFormPresenter @Inject constructor(
view?.apply {
clearPassError()
clearUsernameError()
clearHostError()
if (formHostValue.contains("fakelog")) {
setCredentials("jan@fakelog.cf", "jan123")
}
@ -75,7 +76,10 @@ class LoginFormPresenter @Inject constructor(
val usernameHost = username.substringAfter("@")
hosts[usernameHost]?.let {
view?.setHost(it)
view?.run {
setHost(it)
clearHostError()
}
}
}
}

View File

@ -45,6 +45,8 @@ interface LoginFormView : BaseView {
fun clearPassError()
fun clearHostError()
fun showSoftKeyboard()
fun hideSoftKeyboard()

View File

@ -7,6 +7,7 @@ import android.view.View.VISIBLE
import android.view.inputmethod.EditorInfo.IME_ACTION_DONE
import android.view.inputmethod.EditorInfo.IME_NULL
import android.widget.ArrayAdapter
import androidx.core.text.parseAsHtml
import androidx.core.widget.doOnTextChanged
import dagger.hilt.android.AndroidEntryPoint
import io.github.wulkanowy.R
@ -58,7 +59,13 @@ class LoginSymbolFragment :
setOnEditorActionListener { _, id, _ ->
if (id == IME_ACTION_DONE || id == IME_NULL) loginSymbolSignIn.callOnClick() else false
}
setAdapter(ArrayAdapter(context, android.R.layout.simple_list_item_1, resources.getStringArray(R.array.symbols_values)))
setAdapter(
ArrayAdapter(
context,
android.R.layout.simple_list_item_1,
resources.getStringArray(R.array.symbols_values)
)
)
}
}
}
@ -67,6 +74,10 @@ class LoginSymbolFragment :
presenter.onParentInitSymbolView(loginData)
}
override fun setLoginToHeading(login: String) {
binding.loginSymbolHeader.text = getString(R.string.login_header_symbol, login).parseAsHtml()
}
override fun setErrorSymbolIncorrect() {
binding.loginSymbolNameLayout.apply {
requestFocus()
@ -127,7 +138,10 @@ class LoginSymbolFragment :
}
override fun openFaqPage() {
context?.openInternetBrowser("https://wulkanowy.github.io/czesto-zadawane-pytania/co-to-jest-symbol", ::showMessage)
context?.openInternetBrowser(
"https://wulkanowy.github.io/czesto-zadawane-pytania/co-to-jest-symbol",
::showMessage
)
}
override fun openEmail(host: String, lastError: String) {
@ -135,7 +149,8 @@ class LoginSymbolFragment :
chooserTitle = requireContext().getString(R.string.login_email_intent_title),
email = "wulkanowyinc@gmail.com",
subject = requireContext().getString(R.string.login_email_subject),
body = requireContext().getString(R.string.login_email_text,
body = requireContext().getString(
R.string.login_email_text,
"${appInfo.systemManufacturer} ${appInfo.systemModel}",
appInfo.systemVersion.toString(),
appInfo.versionName,

View File

@ -32,6 +32,16 @@ class LoginSymbolPresenter @Inject constructor(
}
if (savedLoginData is Triple<*, *, *>) {
loginData = savedLoginData as Triple<String, String, String>
view.setLoginToHeading(requireNotNull(loginData?.first))
}
}
fun onParentInitSymbolView(loginData: Triple<String, String, String>) {
this.loginData = loginData
view?.apply {
setLoginToHeading(loginData.first)
clearAndFocusSymbol()
showSoftKeyboard()
}
}
@ -47,7 +57,14 @@ class LoginSymbolPresenter @Inject constructor(
return
}
flowWithResource { studentRepository.getStudentsScrapper(loginData!!.first, loginData!!.second, loginData!!.third, symbol) }.onEach {
flowWithResource {
studentRepository.getStudentsScrapper(
email = loginData!!.first,
password = loginData!!.second,
scrapperBaseUrl = loginData!!.third,
symbol = symbol,
)
}.onEach {
when (it.status) {
Status.LOADING -> view?.run {
Timber.i("Login with symbol started")
@ -98,14 +115,6 @@ class LoginSymbolPresenter @Inject constructor(
}.launch("login")
}
fun onParentInitSymbolView(loginData: Triple<String, String, String>) {
this.loginData = loginData
view?.apply {
clearAndFocusSymbol()
showSoftKeyboard()
}
}
fun onFaqClick() {
view?.openFaqPage()
}

View File

@ -9,6 +9,8 @@ interface LoginSymbolView : BaseView {
fun initView()
fun setLoginToHeading(login: String)
fun setErrorSymbolIncorrect()
fun setErrorSymbolRequire()