feat(chat-character): 캐릭터 탭 모든 액션
- 로그인과 본인인증이 되어 있어야 가능하도록 수정
This commit is contained in:
@@ -26,6 +26,11 @@ import kr.co.vividnext.sodalive.common.SharedPreferenceManager
|
|||||||
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
|
import kr.co.vividnext.sodalive.databinding.FragmentCharacterTabBinding
|
||||||
import kr.co.vividnext.sodalive.extensions.dpToPx
|
import kr.co.vividnext.sodalive.extensions.dpToPx
|
||||||
import kr.co.vividnext.sodalive.main.MainActivity
|
import kr.co.vividnext.sodalive.main.MainActivity
|
||||||
|
import kr.co.vividnext.sodalive.mypage.MyPageViewModel
|
||||||
|
import kr.co.vividnext.sodalive.mypage.auth.Auth
|
||||||
|
import kr.co.vividnext.sodalive.mypage.auth.AuthVerifyRequest
|
||||||
|
import kr.co.vividnext.sodalive.splash.SplashActivity
|
||||||
|
import com.google.gson.Gson
|
||||||
import org.koin.android.ext.android.inject
|
import org.koin.android.ext.android.inject
|
||||||
|
|
||||||
// 캐릭터 탭 프래그먼트
|
// 캐릭터 탭 프래그먼트
|
||||||
@@ -34,6 +39,7 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
FragmentCharacterTabBinding::inflate
|
FragmentCharacterTabBinding::inflate
|
||||||
) {
|
) {
|
||||||
private val viewModel: CharacterTabViewModel by inject()
|
private val viewModel: CharacterTabViewModel by inject()
|
||||||
|
private val myPageViewModel: MyPageViewModel by inject()
|
||||||
|
|
||||||
private lateinit var contentBannerAdapter: CharacterBannerAdapter
|
private lateinit var contentBannerAdapter: CharacterBannerAdapter
|
||||||
private lateinit var recentCharacterAdapter: RecentCharacterAdapter
|
private lateinit var recentCharacterAdapter: RecentCharacterAdapter
|
||||||
@@ -75,14 +81,12 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
pagerWidth,
|
pagerWidth,
|
||||||
pagerHeight
|
pagerHeight
|
||||||
) {
|
) {
|
||||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
ensureLoginAndAuth {
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(requireContext(), CharacterDetailActivity::class.java).apply {
|
Intent(requireContext(), CharacterDetailActivity::class.java).apply {
|
||||||
putExtra(EXTRA_CHARACTER_ID, it.characterId)
|
putExtra(EXTRA_CHARACTER_ID, it.characterId)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
(requireActivity() as MainActivity).showLoginActivity()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -353,6 +357,47 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun ensureLoginAndAuth(onAuthed: () -> Unit) {
|
||||||
|
if (SharedPreferenceManager.token.isBlank()) {
|
||||||
|
(requireActivity() as MainActivity).showLoginActivity()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SharedPreferenceManager.isAuth) {
|
||||||
|
Toast.makeText(requireContext(), "본인인증이 필요합니다.", Toast.LENGTH_LONG).show()
|
||||||
|
startAuthFlow()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
onAuthed()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startAuthFlow() {
|
||||||
|
Auth.auth(requireActivity(), requireContext()) { json ->
|
||||||
|
val bootpayResponse = Gson().fromJson(
|
||||||
|
json,
|
||||||
|
kr.co.vividnext.sodalive.mypage.auth.BootpayResponse::class.java
|
||||||
|
)
|
||||||
|
val request = AuthVerifyRequest(receiptId = bootpayResponse.data.receiptId)
|
||||||
|
requireActivity().runOnUiThread {
|
||||||
|
myPageViewModel.authVerify(request) {
|
||||||
|
startActivity(
|
||||||
|
Intent(
|
||||||
|
requireContext(),
|
||||||
|
SplashActivity::class.java
|
||||||
|
).apply {
|
||||||
|
addFlags(
|
||||||
|
Intent.FLAG_ACTIVITY_CLEAR_TASK or
|
||||||
|
Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
|
)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
requireActivity().finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun observeViewModel() {
|
private fun observeViewModel() {
|
||||||
viewModel.isLoading.observe(viewLifecycleOwner) {
|
viewModel.isLoading.observe(viewLifecycleOwner) {
|
||||||
if (it) {
|
if (it) {
|
||||||
@@ -372,14 +417,12 @@ class CharacterTabFragment : BaseFragment<FragmentCharacterTabBinding>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun onCharacterClick(characterId: Long) {
|
private fun onCharacterClick(characterId: Long) {
|
||||||
if (SharedPreferenceManager.token.isNotBlank()) {
|
ensureLoginAndAuth {
|
||||||
startActivity(
|
startActivity(
|
||||||
Intent(requireContext(), CharacterDetailActivity::class.java).apply {
|
Intent(requireContext(), CharacterDetailActivity::class.java).apply {
|
||||||
putExtra(EXTRA_CHARACTER_ID, characterId)
|
putExtra(EXTRA_CHARACTER_ID, characterId)
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
} else {
|
|
||||||
(requireActivity() as MainActivity).showLoginActivity()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user