Skip to content

Commit 84aeb30

Browse files
committed
[feat] #219 둘러보기 중 로그인 유도 바텀 시트로 카카오 회원가입/로그인을 진행하는 경우 구현
1 parent e6d43bc commit 84aeb30

File tree

1 file changed

+53
-10
lines changed

1 file changed

+53
-10
lines changed

app/src/main/java/com/sopt/geonppang/presentation/common/LoginNeededDialog.kt

Lines changed: 53 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,28 @@ import android.content.Intent
44
import android.os.Bundle
55
import android.view.View
66
import androidx.fragment.app.viewModels
7+
import androidx.lifecycle.flowWithLifecycle
8+
import androidx.lifecycle.lifecycleScope
79
import com.sopt.geonppang.R
810
import com.sopt.geonppang.data.datasource.local.GPDataSource
911
import com.sopt.geonppang.data.service.KakaoAuthService
1012
import com.sopt.geonppang.databinding.DialogBottomLoginNeededBinding
13+
import com.sopt.geonppang.presentation.MainActivity
1114
import com.sopt.geonppang.presentation.auth.AuthViewModel
15+
import com.sopt.geonppang.presentation.auth.SignActivity
1216
import com.sopt.geonppang.presentation.auth.SignUpActivity
17+
import com.sopt.geonppang.presentation.auth.SignUpNicknameActivity
18+
import com.sopt.geonppang.presentation.filterSetting.FilterSettingViewModel
1319
import com.sopt.geonppang.presentation.login.LoginActivity
20+
import com.sopt.geonppang.presentation.type.AuthRoleType
1421
import com.sopt.geonppang.presentation.type.LoginNeededType
1522
import com.sopt.geonppang.presentation.type.PlatformType
23+
import com.sopt.geonppang.presentation.type.UserRoleType
24+
import com.sopt.geonppang.util.AmplitudeUtils
1625
import com.sopt.geonppang.util.binding.BindingBottomSheetDialogFragment
1726
import dagger.hilt.android.AndroidEntryPoint
27+
import kotlinx.coroutines.flow.launchIn
28+
import kotlinx.coroutines.flow.onEach
1829
import javax.inject.Inject
1930

2031
@AndroidEntryPoint
@@ -26,26 +37,26 @@ class LoginNeededDialog(
2637
@Inject
2738
lateinit var kakaoSignService: KakaoAuthService
2839
private lateinit var gpDataSource: GPDataSource
29-
private val viewModel by viewModels<AuthViewModel>()
40+
private val authViewModel by viewModels<AuthViewModel>()
41+
private val filterViewModel by viewModels<FilterSettingViewModel>()
3042

3143
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
3244
super.onViewCreated(view, savedInstanceState)
3345
binding.lifecycleOwner = this.viewLifecycleOwner
3446

3547
initLayout()
3648
addListener()
49+
collectData()
3750
}
3851

3952
private fun addListener() {
4053
binding.ivDismiss.setOnClickListener { dismiss() }
4154

4255
binding.btnStartKakao.setOnClickListener {
43-
kakaoSignService.startKakaoLogin(viewModel::signUp)
56+
kakaoSignService.startKakaoLogin(authViewModel::signUp)
4457
}
4558

4659
binding.tvSignupWithEmail.setOnClickListener {
47-
gpDataSource = GPDataSource(it.context)
48-
gpDataSource.platformType = PlatformType.NONE.name
4960
moveToSignUp()
5061
}
5162

@@ -58,17 +69,49 @@ class LoginNeededDialog(
5869
binding.loginNeedType = loginNeededType
5970
}
6071

61-
private fun moveToSignUp() {
62-
val intent = Intent(requireContext(), SignUpActivity::class.java)
72+
private fun collectData() {
73+
gpDataSource = GPDataSource(requireContext())
74+
// 카카오 회원 가입, 로그인
75+
authViewModel.authRoleType.flowWithLifecycle(lifecycle).onEach { role ->
76+
when (role) {
77+
// 카카오 회원가입인 경우 닉네임 페이지로 이동
78+
AuthRoleType.ROLE_GUEST -> {
79+
moveToNickNameSetting()
80+
}
81+
82+
// 카카오 로그인인 경우 홈으로 이동
83+
AuthRoleType.ROLE_MEMBER -> {
84+
AmplitudeUtils.trackEvent(SignActivity.LOGIN_APP)
85+
if (filterViewModel.filterStatus.value == true) {
86+
gpDataSource.userRoleType = UserRoleType.FILTER_SELECTED_MEMBER.name
87+
} else
88+
gpDataSource.userRoleType = UserRoleType.FILTER_UNSELECTED_MEMBER.name
89+
moveToMain()
90+
}
91+
92+
else -> {}
93+
}
94+
}.launchIn(lifecycleScope)
95+
}
96+
97+
private fun moveToNickNameSetting() {
98+
startActivity(Intent(requireContext(), SignUpNicknameActivity::class.java))
99+
}
100+
101+
private fun moveToMain() {
102+
val intent = Intent(requireContext(), MainActivity::class.java)
63103
intent.flags =
64104
Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
65105
startActivity(intent)
66106
}
67107

108+
private fun moveToSignUp() {
109+
gpDataSource = GPDataSource(requireContext())
110+
gpDataSource.platformType = PlatformType.NONE.name
111+
startActivity(Intent(requireContext(), SignUpActivity::class.java))
112+
}
113+
68114
private fun moveToLogIn() {
69-
val intent = Intent(requireContext(), LoginActivity::class.java)
70-
intent.flags =
71-
Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
72-
startActivity(intent)
115+
startActivity(Intent(requireContext(), LoginActivity::class.java))
73116
}
74117
}

0 commit comments

Comments
 (0)