2021-02-06 19:02:12 +01:00
package org.mosad.teapod.ui.activity.onboarding
2021-01-16 00:16:47 +01:00
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
2022-01-08 19:20:21 +01:00
import android.view.inputmethod.EditorInfo
2021-01-16 00:16:47 +01:00
import androidx.fragment.app.Fragment
2021-06-06 17:54:19 +02:00
import androidx.lifecycle.lifecycleScope
2021-01-16 00:16:47 +01:00
import kotlinx.coroutines.*
2022-01-08 19:20:21 +01:00
import org.mosad.teapod.R
2021-01-16 00:16:47 +01:00
import org.mosad.teapod.databinding.FragmentOnLoginBinding
2022-01-08 19:20:21 +01:00
import org.mosad.teapod.parser.crunchyroll.Crunchyroll
2021-01-16 00:16:47 +01:00
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 {
2022-01-08 19:20:21 +01:00
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
}
2021-01-16 00:16:47 +01:00
}
}
}
}