@@ -4,17 +4,28 @@ import android.content.Intent
4
4
import android.os.Bundle
5
5
import android.view.View
6
6
import androidx.fragment.app.viewModels
7
+ import androidx.lifecycle.flowWithLifecycle
8
+ import androidx.lifecycle.lifecycleScope
7
9
import com.sopt.geonppang.R
8
10
import com.sopt.geonppang.data.datasource.local.GPDataSource
9
11
import com.sopt.geonppang.data.service.KakaoAuthService
10
12
import com.sopt.geonppang.databinding.DialogBottomLoginNeededBinding
13
+ import com.sopt.geonppang.presentation.MainActivity
11
14
import com.sopt.geonppang.presentation.auth.AuthViewModel
15
+ import com.sopt.geonppang.presentation.auth.SignActivity
12
16
import com.sopt.geonppang.presentation.auth.SignUpActivity
17
+ import com.sopt.geonppang.presentation.auth.SignUpNicknameActivity
18
+ import com.sopt.geonppang.presentation.filterSetting.FilterSettingViewModel
13
19
import com.sopt.geonppang.presentation.login.LoginActivity
20
+ import com.sopt.geonppang.presentation.type.AuthRoleType
14
21
import com.sopt.geonppang.presentation.type.LoginNeededType
15
22
import com.sopt.geonppang.presentation.type.PlatformType
23
+ import com.sopt.geonppang.presentation.type.UserRoleType
24
+ import com.sopt.geonppang.util.AmplitudeUtils
16
25
import com.sopt.geonppang.util.binding.BindingBottomSheetDialogFragment
17
26
import dagger.hilt.android.AndroidEntryPoint
27
+ import kotlinx.coroutines.flow.launchIn
28
+ import kotlinx.coroutines.flow.onEach
18
29
import javax.inject.Inject
19
30
20
31
@AndroidEntryPoint
@@ -26,26 +37,26 @@ class LoginNeededDialog(
26
37
@Inject
27
38
lateinit var kakaoSignService: KakaoAuthService
28
39
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 >()
30
42
31
43
override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
32
44
super .onViewCreated(view, savedInstanceState)
33
45
binding.lifecycleOwner = this .viewLifecycleOwner
34
46
35
47
initLayout()
36
48
addListener()
49
+ collectData()
37
50
}
38
51
39
52
private fun addListener () {
40
53
binding.ivDismiss.setOnClickListener { dismiss() }
41
54
42
55
binding.btnStartKakao.setOnClickListener {
43
- kakaoSignService.startKakaoLogin(viewModel ::signUp)
56
+ kakaoSignService.startKakaoLogin(authViewModel ::signUp)
44
57
}
45
58
46
59
binding.tvSignupWithEmail.setOnClickListener {
47
- gpDataSource = GPDataSource (it.context)
48
- gpDataSource.platformType = PlatformType .NONE .name
49
60
moveToSignUp()
50
61
}
51
62
@@ -58,17 +69,49 @@ class LoginNeededDialog(
58
69
binding.loginNeedType = loginNeededType
59
70
}
60
71
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)
63
103
intent.flags =
64
104
Intent .FLAG_ACTIVITY_CLEAR_TASK or Intent .FLAG_ACTIVITY_NEW_TASK
65
105
startActivity(intent)
66
106
}
67
107
108
+ private fun moveToSignUp () {
109
+ gpDataSource = GPDataSource (requireContext())
110
+ gpDataSource.platformType = PlatformType .NONE .name
111
+ startActivity(Intent (requireContext(), SignUpActivity ::class .java))
112
+ }
113
+
68
114
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))
73
116
}
74
117
}
0 commit comments