Woka support scrolling issue resolved
Completed UserProfileActivity.kt with api integration Completed whole flow of add child from guardian app with all api integration of child registration Deactivate account api integration. Flow changes in user log in
This commit is contained in:
@@ -8,6 +8,13 @@ import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.navigation.NavOptions
|
||||
import androidx.navigation.fragment.NavHostFragment
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp.Companion.userPrefs
|
||||
import com.woka.onboard.fragments.GetCodeFragment
|
||||
import com.woka.onboard.fragments.GetCodeFragment.Companion.EMAIL_ARG
|
||||
import com.woka.onboard.fragments.GetEmailFragment
|
||||
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16
|
||||
import com.woka.onboard.fragments.SignUpFragment
|
||||
import com.woka.onboard.fragments.SignUpFragment.Companion.ADD_CHILD_EVENT
|
||||
import com.woka.utils.WokaBaseActivity
|
||||
|
||||
class OnboardActivity : WokaBaseActivity() {
|
||||
@@ -16,6 +23,8 @@ class OnboardActivity : WokaBaseActivity() {
|
||||
const val ONBOARD_ACTIVITY_INTENT = "onboard_act_intent"
|
||||
|
||||
const val LOG_IN_INTENT = "login_intent"
|
||||
|
||||
const val ADD_CHILD_INTENT = "add_child_intent"
|
||||
}
|
||||
|
||||
private var player: MediaPlayer? = null
|
||||
@@ -40,6 +49,20 @@ class OnboardActivity : WokaBaseActivity() {
|
||||
.setPopUpTo(R.id.onboardFragment, true)
|
||||
.build()
|
||||
)
|
||||
}else if (intent.getStringExtra(ONBOARD_ACTIVITY_INTENT) == ADD_CHILD_INTENT){
|
||||
val hostFragment =
|
||||
supportFragmentManager.findFragmentById(R.id.fc_onboard) as NavHostFragment
|
||||
hostFragment.navController.navigate(
|
||||
R.id.action_onboardFragment_to_signUpFragment,
|
||||
Bundle().apply {
|
||||
putBoolean(IS_UNDER_16, true)
|
||||
putString(EMAIL_ARG, userPrefs?.userData?.email)
|
||||
putBoolean(ADD_CHILD_EVENT, true)
|
||||
},
|
||||
NavOptions.Builder()
|
||||
.setPopUpTo(R.id.onboardFragment, true)
|
||||
.build()
|
||||
)
|
||||
}
|
||||
|
||||
player = MediaPlayer.create(this, R.raw.audiotwo)
|
||||
|
||||
@@ -9,20 +9,26 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.Toast
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import com.woka.R
|
||||
import com.woka.WokaApp.Companion.userPrefs
|
||||
import com.woka.databinding.FragmentSelectAvatarBinding
|
||||
import com.woka.home.HomeActivity
|
||||
import com.woka.networking.ApiResult
|
||||
import com.woka.networking.RetrofitHelper
|
||||
import com.woka.onboard.AvatarAdapter
|
||||
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16
|
||||
import com.woka.onboard.models.Avatar
|
||||
import com.woka.onboard.models.RegisterRequestData
|
||||
import com.woka.onboard.mvvm.OnboardViewModel
|
||||
import com.woka.userdata.UserRepository
|
||||
import com.woka.utils.Gender
|
||||
import com.woka.utils.ProgressView
|
||||
import com.woka.utils.UserType
|
||||
import com.woka.utils.toast
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.Locale
|
||||
|
||||
@@ -47,7 +53,7 @@ class SelectAvatarFragment : Fragment() {
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
): View {
|
||||
binding = FragmentSelectAvatarBinding.inflate(inflater, container, false)
|
||||
activity?.let {
|
||||
viewModel = ViewModelProvider(it)[OnboardViewModel::class.java]
|
||||
@@ -133,23 +139,32 @@ class SelectAvatarFragment : Fragment() {
|
||||
progressView.show(getString(R.string.please_wait))
|
||||
}
|
||||
is ApiResult.Success -> {
|
||||
progressView.hide()
|
||||
|
||||
activity?.let {activity ->
|
||||
toast(it.message)
|
||||
|
||||
it.data?.result?.let { result->
|
||||
lifecycleScope.launch {
|
||||
// logging out
|
||||
if (userPrefs?.userType == UserType.GUARDIAN || userPrefs?.userType == UserType.CHILD){
|
||||
progressView.show(getString(R.string.logging_you_out))
|
||||
UserRepository.logout()
|
||||
}
|
||||
|
||||
// saving to user prefs
|
||||
userPrefs?.accessToken = result.remember_token?:"no_token_received"
|
||||
userPrefs?.userType = UserType.createUserType(result.user_type)
|
||||
// saving to user prefs
|
||||
userPrefs?.accessToken = result.remember_token?:"no_token_received"
|
||||
userPrefs?.userType = UserType.createUserType(result.user_type)
|
||||
|
||||
userPrefs?.loadUserData()
|
||||
userPrefs?.loadUserData()
|
||||
|
||||
startActivity(Intent(activity, HomeActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||
})
|
||||
activity.finish()
|
||||
progressView.hide()
|
||||
startActivity(Intent(activity, HomeActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
|
||||
})
|
||||
activity.finish()
|
||||
}
|
||||
}
|
||||
progressView.hide()
|
||||
}
|
||||
}
|
||||
null -> {}
|
||||
|
||||
@@ -33,6 +33,8 @@ class SignInFragment : Fragment() {
|
||||
|
||||
private lateinit var dialog: DecisionDialog
|
||||
|
||||
private lateinit var deactivatedDialog: DecisionDialog
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
@@ -59,6 +61,21 @@ class SignInFragment : Fragment() {
|
||||
|
||||
setNegativeButton(getString(R.string.no))
|
||||
}
|
||||
|
||||
deactivatedDialog = DecisionDialog(it).apply {
|
||||
title = getString(R.string.activate_woka_account)
|
||||
message = getString(R.string.would_you_like_to_re_activate_your_account)
|
||||
|
||||
setPositiveButton(getString(R.string.yes)){
|
||||
viewModel.loginProceed(
|
||||
binding.username.text.toString(),
|
||||
binding.password.text.toString(),
|
||||
true
|
||||
)
|
||||
}
|
||||
|
||||
setNegativeButton(getString(R.string.no))
|
||||
}
|
||||
}
|
||||
|
||||
clickEvents()
|
||||
@@ -80,7 +97,9 @@ class SignInFragment : Fragment() {
|
||||
is ApiResult.Success -> {
|
||||
progressView.hide()
|
||||
it.data?.result?.let {data->
|
||||
if (data.already_logged_in){
|
||||
if (data.is_deactive){
|
||||
deactivatedDialog.show()
|
||||
}else if (data.already_logged_in){
|
||||
dialog.show()
|
||||
}else{
|
||||
toast(it.message)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.woka.onboard.fragments
|
||||
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
@@ -20,13 +21,26 @@ import com.woka.utils.PARENT_TYPE
|
||||
import com.woka.utils.ProgressView
|
||||
import com.woka.utils.toast
|
||||
|
||||
/*
|
||||
This fragment is opened for two intents
|
||||
|
||||
1. The normal registration flow
|
||||
2. Adding child from home
|
||||
|
||||
*/
|
||||
class SignUpFragment : Fragment() {
|
||||
|
||||
companion object{
|
||||
const val ADD_CHILD_EVENT = "add_child_event"
|
||||
}
|
||||
|
||||
private lateinit var binding: FragmentSignUpBinding
|
||||
|
||||
private var isUnder16 = false
|
||||
private var email: String? = null
|
||||
|
||||
private var addChildIntent = false
|
||||
|
||||
private lateinit var viewModel: OnboardViewModel
|
||||
private lateinit var progressView: ProgressView
|
||||
|
||||
@@ -35,6 +49,7 @@ class SignUpFragment : Fragment() {
|
||||
arguments?.let {
|
||||
isUnder16 = it.getBoolean(IS_UNDER_16, false)
|
||||
email = it.getString(EMAIL_ARG)
|
||||
addChildIntent = it.getBoolean(ADD_CHILD_EVENT, false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,6 +62,7 @@ class SignUpFragment : Fragment() {
|
||||
activity?.let {
|
||||
viewModel = ViewModelProvider(it)[OnboardViewModel::class.java]
|
||||
progressView = ProgressView(it)
|
||||
it.window?.statusBarColor = Color.parseColor("#6ed5fe")
|
||||
}
|
||||
|
||||
initViews()
|
||||
@@ -101,13 +117,22 @@ class SignUpFragment : Fragment() {
|
||||
|
||||
private fun initViews() {
|
||||
binding.apply {
|
||||
if (isUnder16) {
|
||||
if (isUnder16 && !addChildIntent) {
|
||||
doNotShare.visibility = VISIBLE
|
||||
}
|
||||
|
||||
name.setText(viewModel.name)
|
||||
username.setText(viewModel.userName)
|
||||
password.setText(viewModel.password)
|
||||
|
||||
if (addChildIntent){
|
||||
title.text = getString(R.string.add_child_account)
|
||||
usernameTitle.text = getString(R.string.username)
|
||||
nameTitle.text = getString(R.string.child_name)
|
||||
passwordTitle.text = getString(R.string.password)
|
||||
|
||||
viewModel.email = email
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,12 +4,9 @@ import android.animation.Animator
|
||||
import android.content.Intent
|
||||
import android.media.MediaPlayer
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.animation.Animation
|
||||
import android.view.animation.Animation.AnimationListener
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
@@ -19,9 +16,8 @@ import com.woka.R
|
||||
import com.woka.WokaApp.Companion.userPrefs
|
||||
import com.woka.databinding.FragmentSplashBinding
|
||||
import com.woka.home.HomeActivity
|
||||
import com.woka.mvvm.userDataModels.UserDataResponse
|
||||
import com.woka.userdata.userDataModels.UserDataResponse
|
||||
import com.woka.networking.ApiResult
|
||||
import com.woka.utils.TAG
|
||||
import com.woka.utils.UserType
|
||||
import com.woka.utils.toast
|
||||
import kotlinx.coroutines.delay
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.woka.onboard.models
|
||||
|
||||
import com.woka.mvvm.userDataModels.UserData
|
||||
import com.woka.userdata.userDataModels.UserData
|
||||
|
||||
data class LoginResponse(
|
||||
val result: UserData?
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package com.woka.onboard.models
|
||||
|
||||
import com.woka.mvvm.userDataModels.UserData
|
||||
import com.woka.userdata.userDataModels.UserData
|
||||
|
||||
data class RegisterResponse(
|
||||
val result: UserData
|
||||
|
||||
@@ -33,12 +33,13 @@ class OnboardRepository(private val apiService: OnboardApiService) {
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun loginProceed(userName: String, password: String): ApiResult<LoginResponse> {
|
||||
suspend fun loginProceed(userName: String, password: String, isActivate: Boolean): ApiResult<LoginResponse> {
|
||||
return handleApiCall {
|
||||
apiService.loginProceed(
|
||||
FormBody.Builder()
|
||||
.add("username", userName)
|
||||
.add("password", password)
|
||||
.add("is_activate", if (isActivate) "1" else "0")
|
||||
.build()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -141,10 +141,10 @@ class OnboardViewModel: ViewModel(){
|
||||
}
|
||||
}
|
||||
|
||||
fun loginProceed(userName: String, password: String){
|
||||
fun loginProceed(userName: String, password: String, isActivate: Boolean = false){
|
||||
viewModelScope.launch {
|
||||
_loginProceedLiveData.postValue(ApiResult.Loading())
|
||||
val response = repository.loginProceed(userName, password)
|
||||
val response = repository.loginProceed(userName, password, isActivate)
|
||||
_loginProceedLiveData.postValue(response)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user