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:
2024-06-06 20:50:41 +05:30
parent 84a8f11f5a
commit 8cf0ee1c28
38 changed files with 989 additions and 169 deletions

View File

@@ -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)

View File

@@ -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 -> {}

View File

@@ -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)

View File

@@ -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
}
}
}

View File

@@ -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

View File

@@ -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?

View File

@@ -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

View File

@@ -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()
)
}

View File

@@ -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)
}
}