Skip to content

Commit

Permalink
Merge pull request #307 from TeamBeMyPlan/feature/306
Browse files Browse the repository at this point in the history
[feature] 로그인 유도 로직 구현
  • Loading branch information
hansh0101 authored Jun 22, 2022
2 parents 58e13e8 + 88ee769 commit 8e17664
Show file tree
Hide file tree
Showing 5 changed files with 123 additions and 38 deletions.
39 changes: 30 additions & 9 deletions app/src/main/java/co/kr/bemyplan/ui/list/ListActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,16 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import co.kr.bemyplan.R
import co.kr.bemyplan.data.firebase.FirebaseAnalyticsProvider
import co.kr.bemyplan.data.local.BeMyPlanDataStore
import co.kr.bemyplan.databinding.ActivityListBinding
import co.kr.bemyplan.ui.list.adapter.ListAdapter
import co.kr.bemyplan.ui.list.viewmodel.ListViewModel
import co.kr.bemyplan.ui.login.LoginActivity
import co.kr.bemyplan.ui.purchase.after.AfterPurchaseActivity
import co.kr.bemyplan.ui.purchase.before.PurchaseActivity
import co.kr.bemyplan.ui.sort.SortFragment
import co.kr.bemyplan.ui.sort.viewmodel.SortViewModel
import co.kr.bemyplan.util.CustomDialog
import dagger.hilt.android.AndroidEntryPoint
import timber.log.Timber
import javax.inject.Inject
Expand All @@ -44,6 +47,9 @@ class ListActivity : AppCompatActivity() {
}
}

@Inject
lateinit var beMyPlanDataStore: BeMyPlanDataStore

@Inject
lateinit var firebaseAnalyticsProvider: FirebaseAnalyticsProvider

