Avatars Screen
Login flow ui forget password ui
This commit is contained in:
61
app/src/main/java/com/woka/onboard/AvatarAdapter.kt
Normal file
61
app/src/main/java/com/woka/onboard/AvatarAdapter.kt
Normal file
@@ -0,0 +1,61 @@
|
||||
package com.woka.onboard
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import androidx.recyclerview.widget.RecyclerView.ViewHolder
|
||||
import com.bumptech.glide.Glide
|
||||
import com.woka.R
|
||||
import com.woka.databinding.AvatarViewholderBinding
|
||||
import com.woka.onboard.models.Avatar
|
||||
|
||||
class AvatarAdapter(val avatarList: List<Avatar>) :
|
||||
RecyclerView.Adapter<AvatarAdapter.AvatarViewHolder>() {
|
||||
|
||||
var selectedPos: Int? = null
|
||||
|
||||
inner class AvatarViewHolder(val binding: AvatarViewholderBinding) : ViewHolder(binding.root)
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): AvatarViewHolder {
|
||||
return AvatarViewHolder(
|
||||
AvatarViewholderBinding.inflate(
|
||||
LayoutInflater.from(parent.context),
|
||||
parent,
|
||||
false
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = avatarList.size
|
||||
|
||||
override fun onBindViewHolder(holder: AvatarViewHolder, position: Int) {
|
||||
Glide.with(holder.binding.root)
|
||||
.load(avatarList[position].avatar_image_url)
|
||||
.into(holder.binding.avatar)
|
||||
|
||||
holder.binding.card.apply {
|
||||
if (selectedPos == position){
|
||||
cardElevation = 5f
|
||||
setCardBackgroundColor(holder.itemView.context.getColor(R.color.white))
|
||||
}else{
|
||||
cardElevation = 0f
|
||||
setCardBackgroundColor(holder.itemView.context.getColor(R.color.white_50))
|
||||
}
|
||||
}
|
||||
|
||||
holder.binding.card.setOnClickListener {
|
||||
if (selectedPos == position) return@setOnClickListener
|
||||
|
||||
holder.binding.card.apply {
|
||||
setCardBackgroundColor(holder.itemView.context.getColor(R.color.white))
|
||||
cardElevation = 5f
|
||||
}
|
||||
|
||||
selectedPos?.let {
|
||||
notifyItemChanged(it)
|
||||
}
|
||||
selectedPos = position
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -9,19 +9,29 @@ import androidx.core.widget.addTextChangedListener
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FragmentGetCodeBinding
|
||||
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_RESET_PASSWORD_INTENT
|
||||
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_UNDER_16
|
||||
import com.woka.utils.closeKeyboard
|
||||
|
||||
/*
|
||||
This fragment is to get the otp code input
|
||||
It is used in three scenarios:
|
||||
1 (Default). Registration process of parent (@Param isUnder16 = false)
|
||||
2. Registration process of child (@Param isUnder16 = true)
|
||||
3. Forget password process ( @Param isResetPasswordIntent = true)
|
||||
*/
|
||||
class GetCodeFragment : Fragment() {
|
||||
|
||||
private lateinit var binding: FragmentGetCodeBinding
|
||||
|
||||
private var isUnder16 = false
|
||||
private var isUnder16: Boolean = false
|
||||
private var isResetPasswordIntent: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
isUnder16 = it.getBoolean(IS_UNDER_16, false)
|
||||
isResetPasswordIntent = it.getBoolean(IS_RESET_PASSWORD_INTENT, false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +50,15 @@ class GetCodeFragment : Fragment() {
|
||||
|
||||
private fun initViews() {
|
||||
binding.apply {
|
||||
if (isResetPasswordIntent){
|
||||
title.text = getString(R.string.please_get_otp_under_16)
|
||||
infoText.text = getString(R.string.request_them_for_the_code_to_reset_your_password)
|
||||
}
|
||||
else if (isUnder16){
|
||||
title.text = getString(R.string.please_get_otp_under_16)
|
||||
infoText.text = getString(R.string.request_them_for_verification_)
|
||||
}
|
||||
|
||||
et1.addTextChangedListener {
|
||||
if (it?.isEmpty() == false){
|
||||
et2.requestFocus()
|
||||
@@ -70,19 +89,6 @@ class GetCodeFragment : Fragment() {
|
||||
et3.requestFocus()
|
||||
}
|
||||
}
|
||||
|
||||
if (isUnder16){
|
||||
title.text = getString(R.string.please_get_otp_under_16)
|
||||
infoText.text = getString(R.string.request_them_for_verification_)
|
||||
}
|
||||
|
||||
binding.next.setOnClickListener {
|
||||
val args = Bundle().apply {
|
||||
putBoolean(IS_UNDER_16, isUnder16)
|
||||
}
|
||||
|
||||
findNavController().navigate(R.id.action_getCodeFragment_to_signUpFragment, args)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,6 +97,18 @@ class GetCodeFragment : Fragment() {
|
||||
backBtn.setOnClickListener {
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
|
||||
next.setOnClickListener {
|
||||
if (isResetPasswordIntent){
|
||||
findNavController().navigate(R.id.action_getCodeFragment_to_newPasswordFragment2)
|
||||
}else{
|
||||
val args = Bundle().apply {
|
||||
putBoolean(IS_UNDER_16, isUnder16)
|
||||
}
|
||||
|
||||
findNavController().navigate(R.id.action_getCodeFragment_to_signUpFragment, args)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -12,20 +12,30 @@ import androidx.navigation.fragment.findNavController
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FragmentGetEmailBinding
|
||||
|
||||
/*
|
||||
This fragment is to get the email user input
|
||||
It is used in three scenarios:
|
||||
1 (Default). Registration process of parent (@Param isUnder16 = false)
|
||||
2. Registration process of child (@Param isUnder16 = true)
|
||||
3. Forget password process ( @Param isResetPasswordIntent = true)
|
||||
*/
|
||||
class GetEmailFragment : Fragment() {
|
||||
|
||||
companion object{
|
||||
const val IS_UNDER_16 = "is_under_16"
|
||||
const val IS_RESET_PASSWORD_INTENT = "reset_password_intent"
|
||||
}
|
||||
|
||||
private lateinit var binding: FragmentGetEmailBinding
|
||||
|
||||
private var isUnder16: Boolean = false
|
||||
private var isResetPasswordIntent: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
arguments?.let {
|
||||
isUnder16 = it.getBoolean(IS_UNDER_16, false)
|
||||
isResetPasswordIntent = it.getBoolean(IS_RESET_PASSWORD_INTENT, false)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,7 +54,17 @@ class GetEmailFragment : Fragment() {
|
||||
|
||||
private fun initViews() {
|
||||
binding.apply {
|
||||
if (isUnder16){
|
||||
if (isResetPasswordIntent){
|
||||
// scenario 3
|
||||
|
||||
title.text = getString(R.string.forgot_your_password)
|
||||
can.text = getString(R.string.please_give_us_your_username)
|
||||
email.hint = getString(R.string.enter_your_username)
|
||||
verificationTxt.text = getString(R.string.we_will_send_a_reset_code_to_your_parent_s_email)
|
||||
verificationTxt.visibility = VISIBLE
|
||||
}else if (isUnder16){
|
||||
// scenario 2
|
||||
|
||||
title.text = getString(R.string.let_s_be_safe)
|
||||
can.text = getString(R.string.can_we_have_your_parent_s_email)
|
||||
email.hint = getString(R.string.enter_your_parent_s_email)
|
||||
@@ -62,8 +82,14 @@ class GetEmailFragment : Fragment() {
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
val args = Bundle().apply {
|
||||
putBoolean(IS_UNDER_16, isUnder16)
|
||||
val args = if (isResetPasswordIntent){
|
||||
Bundle().apply {
|
||||
putBoolean(IS_RESET_PASSWORD_INTENT, isResetPasswordIntent)
|
||||
}
|
||||
}else{
|
||||
Bundle().apply {
|
||||
putBoolean(IS_UNDER_16, isUnder16)
|
||||
}
|
||||
}
|
||||
|
||||
findNavController().navigate(R.id.action_getEmailFragment_to_getCodeFragment, args)
|
||||
|
||||
@@ -10,6 +10,7 @@ import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
import androidx.core.view.allViews
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FragmentGetMoreInfoBinding
|
||||
import com.woka.onboard.InterestTopicView
|
||||
@@ -53,6 +54,10 @@ class GetMoreInfoFragment : Fragment() {
|
||||
genderF.setOnClickListener{selectGender(Gender.FEMALE)}
|
||||
|
||||
backBtn.setOnClickListener { activity?.onBackPressedDispatcher?.onBackPressed() }
|
||||
|
||||
next.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_getMoreInfoFragment_to_selectAvatarFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.woka.onboard.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FragmentNewPasswordBinding
|
||||
|
||||
class NewPasswordFragment : Fragment() {
|
||||
|
||||
private lateinit var binding: FragmentNewPasswordBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentNewPasswordBinding.inflate(inflater, container, false)
|
||||
clickEvents()
|
||||
return binding.root
|
||||
}
|
||||
|
||||
private fun clickEvents() {
|
||||
binding.apply {
|
||||
backBtn.setOnClickListener {
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -49,12 +49,19 @@ class OnboardFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun clickEvents(){
|
||||
binding.backBtn.setOnClickListener{
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
|
||||
binding.createAccount.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_onboardFragment_to_age_select_fragment)
|
||||
binding.apply {
|
||||
backBtn.setOnClickListener{
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
|
||||
createAccount.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_onboardFragment_to_age_select_fragment)
|
||||
}
|
||||
|
||||
login.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_onboardFragment_to_signInFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,19 +5,83 @@ import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.woka.R
|
||||
import android.widget.Toast
|
||||
import com.woka.databinding.FragmentSelectAvatarBinding
|
||||
import com.woka.onboard.AvatarAdapter
|
||||
import com.woka.onboard.models.Avatar
|
||||
|
||||
class SelectAvatarFragment : Fragment() {
|
||||
|
||||
private lateinit var binding: FragmentSelectAvatarBinding
|
||||
|
||||
private var adapter: AvatarAdapter? = null
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentSelectAvatarBinding.inflate(inflater, container, false)
|
||||
|
||||
clickEvents()
|
||||
return binding.root
|
||||
}
|
||||
|
||||
private fun clickEvents() {
|
||||
binding.apply {
|
||||
backBtn.setOnClickListener {
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
|
||||
next.setOnClickListener {
|
||||
if (adapter?.selectedPos == null){
|
||||
Toast.makeText(activity, "Please select an avatar", Toast.LENGTH_SHORT).show()
|
||||
return@setOnClickListener
|
||||
}
|
||||
Toast.makeText(activity, "${adapter?.avatarList?.get(adapter?.selectedPos!!)?.id}", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
// static avatars
|
||||
adapter = AvatarAdapter(
|
||||
listOf(
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar1.png?d=1714636151",
|
||||
"1", 1
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar2.png?d=1714636151",
|
||||
"2", 2
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar3.png?d=1714636151",
|
||||
"1", 3
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar4.png?d=1714636151",
|
||||
"2", 4
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar1.png?d=1714636151",
|
||||
"1", 5
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar2.png?d=1714636151",
|
||||
"2", 6
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar3.png?d=1714636151",
|
||||
"1", 7
|
||||
),
|
||||
Avatar(
|
||||
"https://wokastaging.in/storage/app/public/uploads/avtar/avatar4.png?d=1714636151",
|
||||
"2", 8
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
binding.rvAvatar.adapter = adapter
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,16 @@
|
||||
package com.woka.onboard.fragments
|
||||
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.WindowManager
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.woka.R
|
||||
import com.woka.databinding.FragmentSignInBinding
|
||||
import com.woka.onboard.fragments.GetEmailFragment.Companion.IS_RESET_PASSWORD_INTENT
|
||||
|
||||
class SignInFragment : Fragment() {
|
||||
|
||||
@@ -19,6 +23,8 @@ class SignInFragment : Fragment() {
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentSignInBinding.inflate(inflater, container, false)
|
||||
activity?.window?.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
|
||||
activity?.window?.statusBarColor = Color.parseColor("#6ed5fe")
|
||||
|
||||
clickEvents()
|
||||
|
||||
@@ -27,7 +33,20 @@ class SignInFragment : Fragment() {
|
||||
|
||||
private fun clickEvents() {
|
||||
binding.apply {
|
||||
forgotPassword.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_signInFragment_to_getEmailFragment,
|
||||
Bundle().apply {
|
||||
putBoolean(IS_RESET_PASSWORD_INTENT, true)
|
||||
})
|
||||
}
|
||||
|
||||
backBtn.setOnClickListener {
|
||||
activity?.onBackPressedDispatcher?.onBackPressed()
|
||||
}
|
||||
|
||||
createAccount.setOnClickListener {
|
||||
findNavController().navigate(R.id.action_signInFragment_to_age_select_fragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
7
app/src/main/java/com/woka/onboard/models/Avatar.kt
Normal file
7
app/src/main/java/com/woka/onboard/models/Avatar.kt
Normal file
@@ -0,0 +1,7 @@
|
||||
package com.woka.onboard.models
|
||||
|
||||
data class Avatar(
|
||||
val avatar_image_url: String,
|
||||
val avatar_name: String,
|
||||
val id: Int
|
||||
)
|
||||
Reference in New Issue
Block a user