11package com.runnect.runnect.presentation.login
22
33import android.content.Intent
4- import android.graphics.Rect
54import android.os.Bundle
6- import android.view.MotionEvent
5+ import androidx.activity.compose.setContent
76import androidx.activity.viewModels
8- import androidx.core.view.isVisible
7+ import androidx.appcompat.app.AppCompatActivity
8+ import androidx.compose.runtime.getValue
9+ import androidx.compose.runtime.livedata.observeAsState
910import com.runnect.runnect.R
10- import com.runnect.runnect.binding.BindingActivity
11- import com.runnect.runnect.databinding.ActivityGiveNicknameBinding
1211import com.runnect.runnect.presentation.MainActivity
1312import com.runnect.runnect.presentation.state.UiState
13+ import com.runnect.runnect.presentation.ui.theme.RunnectTheme
1414import com.runnect.runnect.util.analytics.Analytics
1515import com.runnect.runnect.util.analytics.EventName
1616import com.runnect.runnect.util.analytics.EventName.Param
17- import com.runnect.runnect.util.extension.hideKeyboard
1817import com.runnect.runnect.util.extension.showToast
1918import com.runnect.runnect.util.preference.AuthUtil.saveToken
2019import dagger.hilt.android.AndroidEntryPoint
2120
2221@AndroidEntryPoint
23- class GiveNicknameActivity :
24- BindingActivity <ActivityGiveNicknameBinding >(R .layout.activity_give_nickname) {
22+ class GiveNicknameActivity : AppCompatActivity () {
2523 private val viewModel: GiveNickNameViewModel by viewModels()
24+
2625 override fun onCreate (savedInstanceState : Bundle ? ) {
2726 super .onCreate(savedInstanceState)
28- binding.vm = viewModel
29- binding.lifecycleOwner = this
3027 Analytics .logEvent(EventName .VIEW_GIVE_NICKNAME )
31- addListener()
3228 addObserver()
33- }
3429
35- private fun addListener () {
36- binding.tvGiveNicknameFinish.setOnClickListener {
37- viewModel.updateNickName()
30+ setContent {
31+ val nickName by viewModel.nickName.observeAsState(" " )
32+ val uiState by viewModel.uiState.observeAsState(UiState .Empty )
33+
34+ RunnectTheme {
35+ GiveNicknameScreen (
36+ state = GiveNicknameUiState .from(
37+ nickName = nickName,
38+ uiState = uiState
39+ ),
40+ onNickNameChange = viewModel::updateNickNameInput,
41+ onStartClick = viewModel::updateNickName
42+ )
43+ }
3844 }
3945 }
4046
@@ -46,27 +52,10 @@ class GiveNicknameActivity :
4652 }
4753
4854 private fun addObserver () {
49- viewModel.nickName.observe(this ) {
50- with (binding.tvGiveNicknameFinish) {
51- if (it.isNullOrEmpty()) {
52- isActivated = false
53- isClickable = false
54- } else {
55- isActivated = true
56- isClickable = true
57- }
58- }
59- }
6055 viewModel.uiState.observe(this ) { state ->
6156 when (state) {
62- UiState .Empty -> binding.indeterminateBar.isVisible = false
63- UiState .Loading -> {
64- with (binding) {
65- indeterminateBar.isVisible = true
66- tvGiveNicknameFinish.isClickable = false
67- }
68- }
69-
57+ UiState .Empty ,
58+ UiState .Loading -> Unit
7059 UiState .Success -> handleSuccessfulSignup()
7160 UiState .Failure -> handleUnSuccessfulSignup()
7261 }
@@ -80,7 +69,6 @@ class GiveNicknameActivity :
8069 )
8170 saveSignTokenInfo()
8271 showToast(" 회원가입 되었습니다" )
83- binding.indeterminateBar.isVisible = false
8472 moveToMain()
8573 }
8674
@@ -93,27 +81,9 @@ class GiveNicknameActivity :
9381 }
9482
9583 private fun handleUnSuccessfulSignup () {
96- binding.indeterminateBar.isVisible = false
9784 if (viewModel.statusCode.value == 400 ) {
9885 showToast(getString(R .string.my_page_edit_name_redundant_warning))
9986 }
100- binding.tvGiveNicknameFinish.isClickable = true
101- }
102-
103- // 키보드 밖 터치 시, 키보드 내림
104- override fun dispatchTouchEvent (ev : MotionEvent ? ): Boolean {
105- val focusView = currentFocus
106- if (focusView != null ) {
107- val rect = Rect ()
108- focusView.getGlobalVisibleRect(rect)
109- val x = ev!! .x.toInt()
110- val y = ev.y.toInt()
111- if (! rect.contains(x, y)) {
112- hideKeyboard(focusView)
113- }
114- }
115- return super .dispatchTouchEvent(ev)
11687 }
11788
11889}
119-
0 commit comments