71 lines
2.4 KiB
Kotlin
71 lines
2.4 KiB
Kotlin
package org.mosad.teapod.ui.activity.onboarding
|
|
|
|
import android.os.Bundle
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.view.inputmethod.EditorInfo
|
|
import androidx.fragment.app.Fragment
|
|
import androidx.lifecycle.lifecycleScope
|
|
import kotlinx.coroutines.*
|
|
import org.mosad.teapod.R
|
|
import org.mosad.teapod.databinding.FragmentOnLoginBinding
|
|
import org.mosad.teapod.parser.crunchyroll.Crunchyroll
|
|
import org.mosad.teapod.preferences.EncryptedPreferences
|
|
|
|
class OnLoginFragment: Fragment() {
|
|
|
|
private lateinit var binding: FragmentOnLoginBinding
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
|
|
binding = FragmentOnLoginBinding.inflate(inflater, container, false)
|
|
return binding.root
|
|
}
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
|
super.onViewCreated(view, savedInstanceState)
|
|
initActions()
|
|
}
|
|
|
|
private fun initActions() {
|
|
binding.buttonLogin.setOnClickListener {
|
|
onLogin()
|
|
}
|
|
|
|
binding.editTextPassword.setOnEditorActionListener { _, actionId, _ ->
|
|
return@setOnEditorActionListener when (actionId) {
|
|
EditorInfo.IME_ACTION_DONE -> {
|
|
onLogin()
|
|
false // false will hide the keyboards
|
|
}
|
|
else -> false
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private fun onLogin() {
|
|
// get login credentials from gui
|
|
val email = binding.editTextLogin.text.toString()
|
|
val password = binding.editTextPassword.text.toString()
|
|
|
|
binding.buttonLogin.isClickable = false
|
|
// FIXME, this seems to run blocking
|
|
lifecycleScope.launch {
|
|
// try login credentials
|
|
val login = Crunchyroll.login(email, password)
|
|
|
|
if (login) {
|
|
// save the credentials and show the main activity
|
|
EncryptedPreferences.saveCredentials(email, password, requireContext())
|
|
if (activity is OnboardingActivity) (activity as OnboardingActivity).launchMainActivity()
|
|
} else {
|
|
withContext(Dispatchers.Main) {
|
|
binding.textLoginDesc.text = getString(R.string.on_login_failed)
|
|
binding.buttonLogin.isClickable = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} |