Skip to content

Commit

Permalink
[feat] #219 둘러보기 중 로그인 유도 바텀 시트로 카카오 회원가입/로그인을 진행하는 경우 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
jooyyoo committed Feb 15, 2024
1 parent e6d43bc commit 84aeb30
Showing 1 changed file with 53 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,28 @@ import android.content.Intent
import android.os.Bundle
import android.view.View
import androidx.fragment.app.viewModels
import androidx.lifecycle.flowWithLifecycle
import androidx.lifecycle.lifecycleScope
import com.sopt.geonppang.R
import com.sopt.geonppang.data.datasource.local.GPDataSource
import com.sopt.geonppang.data.service.KakaoAuthService
import com.sopt.geonppang.databinding.DialogBottomLoginNeededBinding
import com.sopt.geonppang.presentation.MainActivity
import com.sopt.geonppang.presentation.auth.AuthViewModel
import com.sopt.geonppang.presentation.auth.SignActivity
import com.sopt.geonppang.presentation.auth.SignUpActivity
import com.sopt.geonppang.presentation.auth.SignUpNicknameActivity
import com.sopt.geonppang.presentation.filterSetting.FilterSettingViewModel
import com.sopt.geonppang.presentation.login.LoginActivity
import com.sopt.geonppang.presentation.type.AuthRoleType
import com.sopt.geonppang.presentation.type.LoginNeededType
import com.sopt.geonppang.presentation.type.PlatformType
import com.sopt.geonppang.presentation.type.UserRoleType
import com.sopt.geonppang.util.AmplitudeUtils
import com.sopt.geonppang.util.binding.BindingBottomSheetDialogFragment
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import javax.inject.Inject

@AndroidEntryPoint
Expand All @@ -26,26 +37,26 @@ class LoginNeededDialog(
@Inject
lateinit var kakaoSignService: KakaoAuthService
private lateinit var gpDataSource: GPDataSource
private val viewModel by viewModels<AuthViewModel>()
private val authViewModel by viewModels<AuthViewModel>()
private val filterViewModel by viewModels<FilterSettingViewModel>()

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

initLayout()
addListener()
collectData()
}

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

binding.btnStartKakao.setOnClickListener {
kakaoSignService.startKakaoLogin(viewModel::signUp)
kakaoSignService.startKakaoLogin(authViewModel::signUp)
}

binding.tvSignupWithEmail.setOnClickListener {
gpDataSource = GPDataSource(it.context)
gpDataSource.platformType = PlatformType.NONE.name
moveToSignUp()
}

Expand All @@ -58,17 +69,49 @@ class LoginNeededDialog(
binding.loginNeedType = loginNeededType
}

private fun moveToSignUp() {
val intent = Intent(requireContext(), SignUpActivity::class.java)
private fun collectData() {
gpDataSource = GPDataSource(requireContext())
// 카카오 회원 가입, 로그인
authViewModel.authRoleType.flowWithLifecycle(lifecycle).onEach { role ->
when (role) {
// 카카오 회원가입인 경우 닉네임 페이지로 이동
AuthRoleType.ROLE_GUEST -> {
moveToNickNameSetting()
}

// 카카오 로그인인 경우 홈으로 이동
AuthRoleType.ROLE_MEMBER -> {
AmplitudeUtils.trackEvent(SignActivity.LOGIN_APP)
if (filterViewModel.filterStatus.value == true) {
gpDataSource.userRoleType = UserRoleType.FILTER_SELECTED_MEMBER.name
} else
gpDataSource.userRoleType = UserRoleType.FILTER_UNSELECTED_MEMBER.name
moveToMain()
}

else -> {}
}
}.launchIn(lifecycleScope)
}

private fun moveToNickNameSetting() {
startActivity(Intent(requireContext(), SignUpNicknameActivity::class.java))
}

private fun moveToMain() {
val intent = Intent(requireContext(), MainActivity::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
}

private fun moveToSignUp() {
gpDataSource = GPDataSource(requireContext())
gpDataSource.platformType = PlatformType.NONE.name
startActivity(Intent(requireContext(), SignUpActivity::class.java))
}

private fun moveToLogIn() {
val intent = Intent(requireContext(), LoginActivity::class.java)
intent.flags =
Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
startActivity(intent)
startActivity(Intent(requireContext(), LoginActivity::class.java))
}
}

0 comments on commit 84aeb30

Please sign in to comment.