Expand Down Expand Up @@ -103,13 +109,27 @@ class ListActivity : AppCompatActivity() {

private fun initRecyclerView() {
listAdapter = ListAdapter({
viewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
if(beMyPlanDataStore.userId != 0) {
viewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
} else {
val dialog = CustomDialog(this, "", "")
dialog.setOnClickedListener(object: CustomDialog.ButtonClickListener {
override fun onClicked(num: Int) {
if(num == 1) {
val intent = Intent(this@ListActivity, LoginActivity::class.java)
startActivity(intent)
finishAffinity()
}
}
})
dialog.showLoginDialog()
}
}, { planId, scrapStatus ->
when (scrapStatus) {
true -> viewModel.deleteScrap(planId)
Expand All @@ -120,9 +140,10 @@ class ListActivity : AppCompatActivity() {
rvLinearContent.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
if(dy > 0) {
if (dy > 0) {
if (!rvLinearContent.canScrollVertically(1) &&
(recyclerView.layoutManager as LinearLayoutManager).findLastVisibleItemPosition() == listAdapter.itemCount - 1) {
(recyclerView.layoutManager as LinearLayoutManager).findLastVisibleItemPosition() == listAdapter.itemCount - 1
) {
when (from) {
"new" -> {
viewModel.fetchMoreLatestList()
Expand Down
61 changes: 40 additions & 21 deletions app/src/main/java/co/kr/bemyplan/ui/main/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import androidx.fragment.app.viewModels
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.CompositePageTransformer
import co.kr.bemyplan.data.firebase.FirebaseAnalyticsProvider
import co.kr.bemyplan.data.local.BeMyPlanDataStore
import co.kr.bemyplan.databinding.FragmentHomeBinding
import co.kr.bemyplan.ui.list.ListActivity
import co.kr.bemyplan.ui.purchase.after.AfterPurchaseActivity
Expand All @@ -27,6 +28,9 @@ class HomeFragment : Fragment() {
private val binding get() = _binding ?: error("Binding이 초기화 되지 않았습니다.")
private val homeViewModel: HomeViewModel by viewModels()

@Inject
lateinit var beMyPlanDataStore: BeMyPlanDataStore

@Inject
lateinit var firebaseAnalyticsProvider: FirebaseAnalyticsProvider

Expand Down Expand Up @@ -82,39 +86,54 @@ class HomeFragment : Fragment() {

private fun initAdapterNew() {
recentAdapter = HomeAdapter {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
if (beMyPlanDataStore.userId != 0) {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
} else {
val intent = Intent(requireContext(), PurchaseActivity::class.java)
startActivity(intent)
}
}
binding.rvRecent.adapter = recentAdapter
}

private fun initAdapterSuggest() {
editorAdapter = HomeAdapter {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
if (beMyPlanDataStore.userId != 0) {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
} else {
val intent = Intent(requireContext(), PurchaseActivity::class.java)
startActivity(intent)
}
}
binding.rvEditorSuggest.adapter = editorAdapter
}

private fun initAdapterPopular() {
homeViewPagerAdapter = HomeViewPagerAdapter {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
if (beMyPlanDataStore.userId != 0) {
homeViewModel.checkPurchased(it.planId)
observeDataForStartActivity(
it.planId,
it.user.nickname,
it.user.userId,
it.thumbnailUrl
)
} else {
val intent = Intent(requireContext(), PurchaseActivity::class.java)
startActivity(intent)
}
}

with(binding.vpPopular) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package co.kr.bemyplan.ui.main.scrap

import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
Expand All @@ -25,7 +24,7 @@ class ScrapFragment : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
): View {
_binding = DataBindingUtil.inflate(inflater, R.layout.fragment_scrap, container, false)
return binding.root
}
Expand All @@ -43,7 +42,6 @@ class ScrapFragment : Fragment() {
private fun initFragmentContainerView() {
viewModel.getScrapList(sortViewModel.sort.value.toString())
viewModel.scrapList.observe(viewLifecycleOwner) {
Log.d("mlog: ScrapFragment.initFragmentContainerView", "execute")
when (it.size) {
0 -> {
val transaction = childFragmentManager.beginTransaction()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,14 @@ import androidx.fragment.app.add
import androidx.fragment.app.commit
import co.kr.bemyplan.R
import co.kr.bemyplan.data.firebase.FirebaseAnalyticsProvider
import co.kr.bemyplan.data.local.BeMyPlanDataStore
import co.kr.bemyplan.databinding.FragmentBeforeChargingBinding
import co.kr.bemyplan.ui.list.ListActivity
import co.kr.bemyplan.ui.login.LoginActivity
import co.kr.bemyplan.ui.purchase.after.AfterPurchaseActivity
import co.kr.bemyplan.ui.purchase.before.adapter.ContentAdapter
import co.kr.bemyplan.ui.purchase.before.viewmodel.BeforeChargingViewModel
import co.kr.bemyplan.util.CustomDialog
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

Expand All @@ -31,6 +34,9 @@ class BeforeChargingFragment : Fragment() {
private val viewModel by activityViewModels<BeforeChargingViewModel>()
private lateinit var contentAdapter: ContentAdapter

@Inject
lateinit var beMyPlanDataStore: BeMyPlanDataStore

@Inject
lateinit var firebaseAnalyticsProvider: FirebaseAnalyticsProvider

Expand Down Expand Up @@ -184,16 +190,42 @@ class BeforeChargingFragment : Fragment() {

private fun clickPurchase() {
binding.layoutPurchase.setOnClickListener {
parentFragmentManager.commit {
add<ChargingFragment>(R.id.fragment_container_charging)
addToBackStack(null)
if(beMyPlanDataStore.userId != 0) {
parentFragmentManager.commit {
add<ChargingFragment>(R.id.fragment_container_charging)
addToBackStack(null)
}
} else {
val dialog = CustomDialog(requireContext(), "", "")
dialog.setOnClickedListener(object: CustomDialog.ButtonClickListener {
override fun onClicked(num: Int) {
if(num == 1) {
val intent = Intent(requireContext(), LoginActivity::class.java)
startActivity(intent)
requireActivity().finishAffinity()
}
}
})
}
}
}

private fun clickScrap() {
binding.layoutScrap.setOnClickListener {
viewModel.scrap()
if(beMyPlanDataStore.userId != 0) {
viewModel.scrap()
} else {
val dialog = CustomDialog(requireContext(), "", "")
dialog.setOnClickedListener(object: CustomDialog.ButtonClickListener {
override fun onClicked(num: Int) {
if(num == 1) {
val intent = Intent(requireContext(), LoginActivity::class.java)
startActivity(intent)
requireActivity().finishAffinity()
}
}
})
}
}
}
}
17 changes: 16 additions & 1 deletion app/src/main/java/co/kr/bemyplan/util/CustomDialog.kt
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import android.widget.TextView
import androidx.annotation.LayoutRes
import co.kr.bemyplan.R

class CustomDialog(context: Context, val title: String, val content: String) {
class CustomDialog(val context: Context, val title: String, val content: String) {
private val dialog = Dialog(context)
private lateinit var onClickedListener: ButtonClickListener

Expand Down Expand Up @@ -76,4 +76,19 @@ class CustomDialog(context: Context, val title: String, val content: String) {
dialog.dismiss()
}
}

fun showLoginDialog() {
dialog.setContentView(R.layout.dialog_yes_no)
dialog.findViewById<TextView>(R.id.tv_content).text = "로그인이 필요한 서비스입니다.\n로그인 하시겠습니까?"
dialog.window?.setLayout(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.WRAP_CONTENT
)
dialog.window?.setBackgroundDrawableResource(R.drawable.inset_horizontal_24)
dialog.show()
dialog.findViewById<TextView>(R.id.tv_yes).setOnClickListener {
onClickedListener.onClicked(1)
dialog.dismiss()
}
}
}

0 comments on commit 8e17664

Please sign in to comment.