Skip to content
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@
<activity android:name=".feature.search.SearchFilterActivity" />
<activity android:name=".feature.auth.join.ui.JoinActivity"
android:windowSoftInputMode="adjustResize"/>
<activity android:name=".feature.auth.join.ui.JoinKakaoActivity"
android:windowSoftInputMode="adjustResize"/>
<activity android:name=".feature.auth.join.ui.TermActivity"/>
<activity android:name=".feature.auth.join.ui.CompleteActivity"/>
<activity android:name=".feature.auth.login.ui.LoginActivity" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import org.json.JSONObject

class ApiResultInterceptor(val context : Context) : Interceptor {

// TODO : 나중에 다시 적용
// TODO : 나중에 다시 적용`
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val response = chain.proceed(request)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import com.example.beering.feature.MainActivity
import com.example.beering.feature.auth.login.domain.LoginUseCase
import com.example.beering.feature.auth.login.ui.LoginActivity
import com.example.beering.util.base.BaseActivity
import com.example.beering.util.changeLogin
import com.google.android.material.snackbar.Snackbar
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand All @@ -38,6 +39,8 @@ class CompleteActivity : BaseActivity<ActivityJoinCompleteBinding>(ActivityJoinC
// UI를 업데이트합니다.
result
.onSuccess {
login.saveTokens(it.jwtInfo.accessToken, it.jwtInfo.refreshToken)
changeLogin(true)
val mIntent = Intent(this@CompleteActivity, MainActivity::class.java)
mIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(mIntent)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ class JoinActivity: BaseActivity<ActivityJoinBinding>(ActivityJoinBinding::infla
binding.joinIdIv22.visibility = View.VISIBLE

binding.joinIdIv1.setOnClickListener {
binding.joinIdEd.text.clear()
binding.joinIdEd.text.clear(

)
joinViewModel.setUserId("")
}
} else {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
package com.example.beering.feature.auth.join.ui

import android.content.Intent
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import androidx.core.view.marginTop
import androidx.lifecycle.Observer
import com.example.beering.R
import com.example.beering.databinding.ActivityJoinBinding
import com.example.beering.util.addStatusBarMarginTop
import com.example.beering.util.base.BaseActivity
import com.example.beering.util.dpToPx

class JoinKakaoActivity: BaseActivity<ActivityJoinBinding>(ActivityJoinBinding::inflate) {
private val joinViewModel : JoinViewModel by viewModels { JoinViewModel.Factory }


override fun initAfterBinding() {
binding.joinHeaderCl.root.addStatusBarMarginTop(this)
joinViewModel.setIsKakako(true)
binding.joinHeaderCl.toolbarBackIv.setOnClickListener {
finish()
}

// ui재사용을 위한 초기 설정

binding.joinIdCl.visibility = View.GONE
binding.joinPasswordCl.visibility = View.GONE
binding.joinPasswordAgainCl.visibility = View.GONE

val layoutParamsNicknme = binding.joinNicknameCl.layoutParams as ViewGroup.MarginLayoutParams
layoutParamsNicknme.topMargin = 0
binding.joinNicknameCl.layoutParams = layoutParamsNicknme



val layoutParamsNextOn = binding.joinNextOnIv.layoutParams as ViewGroup.MarginLayoutParams
layoutParamsNextOn.topMargin = dpToPx(500, this)
binding.joinNextOnIv.layoutParams = layoutParamsNextOn

val layoutParamsNextOff = binding.joinNextOffIv.layoutParams as ViewGroup.MarginLayoutParams
layoutParamsNextOff.topMargin = dpToPx(500, this)
binding.joinNextOffIv.layoutParams = layoutParamsNextOff



val nicknameEdit = binding.joinNicknameEd
joinViewModel.name.observe(this, Observer{
if (it.isNotEmpty()) {
nicknameEdit.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.beering_black
)
)
binding.joinNicknameBar.setBackgroundColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.beering_black
)
)
binding.joinNicknameIv1.setImageResource(R.drawable.ic_delete_dark)

} else {
nicknameEdit.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
)
)
binding.joinNicknameBar.setBackgroundColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
)
)
binding.joinNicknameIv1.setImageResource(R.drawable.ic_delete_light)
binding.conditionText.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
))
binding.check5.setImageResource(R.drawable.ic_check_light)
binding.conditionLength2.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
))
binding.check6.setImageResource(R.drawable.ic_check_light)
binding.joinNicknameIv21.visibility = View.VISIBLE
}
})
joinViewModel.nicknameValidation.observe(this, Observer{
// 닉네임이 영어, 한글 문자, 그리고 숫자로만 이루어져 있는지 확인
if (it.characters) {
binding.conditionText.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.beering_black
)
)
binding.check5.setImageResource(R.drawable.ic_check_dark)
} else {
binding.conditionText.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
)
)
binding.check5.setImageResource(R.drawable.ic_check_light)
}

