diff --git a/app/src/main/java/io/github/wulkanowy/data/repositories/student/StudentRepository.kt b/app/src/main/java/io/github/wulkanowy/data/repositories/student/StudentRepository.kt index e06e654a..270d080e 100644 --- a/app/src/main/java/io/github/wulkanowy/data/repositories/student/StudentRepository.kt +++ b/app/src/main/java/io/github/wulkanowy/data/repositories/student/StudentRepository.kt @@ -29,7 +29,7 @@ class StudentRepository @Inject constructor( } } - fun getStudentsScrapper(email: String, password: String, endpoint: String, symbol: String = ""): Single> { + fun getStudentsScrapper(email: String, password: String, endpoint: String, symbol: String): Single> { return ReactiveNetwork.checkInternetConnectivity(settings).flatMap { if (it) remote.getStudentsScrapper(email, password, endpoint, symbol) else Single.error(UnknownHostException("No internet connection")) diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedFragment.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedFragment.kt index 5e37226f..be18cefd 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedFragment.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedFragment.kt @@ -6,9 +6,7 @@ import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.view.ViewGroup -import android.view.inputmethod.EditorInfo import android.widget.ArrayAdapter -import androidx.appcompat.widget.AppCompatEditText import androidx.core.widget.doOnTextChanged import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Student @@ -17,6 +15,7 @@ import io.github.wulkanowy.ui.base.BaseFragment import io.github.wulkanowy.ui.modules.login.LoginActivity import io.github.wulkanowy.ui.modules.login.form.LoginSymbolAdapter import io.github.wulkanowy.utils.hideSoftInput +import io.github.wulkanowy.utils.setOnEditorDoneSignIn import io.github.wulkanowy.utils.showSoftInput import kotlinx.android.synthetic.main.fragment_login_advanced.* import javax.inject.Inject @@ -47,9 +46,14 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView { private lateinit var hostValues: Array + private lateinit var hostSymbols: Array + override val formHostValue: String get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty() + override val formHostSymbol: String + get() = hostSymbols.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty() + override val formPinValue: String get() = loginFormPin.text.toString().trim() @@ -77,6 +81,7 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView { override fun initView() { hostKeys = resources.getStringArray(R.array.hosts_keys) hostValues = resources.getStringArray(R.array.hosts_values) + hostSymbols = resources.getStringArray(R.array.hosts_symbols) loginFormUsername.doOnTextChanged { _, _, _, _ -> presenter.onUsernameTextChanged() } loginFormPass.doOnTextChanged { _, _, _, _ -> presenter.onPassTextChanged() } @@ -94,8 +99,8 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView { }) } - loginFormPin.setOnEditorDoneSignIn() - loginFormPass.setOnEditorDoneSignIn() + loginFormPin.setOnEditorDoneSignIn { loginFormSignIn.callOnClick() } + loginFormPass.setOnEditorDoneSignIn { loginFormSignIn.callOnClick() } loginFormSymbol.setAdapter(ArrayAdapter(requireContext(), android.R.layout.simple_list_item_1, resources.getStringArray(R.array.symbols_values))) @@ -106,12 +111,6 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView { } } - private fun AppCompatEditText.setOnEditorDoneSignIn() { - setOnEditorActionListener { _, id, _ -> - if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) loginFormSignIn.callOnClick() else false - } - } - override fun setDefaultCredentials(username: String, pass: String, symbol: String, token: String, pin: String) { loginFormUsername.setText(username) loginFormPass.setText(pass) @@ -124,6 +123,10 @@ class LoginAdvancedFragment : BaseFragment(), LoginAdvancedView { loginFormUsernameLayout.hint = label } + override fun setSymbol(symbol: String) { + loginFormSymbol.setText(symbol) + } + override fun setErrorUsernameRequired() { with(loginFormUsernameLayout) { requestFocus() diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedPresenter.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedPresenter.kt index 5c49ca60..59e0f998 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedPresenter.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedPresenter.kt @@ -78,6 +78,7 @@ class LoginAdvancedPresenter @Inject constructor( if (formHostValue.contains("fakelog")) { setDefaultCredentials("jan@fakelog.cf", "jan123", "powiatwulkanowy", "FK100000", "999999") } + setSymbol(formHostSymbol) updateUsernameLabel() } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedView.kt b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedView.kt index 602b1d36..712b2769 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedView.kt +++ b/app/src/main/java/io/github/wulkanowy/ui/modules/login/advanced/LoginAdvancedView.kt @@ -11,6 +11,8 @@ interface LoginAdvancedView : BaseView { val formHostValue: String + val formHostSymbol: String + val formLoginType: String val formPinValue: String @@ -29,6 +31,8 @@ interface LoginAdvancedView : BaseView { fun setUsernameLabel(label: String) + fun setSymbol(symbol: String) + fun setErrorUsernameRequired() fun setErrorPassRequired(focus: Boolean) 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 51d6685d..4dde876b 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,8 +7,7 @@ import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.view.ViewGroup -import android.view.inputmethod.EditorInfo.IME_ACTION_DONE -import android.view.inputmethod.EditorInfo.IME_NULL +import android.widget.ArrayAdapter import androidx.core.widget.doOnTextChanged import io.github.wulkanowy.R import io.github.wulkanowy.data.db.entities.Student @@ -18,6 +17,7 @@ import io.github.wulkanowy.utils.AppInfo import io.github.wulkanowy.utils.hideSoftInput import io.github.wulkanowy.utils.openEmailClient import io.github.wulkanowy.utils.openInternetBrowser +import io.github.wulkanowy.utils.setOnEditorDoneSignIn import io.github.wulkanowy.utils.showSoftInput import kotlinx.android.synthetic.main.fragment_login_form.* import javax.inject.Inject @@ -43,6 +43,12 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override val formHostValue: String get() = hostValues.getOrNull(hostKeys.indexOf(loginFormHost.text.toString())).orEmpty() + 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) @@ -53,6 +59,8 @@ class LoginFormFragment : BaseFragment(), LoginFormView { private lateinit var hostValues: Array + private lateinit var hostSymbols: Array + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_login_form, container, false) } @@ -65,9 +73,11 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override fun initView() { hostKeys = resources.getStringArray(R.array.hosts_keys) hostValues = resources.getStringArray(R.array.hosts_values) + hostSymbols = resources.getStringArray(R.array.hosts_symbols) loginFormUsername.doOnTextChanged { _, _, _, _ -> presenter.onUsernameTextChanged() } loginFormPass.doOnTextChanged { _, _, _, _ -> presenter.onPassTextChanged() } + loginFormSymbol.doOnTextChanged { _, _, _, _ -> presenter.onSymbolTextChanged() } loginFormHost.setOnItemClickListener { _, _, _, _ -> presenter.onHostSelected() } loginFormSignIn.setOnClickListener { presenter.onSignInClick() } loginFormAdvancedButton.setOnClickListener { presenter.onAdvancedLoginClick() } @@ -75,9 +85,10 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormFaq.setOnClickListener { presenter.onFaqClick() } loginFormContactEmail.setOnClickListener { presenter.onEmailClick() } loginFormRecoverLink.setOnClickListener { presenter.onRecoverClick() } - loginFormPass.setOnEditorActionListener { _, id, _ -> - if (id == IME_ACTION_DONE || id == IME_NULL) loginFormSignIn.callOnClick() else false - } + 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()) @@ -91,10 +102,18 @@ 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() @@ -102,6 +121,13 @@ class LoginFormFragment : BaseFragment(), LoginFormView { } } + override fun setErrorSymbolRequired(focus: Boolean) { + with(loginFormSymbolLayout) { + if (focus) requestFocus() + error = getString(R.string.login_field_required) + } + } + override fun setErrorPassRequired(focus: Boolean) { with(loginFormPassLayout) { if (focus) requestFocus() @@ -131,6 +157,10 @@ class LoginFormFragment : BaseFragment(), LoginFormView { loginFormPassLayout.error = null } + override fun clearSymbolError() { + loginFormSymbolLayout.error = null + } + override fun showSoftKeyboard() { activity?.showSoftInput() } @@ -183,7 +213,10 @@ class LoginFormFragment : BaseFragment(), LoginFormView { override fun onResume() { super.onResume() - presenter.updateUsernameLabel() + with(presenter) { + updateUsernameLabel() + updateSymbolInputVisibility() + } } override fun openEmail() { 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 7e8d5efc..6d429285 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 @@ -46,13 +46,21 @@ class LoginFormPresenter @Inject constructor( if (formHostValue.contains("fakelog")) { setCredentials("jan@fakelog.cf", "jan123") } + setSymbol(formHostSymbol) updateUsernameLabel() + updateSymbolInputVisibility() } } fun updateUsernameLabel() { - view?.apply { - setUsernameLabel(if ("vulcan" in formHostValue || "fakelog" in formHostValue) emailLabel else nicknameLabel) + view?.run { + setUsernameLabel(if ("standard" in formHostValue) emailLabel else nicknameLabel) + } + } + + fun updateSymbolInputVisibility() { + view?.run { + showSymbol("adfs" in formHostValue) } } @@ -64,14 +72,19 @@ 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 endpoint = view?.formHostValue.orEmpty().trim() + val host = view?.formHostValue.orEmpty().trim() + val symbol = view?.formSymbolValue.orEmpty().trim() - if (!validateCredentials(email, password)) return + if (!validateCredentials(email, password, host, symbol)) return - disposable.add(studentRepository.getStudentsScrapper(email, password, endpoint) + disposable.add(studentRepository.getStudentsScrapper(email, password, host, symbol) .subscribeOn(schedulers.backgroundThread) .observeOn(schedulers.mainThread) .doOnSubscribe { @@ -90,11 +103,11 @@ class LoginFormPresenter @Inject constructor( } .subscribe({ Timber.i("Login result: Success") - analytics.logEvent("registration_form", "success" to true, "students" to it.size, "scrapperBaseUrl" to endpoint, "error" to "No error") - view?.notifyParentAccountLogged(it, Triple(email, password, endpoint)) + analytics.logEvent("registration_form", "success" to true, "students" to it.size, "scrapperBaseUrl" to host, "error" to "No error") + view?.notifyParentAccountLogged(it, Triple(email, password, host)) }, { Timber.i("Login result: An exception occurred") - analytics.logEvent("registration_form", "success" to false, "students" to -1, "scrapperBaseUrl" to endpoint, "error" to it.message.ifNullOrBlank { "No message" }) + analytics.logEvent("registration_form", "success" to false, "students" to -1, "scrapperBaseUrl" to host, "error" to it.message.ifNullOrBlank { "No message" }) loginErrorHandler.dispatch(it) view?.showContact(true) })) @@ -112,7 +125,7 @@ class LoginFormPresenter @Inject constructor( view?.onRecoverClick() } - private fun validateCredentials(login: String, password: String): Boolean { + private fun validateCredentials(login: String, password: String, host: String, symbol: String): Boolean { var isCorrect = true if (login.isEmpty()) { @@ -129,6 +142,12 @@ class LoginFormPresenter @Inject constructor( view?.setErrorPassInvalid(focus = isCorrect) 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 d3f11c7b..4a570f5c 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 @@ -13,16 +13,26 @@ interface LoginFormView : BaseView { val formHostValue: String + 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 setErrorSymbolRequired(focus: Boolean) + fun setErrorPassRequired(focus: Boolean) fun setErrorPassInvalid(focus: Boolean) @@ -33,6 +43,8 @@ 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 412b4a2b..6e8a83c7 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 @@ -68,6 +68,7 @@ class LoginRecoverFragment : BaseFragment(), LoginRecoverView { hostValues = resources.getStringArray(R.array.hosts_values) loginRecoverName.doOnTextChanged { _, _, _, _ -> presenter.onNameTextChanged() } + loginRecoverSymbol.doOnTextChanged { _, _, _, _ -> presenter.onSymbolTextChanged() } loginRecoverHost.setOnItemClickListener { _, _, _, _ -> presenter.onHostSelected() } loginRecoverButton.setOnClickListener { presenter.onRecoverClick() } loginRecoverErrorRetry.setOnClickListener { presenter.onRecoverClick() } @@ -83,9 +84,8 @@ class LoginRecoverFragment : BaseFragment(), LoginRecoverView { } } - override fun setDefaultCredentials(username: String, symbol: String) { + override fun setDefaultCredentials(username: String) { loginRecoverName.setText(username) - loginRecoverSymbol.setText(symbol) } override fun setErrorNameRequired() { @@ -106,10 +106,21 @@ 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 } 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 10437652..7016d173 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,9 +34,13 @@ class LoginRecoverPresenter @Inject constructor( view?.clearUsernameError() } + fun onSymbolTextChanged() { + view?.clearSymbolError() + } + fun onHostSelected() { view?.run { - if ("fakelog" in recoverHostValue) setDefaultCredentials("jan@fakelog.cf", "Default") + if ("fakelog" in recoverHostValue) setDefaultCredentials("jan@fakelog.cf") clearUsernameError() updateFields() } @@ -44,32 +48,19 @@ class LoginRecoverPresenter @Inject constructor( fun updateFields() { view?.run { - if ("fakelog" in recoverHostValue || "vulcan" in recoverHostValue) { - showSymbol(true) - setUsernameHint(emailHintString) - } else { - showSymbol(false) - setUsernameHint(loginPeselEmailHintString) - } + showSymbol("adfs" in recoverHostValue) + setUsernameHint(if ("standard" in recoverHostValue) emailHintString else loginPeselEmailHintString) } } fun onRecoverClick() { val username = view?.recoverNameValue.orEmpty() val host = view?.recoverHostValue.orEmpty() - val symbol = view?.recoverSymbolValue.ifNullOrBlank { "Default" } + val symbol = view?.recoverSymbolValue.orEmpty() - if (username.isEmpty()) { - view?.setErrorNameRequired() - return - } + if (!validateInput(username, host, symbol)) return - if (("fakelog" in host || "vulcan" in host) && "@" !in username) { - view?.setUsernameError(view?.invalidEmailString.orEmpty()) - return - } - - disposable.add(recoverRepository.getReCaptchaSiteKey(host, symbol) + disposable.add(recoverRepository.getReCaptchaSiteKey(host, symbol.ifBlank { "Default" }) .subscribeOn(schedulers.backgroundThread) .observeOn(schedulers.mainThread) .doOnSubscribe { @@ -89,6 +80,27 @@ class LoginRecoverPresenter @Inject constructor( }) } + private fun validateInput(username: String, host: String, symbol: String): Boolean { + var isCorrect = true + + if (username.isEmpty()) { + view?.setErrorNameRequired() + isCorrect = false + } + + if ("standard" in host && "@" !in username) { + view?.setUsernameError(view?.invalidEmailString.orEmpty()) + 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() 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 ad3739fc..693c52a3 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 @@ -18,10 +18,12 @@ interface LoginRecoverView : BaseView { fun initView() - fun setDefaultCredentials(username: String, symbol: String) + fun setDefaultCredentials(username: String) fun clearUsernameError() + fun clearSymbolError() + fun showSymbol(show: Boolean) fun setErrorNameRequired() @@ -30,6 +32,8 @@ interface LoginRecoverView : BaseView { fun setUsernameError(message: String) + fun setSymbolError(focus: Boolean) + fun showSoftKeyboard() fun hideSoftKeyboard() diff --git a/app/src/main/java/io/github/wulkanowy/utils/EditTextExtension.kt b/app/src/main/java/io/github/wulkanowy/utils/EditTextExtension.kt new file mode 100644 index 00000000..58c93729 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/utils/EditTextExtension.kt @@ -0,0 +1,10 @@ +package io.github.wulkanowy.utils + +import android.view.inputmethod.EditorInfo +import android.widget.EditText + +fun EditText.setOnEditorDoneSignIn(callback: () -> Boolean) { + setOnEditorActionListener { _, id, _ -> + if (id == EditorInfo.IME_ACTION_DONE || id == EditorInfo.IME_NULL) callback() else false + } +} diff --git a/app/src/main/res/layout/fragment_login_form.xml b/app/src/main/res/layout/fragment_login_form.xml index ded32859..99a24802 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/loginFormSignIn" + app:layout_constraintBottom_toTopOf="@+id/loginFormSymbolLayout" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/loginFormRecoverLink"> @@ -215,6 +215,36 @@ tools:ignore="Deprecated,LabelFor" /> + + + + + + app:layout_constraintTop_toBottomOf="@+id/loginFormSymbolLayout" /> + tools:visibility="visible"> + tools:visibility="invisible"> Email Login, PESEL lub e-mail Hasło - Dziennik + Dziennik UONET+ Symbol - Symbol (opcjonalnie) Mobilne API Scraper Hybrydowe diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index dbf79708..90fe4b1e 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -32,7 +32,7 @@ Электронная почта Логин, PESEL или электронная почта Пароль - Дневник + Дневник UONET+ Мобильный API Scraper Гибрид @@ -40,7 +40,6 @@ PIN клавиша API Symbol - Символ (необязательно) Войти Слишком короткий пароль Указаны неверные данные diff --git a/app/src/main/res/values/api_hosts.xml b/app/src/main/res/values/api_hosts.xml index df42f592..71162dc1 100644 --- a/app/src/main/res/values/api_hosts.xml +++ b/app/src/main/res/values/api_hosts.xml @@ -1,7 +1,8 @@ - Vulcan + Vulcan - standardowy + Vulcan - niestandardowy Opolska eSzkoła Gdańska Platforma Edukacyjna Lubelski Portal Oświatowy @@ -10,12 +11,23 @@ Fakelog - https://vulcan.net.pl + https://vulcan.net.pl/?standard + https://vulcan.net.pl/?adfs https://eszkola.opolskie.pl https://edu.gdansk.pl https://edu.lublin.eu https://umt.tarnow.pl https://resman.pl - http://fakelog.cf + http://fakelog.cf/?standard + + + Default + + opole + gdansk + lublin + tarnow + rzeszow + Default diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f488f6c2..a50089a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,7 +32,7 @@ Email Login, PESEL or e-mail Password - Register + UONET+ Register Mobile API Scraper Hybrid @@ -40,7 +40,6 @@ PIN API key Symbol - Symbol (optional) Sign in Password too short Login details are incorrect diff --git a/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt b/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt index c2196062..d895a332 100644 --- a/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt +++ b/app/src/test/java/io/github/wulkanowy/ui/modules/login/form/LoginFormPresenterTest.kt @@ -92,6 +92,8 @@ class LoginFormPresenterTest { `when`(loginFormView.formUsernameValue).thenReturn("@") `when`(loginFormView.formPassValue).thenReturn("123456") `when`(loginFormView.formHostValue).thenReturn("https://fakelog.cf") + `when`(loginFormView.formSymbolValue).thenReturn("Default") + `when`(loginFormView.formHostSymbol).thenReturn("Default") presenter.onSignInClick() verify(loginFormView).hideSoftKeyboard() @@ -108,6 +110,8 @@ class LoginFormPresenterTest { `when`(loginFormView.formUsernameValue).thenReturn("@") `when`(loginFormView.formPassValue).thenReturn("123456") `when`(loginFormView.formHostValue).thenReturn("https://fakelog.cf") + `when`(loginFormView.formSymbolValue).thenReturn("Default") + `when`(loginFormView.formHostSymbol).thenReturn("Default") presenter.onSignInClick() verify(loginFormView).hideSoftKeyboard() @@ -124,6 +128,8 @@ class LoginFormPresenterTest { `when`(loginFormView.formUsernameValue).thenReturn("@") `when`(loginFormView.formPassValue).thenReturn("123456") `when`(loginFormView.formHostValue).thenReturn("https://fakelog.cf") + `when`(loginFormView.formSymbolValue).thenReturn("Default") + `when`(loginFormView.formHostSymbol).thenReturn("Default") presenter.onSignInClick() presenter.onSignInClick() @@ -141,6 +147,8 @@ class LoginFormPresenterTest { `when`(loginFormView.formUsernameValue).thenReturn("@") `when`(loginFormView.formPassValue).thenReturn("123456") `when`(loginFormView.formHostValue).thenReturn("https://fakelog.cf") + `when`(loginFormView.formSymbolValue).thenReturn("Default") + `when`(loginFormView.formHostSymbol).thenReturn("Default") presenter.onSignInClick() verify(loginFormView).hideSoftKeyboard()