forked from github/wulkanowy-mirror
Add dynamic nick/email in login (#676)
This commit is contained in:
@ -35,8 +35,8 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
else -> "HYBRID"
|
||||
}
|
||||
|
||||
override val formNameValue: String
|
||||
get() = loginFormName.text.toString().trim()
|
||||
override val formUsernameValue: String
|
||||
get() = loginFormUsername.text.toString().trim()
|
||||
|
||||
override val formPassValue: String
|
||||
get() = loginFormPass.text.toString().trim()
|
||||
@ -45,8 +45,8 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
|
||||
private lateinit var hostValues: Array<String>
|
||||
|
||||
override val formHostValue: String?
|
||||
get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString()))
|
||||
override val formHostValue: String
|
||||
get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty()
|
||||
|
||||
override val formPinValue: String
|
||||
get() = loginFormPin.text.toString().trim()
|
||||
@ -57,6 +57,12 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
override val formTokenValue: String
|
||||
get() = loginFormToken.text.toString().trim()
|
||||
|
||||
override val nicknameLabel: String
|
||||
get() = getString(R.string.login_nickname_hint)
|
||||
|
||||
override val emailLabel: String
|
||||
get() = getString(R.string.login_email_hint)
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
return inflater.inflate(R.layout.fragment_login_advanced, container, false)
|
||||
}
|
||||
@ -70,7 +76,7 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
hostKeys = resources.getStringArray(R.array.hosts_keys)
|
||||
hostValues = resources.getStringArray(R.array.hosts_values)
|
||||
|
||||
loginFormName.doOnTextChanged { _, _, _, _ -> presenter.onNameTextChanged() }
|
||||
loginFormUsername.doOnTextChanged { _, _, _, _ -> presenter.onUsernameTextChanged() }
|
||||
loginFormPass.doOnTextChanged { _, _, _, _ -> presenter.onPassTextChanged() }
|
||||
loginFormPin.doOnTextChanged { _, _, _, _ -> presenter.onPinTextChanged() }
|
||||
loginFormSymbol.doOnTextChanged { _, _, _, _ -> presenter.onSymbolTextChanged() }
|
||||
@ -103,16 +109,20 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
}
|
||||
}
|
||||
|
||||
override fun setDefaultCredentials(name: String, pass: String, symbol: String, token: String, pin: String) {
|
||||
loginFormName.setText(name)
|
||||
override fun setDefaultCredentials(username: String, pass: String, symbol: String, token: String, pin: String) {
|
||||
loginFormUsername.setText(username)
|
||||
loginFormPass.setText(pass)
|
||||
loginFormToken.setText(token)
|
||||
loginFormSymbol.setText(symbol)
|
||||
loginFormPin.setText(pin)
|
||||
}
|
||||
|
||||
override fun setErrorNameRequired() {
|
||||
with(loginFormNameLayout) {
|
||||
override fun setUsernameLabel(label: String) {
|
||||
loginFormUsernameLayout.hint = label
|
||||
}
|
||||
|
||||
override fun setErrorUsernameRequired() {
|
||||
with(loginFormUsernameLayout) {
|
||||
requestFocus()
|
||||
error = getString(R.string.login_field_required)
|
||||
}
|
||||
@ -181,8 +191,8 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
}
|
||||
}
|
||||
|
||||
override fun clearNameError() {
|
||||
loginFormNameLayout.error = null
|
||||
override fun clearUsernameError() {
|
||||
loginFormUsernameLayout.error = null
|
||||
}
|
||||
|
||||
override fun clearPassError() {
|
||||
@ -202,7 +212,7 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
}
|
||||
|
||||
override fun showOnlyHybridModeInputs() {
|
||||
loginFormNameLayout.visibility = View.VISIBLE
|
||||
loginFormUsernameLayout.visibility = View.VISIBLE
|
||||
loginFormPassLayout.visibility = View.VISIBLE
|
||||
loginFormHostLayout.visibility = View.VISIBLE
|
||||
loginFormPinLayout.visibility = View.GONE
|
||||
@ -211,7 +221,7 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
}
|
||||
|
||||
override fun showOnlyScrapperModeInputs() {
|
||||
loginFormNameLayout.visibility = View.VISIBLE
|
||||
loginFormUsernameLayout.visibility = View.VISIBLE
|
||||
loginFormPassLayout.visibility = View.VISIBLE
|
||||
loginFormHostLayout.visibility = View.VISIBLE
|
||||
loginFormPinLayout.visibility = View.GONE
|
||||
@ -220,7 +230,7 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
}
|
||||
|
||||
override fun showOnlyMobileApiModeInputs() {
|
||||
loginFormNameLayout.visibility = View.GONE
|
||||
loginFormUsernameLayout.visibility = View.GONE
|
||||
loginFormPassLayout.visibility = View.GONE
|
||||
loginFormHostLayout.visibility = View.GONE
|
||||
loginFormPinLayout.visibility = View.VISIBLE
|
||||
@ -246,12 +256,17 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView {
|
||||
|
||||
override fun notifyParentAccountLogged(students: List<Student>) {
|
||||
(activity as? LoginActivity)?.onFormFragmentAccountLogged(students, Triple(
|
||||
loginFormName.text.toString(),
|
||||
loginFormUsername.text.toString(),
|
||||
loginFormPass.text.toString(),
|
||||
resources.getStringArray(R.array.hosts_values)[1]
|
||||
))
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
presenter.updateUsernameLabel()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
presenter.onDetachView()
|
||||
|
@ -65,13 +65,20 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun updateUsernameLabel() {
|
||||
view?.apply {
|
||||
setUsernameLabel(if ("vulcan" in formHostValue || "fakelog" in formHostValue) emailLabel else nicknameLabel)
|
||||
}
|
||||
}
|
||||
|
||||
fun onHostSelected() {
|
||||
view?.apply {
|
||||
clearPassError()
|
||||
clearNameError()
|
||||
if (formHostValue?.contains("fakelog") == true) {
|
||||
clearUsernameError()
|
||||
if (formHostValue.contains("fakelog")) {
|
||||
setDefaultCredentials("jan@fakelog.cf", "jan123", "powiatwulkanowy", "FK100000", "999999")
|
||||
}
|
||||
updateUsernameLabel()
|
||||
}
|
||||
}
|
||||
|
||||
@ -89,8 +96,8 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
view?.clearPassError()
|
||||
}
|
||||
|
||||
fun onNameTextChanged() {
|
||||
view?.clearNameError()
|
||||
fun onUsernameTextChanged() {
|
||||
view?.clearUsernameError()
|
||||
}
|
||||
|
||||
fun onPinTextChanged() {
|
||||
@ -137,7 +144,7 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
}
|
||||
|
||||
private fun getStudentsAppropriatesToLoginType(): Single<List<Student>> {
|
||||
val email = view?.formNameValue.orEmpty()
|
||||
val email = view?.formUsernameValue.orEmpty()
|
||||
val password = view?.formPassValue.orEmpty()
|
||||
val endpoint = view?.formHostValue.orEmpty()
|
||||
|
||||
@ -153,7 +160,7 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
}
|
||||
|
||||
private fun validateCredentials(): Boolean {
|
||||
val login = view?.formNameValue.orEmpty()
|
||||
val login = view?.formUsernameValue.orEmpty()
|
||||
val password = view?.formPassValue.orEmpty()
|
||||
|
||||
val pin = view?.formPinValue.orEmpty()
|
||||
@ -181,7 +188,7 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
}
|
||||
Sdk.Mode.SCRAPPER -> {
|
||||
if (login.isEmpty()) {
|
||||
view?.setErrorNameRequired()
|
||||
view?.setErrorUsernameRequired()
|
||||
isCorrect = false
|
||||
}
|
||||
|
||||
@ -197,7 +204,7 @@ class LoginAdvancedPresenter @Inject constructor(
|
||||
}
|
||||
Sdk.Mode.HYBRID -> {
|
||||
if (login.isEmpty()) {
|
||||
view?.setErrorNameRequired()
|
||||
view?.setErrorUsernameRequired()
|
||||
isCorrect = false
|
||||
}
|
||||
|
||||
|
@ -5,11 +5,11 @@ import io.github.wulkanowy.ui.base.BaseView
|
||||
|
||||
interface LoginAdvancedView : BaseView {
|
||||
|
||||
val formNameValue: String
|
||||
val formUsernameValue: String
|
||||
|
||||
val formPassValue: String
|
||||
|
||||
val formHostValue: String?
|
||||
val formHostValue: String
|
||||
|
||||
val formLoginType: String
|
||||
|
||||
@ -19,11 +19,17 @@ interface LoginAdvancedView : BaseView {
|
||||
|
||||
val formTokenValue: String
|
||||
|
||||
val nicknameLabel: String
|
||||
|
||||
val emailLabel: String
|
||||
|
||||
fun initView()
|
||||
|
||||
fun setDefaultCredentials(name: String, pass: String, symbol: String, token: String, pin: String)
|
||||
fun setDefaultCredentials(username: String, pass: String, symbol: String, token: String, pin: String)
|
||||
|
||||
fun setErrorNameRequired()
|
||||
fun setUsernameLabel(label: String)
|
||||
|
||||
fun setErrorUsernameRequired()
|
||||
|
||||
fun setErrorPassRequired(focus: Boolean)
|
||||
|
||||
@ -31,7 +37,7 @@ interface LoginAdvancedView : BaseView {
|
||||
|
||||
fun setErrorPassIncorrect()
|
||||
|
||||
fun clearNameError()
|
||||
fun clearUsernameError()
|
||||
|
||||
fun clearPassError()
|
||||
|
||||
|
@ -34,11 +34,20 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
|
||||
fun newInstance() = LoginFormFragment()
|
||||
}
|
||||
|
||||
override val formNameValue get() = loginFormName.text.toString()
|
||||
override val formUsernameValue: String
|
||||
get() = loginFormUsername.text.toString()
|
||||
|
||||
override val formPassValue get() = loginFormPass.text.toString()
|
||||
override val formPassValue: String
|
||||
get() = loginFormPass.text.toString()
|
||||
|
||||
override val formHostValue get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString()))
|
||||
override val formHostValue: String
|
||||
get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty()
|
||||
|
||||
override val nicknameLabel: String
|
||||
get() = getString(R.string.login_nickname_hint)
|
||||
|
||||
override val emailLabel: String
|
||||
get() = getString(R.string.login_email_hint)
|
||||
|
||||
private lateinit var hostKeys: Array<String>
|
||||
|
||||
@ -57,7 +66,7 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
|
||||
hostKeys = resources.getStringArray(R.array.hosts_keys)
|
||||
hostValues = resources.getStringArray(R.array.hosts_values)
|
||||
|
||||
loginFormName.doOnTextChanged { _, _, _, _ -> presenter.onNameTextChanged() }
|
||||
loginFormUsername.doOnTextChanged { _, _, _, _ -> presenter.onUsernameTextChanged() }
|
||||
loginFormPass.doOnTextChanged { _, _, _, _ -> presenter.onPassTextChanged() }
|
||||
loginFormHost.setOnItemClickListener { _, _, _, _ -> presenter.onHostSelected() }
|
||||
loginFormSignIn.setOnClickListener { presenter.onSignInClick() }
|
||||
@ -76,13 +85,17 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
|
||||
}
|
||||
}
|
||||
|
||||
override fun setCredentials(name: String, pass: String) {
|
||||
loginFormName.setText(name)
|
||||
override fun setCredentials(username: String, pass: String) {
|
||||
loginFormUsername.setText(username)
|
||||
loginFormPass.setText(pass)
|
||||
}
|
||||
|
||||
override fun setErrorNameRequired() {
|
||||
with(loginFormNameLayout) {
|
||||
override fun setUsernameLabel(label: String) {
|
||||
loginFormUsernameLayout.hint = label
|
||||
}
|
||||
|
||||
override fun setErrorUsernameRequired() {
|
||||
with(loginFormUsernameLayout) {
|
||||
requestFocus()
|
||||
error = getString(R.string.login_field_required)
|
||||
}
|
||||
@ -109,8 +122,8 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
|
||||
}
|
||||
}
|
||||
|
||||
override fun clearNameError() {
|
||||
loginFormNameLayout.error = null
|
||||
override fun clearUsernameError() {
|
||||
loginFormUsernameLayout.error = null
|
||||
}
|
||||
|
||||
override fun clearPassError() {
|
||||
@ -163,6 +176,11 @@ class LoginFormFragment : BaseFragment(), LoginFormView {
|
||||
context?.openInternetBrowser("https://wulkanowy.github.io/czesto-zadawane-pytania/dlaczego-nie-moge-sie-zalogowac", ::showMessage)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
presenter.updateUsernameLabel()
|
||||
}
|
||||
|
||||
override fun openEmail() {
|
||||
context?.openEmailClient(
|
||||
requireContext().getString(R.string.login_email_intent_title),
|
||||
|
@ -42,10 +42,17 @@ class LoginFormPresenter @Inject constructor(
|
||||
fun onHostSelected() {
|
||||
view?.apply {
|
||||
clearPassError()
|
||||
clearNameError()
|
||||
if (formHostValue?.contains("fakelog") == true) {
|
||||
clearUsernameError()
|
||||
if (formHostValue.contains("fakelog")) {
|
||||
setCredentials("jan@fakelog.cf", "jan123")
|
||||
}
|
||||
updateUsernameLabel()
|
||||
}
|
||||
}
|
||||
|
||||
fun updateUsernameLabel() {
|
||||
view?.apply {
|
||||
setUsernameLabel(if ("vulcan" in formHostValue || "fakelog" in formHostValue) emailLabel else nicknameLabel)
|
||||
}
|
||||
}
|
||||
|
||||
@ -53,12 +60,12 @@ class LoginFormPresenter @Inject constructor(
|
||||
view?.clearPassError()
|
||||
}
|
||||
|
||||
fun onNameTextChanged() {
|
||||
view?.clearNameError()
|
||||
fun onUsernameTextChanged() {
|
||||
view?.clearUsernameError()
|
||||
}
|
||||
|
||||
fun onSignInClick() {
|
||||
val email = view?.formNameValue.orEmpty().trim()
|
||||
val email = view?.formUsernameValue.orEmpty().trim()
|
||||
val password = view?.formPassValue.orEmpty().trim()
|
||||
val endpoint = view?.formHostValue.orEmpty().trim()
|
||||
|
||||
@ -105,7 +112,7 @@ class LoginFormPresenter @Inject constructor(
|
||||
var isCorrect = true
|
||||
|
||||
if (login.isEmpty()) {
|
||||
view?.setErrorNameRequired()
|
||||
view?.setErrorUsernameRequired()
|
||||
isCorrect = false
|
||||
}
|
||||
|
||||
|
@ -7,15 +7,21 @@ interface LoginFormView : BaseView {
|
||||
|
||||
fun initView()
|
||||
|
||||
val formNameValue: String
|
||||
val formUsernameValue: String
|
||||
|
||||
val formPassValue: String
|
||||
|
||||
val formHostValue: String?
|
||||
val formHostValue: String
|
||||
|
||||
fun setCredentials(name: String, pass: String)
|
||||
val nicknameLabel: String
|
||||
|
||||
fun setErrorNameRequired()
|
||||
val emailLabel: String
|
||||
|
||||
fun setCredentials(username: String, pass: String)
|
||||
|
||||
fun setUsernameLabel(label: String)
|
||||
|
||||
fun setErrorUsernameRequired()
|
||||
|
||||
fun setErrorPassRequired(focus: Boolean)
|
||||
|
||||
@ -23,7 +29,7 @@ interface LoginFormView : BaseView {
|
||||
|
||||
fun setErrorPassIncorrect()
|
||||
|
||||
fun clearNameError()
|
||||
fun clearUsernameError()
|
||||
|
||||
fun clearPassError()
|
||||
|
||||
|
Reference in New Issue
Block a user