// 닉네임의 길이가 1에서 10자 사이인지 확인
if (it.length) {
binding.conditionLength2.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.beering_black
)
)
binding.check6.setImageResource(R.drawable.ic_check_dark)
} else {
binding.conditionLength2.setTextColor(
ContextCompat.getColor(
this@JoinKakaoActivity,
R.color.gray01
)
)
binding.check6.setImageResource(R.drawable.ic_check_light)
}
// 닉네임이 유효한지 확인
if (it.valid) {
binding.joinNicknameIv21.visibility = View.INVISIBLE
binding.joinNicknameIv22.visibility = View.VISIBLE
}else {
binding.joinNicknameIv21.visibility = View.VISIBLE
binding.joinNicknameIv22.visibility = View.GONE
}
}) // 닉네임 유효성 검사
joinViewModel.nicknameCheck.observe(this, Observer{
when(it!!){
JoinViewModel.Companion.DuplicationCheck.PROCEEDING -> {
binding.conditionText.visibility = View.VISIBLE
binding.conditionLength2.visibility = View.VISIBLE
binding.check5.visibility = View.VISIBLE
binding.check6.visibility = View.VISIBLE
binding.joinNicknameCheck.visibility = View.GONE
binding.joinNicknameUncheck.visibility = View.GONE
}
JoinViewModel.Companion.DuplicationCheck.UNCHECKED -> {
binding.conditionText.visibility = View.GONE
binding.conditionLength2.visibility = View.GONE
binding.check5.visibility = View.GONE
binding.check6.visibility = View.GONE
binding.joinNicknameCheck.visibility = View.GONE
binding.joinNicknameUncheck.visibility = View.VISIBLE
}
JoinViewModel.Companion.DuplicationCheck.CHECKED -> {
binding.conditionText.visibility = View.GONE
binding.conditionLength2.visibility = View.GONE
binding.check5.visibility = View.GONE
binding.check6.visibility = View.GONE
binding.joinNicknameCheck.visibility = View.VISIBLE
binding.joinNicknameUncheck.visibility = View.GONE
}
}

}) // 닉네임 중복여부
joinViewModel.validNext.observe(this, Observer {
when(it){
true -> binding.joinNextOnIv.visibility = View.VISIBLE
else -> binding.joinNextOnIv.visibility = View.GONE
}
})



// 닉네임
nicknameEdit.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}

override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
joinViewModel.setName(nicknameEdit.text.toString())

}
override fun afterTextChanged(s: Editable?) {}
})

// 닉네임 x 버튼
binding.joinNicknameIv1.setOnClickListener {
binding.joinNicknameEd.text.clear()
joinViewModel.setName("")
}
// 닉네임 중복체크
binding.joinNicknameIv22.setOnClickListener {
joinViewModel.checkNickname()
}



binding.joinNextOnIv.setOnClickListener {
val mIntent = Intent(this, TermActivity::class.java)
mIntent.putExtra("name", joinViewModel.name.value)
startActivity(mIntent)
}








}


}
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,16 @@ class JoinViewModel(
private val _snackBarEvent = MutableLiveData<SingleLiveEvent<String>>()
val snackBarEvent : LiveData<SingleLiveEvent<String>> = _snackBarEvent

var isKakao : Boolean

init{
_userId.value = ""
_password.value = ""
_passwordAgain.value = ""
_name.value = ""
_idCheck.value = DuplicationCheck.PROCEEDING
_nicknameCheck.value = DuplicationCheck.PROCEEDING
isKakao = false
}
fun setUserId(id : String){
_userId.value = id
Expand All @@ -81,6 +84,10 @@ class JoinViewModel(
validNext()
}

fun setIsKakako(isKakao : Boolean){
this.isKakao = isKakao
}

fun validNext(){
if (pwValidation.value == null){
return
Expand All @@ -93,9 +100,29 @@ class JoinViewModel(
&& pwValidation.value!!.isConfirmed
&& nicknameCheck.value == DuplicationCheck.CHECKED
&& idCheck.value == DuplicationCheck.CHECKED)
if(isKakao){
validNextKakao()
} else {
if (pwValidation.value == null) {
return
}
_validNext.value = (pwValidation.value!!.valid
&& pwValidation.value!!.isConfirmed
&& nicknameCheck.value == DuplicationCheck.CHECKED
&& idCheck.value == DuplicationCheck.CHECKED)

}
}




fun validNextKakao(){
_validNext.value = (nicknameCheck.value == DuplicationCheck.CHECKED)
}

fun checkId(){
// TODO : 이메일 형식인지 정규식 확인
val cleanEmail = userId.value!!.trim()
Log.d("userId", cleanEmail)
viewModelScope.launch {
Expand All @@ -120,6 +147,7 @@ class JoinViewModel(
}

fun checkNickname(){
// TODO : 이름 형식 안맞으면 활성화 x 되게
viewModelScope.launch {
validation.checkNickname(name.value!!)
.onSuccess {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,14 @@ class TermActivity : BaseActivity<ActivityJoinTermBinding>(ActivityJoinTermBindi
binding.termCheckFirstCb.isChecked = it[0]
binding.termCheckSecondCb.isChecked = it[1]
binding.termCheckThirdCb.isChecked = it[2]
if (it[0] && it[1] && it[2]){
binding.termCheckAllCb.isChecked = it[0] && it[1] && it[2]

if (it[0] && it[1]){
binding.termJoinOnIv.visibility = View.VISIBLE
binding.termCheckAllCb.isChecked = true
} else {
binding.termJoinOnIv.visibility = View.GONE
binding.termCheckAllCb.isChecked = false
}

})
termViewModel.intentFlag.observe(this, Observer {
it.getContentIfNotHandled()?.let{msg ->
Expand Down
Loading