-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG] #117 : 탐색 화면의 검색 조건이 초기화되는 이슈 수정 #118
base: dev
Are you sure you want to change the base?
The head ref may contain hidden characters: "fix/#117-\uAC80\uC0C9\uC870\uAC74-\uCD08\uAE30\uD654"
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
package com.peonlee.core.ui.base | ||
|
||
/** | ||
* page 전환을 할 수 있는 Activity interface | ||
*/ | ||
interface PageActivity { | ||
fun moveToEvaluatePage() | ||
} | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,20 +7,25 @@ import androidx.activity.viewModels | |
import androidx.core.view.isVisible | ||
import androidx.core.widget.addTextChangedListener | ||
import com.peonlee.core.ui.base.BaseActivity | ||
import com.peonlee.core.ui.base.ProductSearchableViewModel | ||
import com.peonlee.core.ui.extensions.hideKeyboard | ||
import com.peonlee.core.ui.extensions.trim | ||
import com.peonlee.core.ui.viewmodel.ProductViewModel | ||
import com.peonlee.data.product.ProductRepository | ||
import com.peonlee.explore.databinding.ActivityExploreActivityBinding | ||
import com.peonlee.product.ProductFragment | ||
import dagger.hilt.android.AndroidEntryPoint | ||
import javax.inject.Inject | ||
|
||
@AndroidEntryPoint | ||
class ExploreActivity : BaseActivity<ActivityExploreActivityBinding>() { | ||
private val exploreViewModel: ProductSearchableViewModel by viewModels { ExploreViewModel.ExploreViewModelFactory() } | ||
@Inject | ||
lateinit var productRepository: ProductRepository | ||
private val productViewModel: ProductViewModel by viewModels { ProductViewModel.ProductViewModelFactory(productRepository) } | ||
|
||
override fun bindingFactory(): ActivityExploreActivityBinding = ActivityExploreActivityBinding.inflate(layoutInflater) | ||
|
||
override fun initViews() { | ||
println(exploreViewModel) | ||
productViewModel | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 이렇게 ViewModel 하나만 있어도 괜찮나요~?.? |
||
attachProductFragment() | ||
} | ||
|
||
|
@@ -47,7 +52,7 @@ class ExploreActivity : BaseActivity<ActivityExploreActivityBinding>() { | |
private fun searchResult() { | ||
binding.apply { | ||
layoutSearchProduct.isVisible = true | ||
(exploreViewModel as? ExploreViewModel)?.setKeyword(etExploreBar.trim()) | ||
productViewModel.setKeyword(etExploreBar.trim()) | ||
etExploreBar.clearFocus() | ||
etExploreBar.hideKeyboard() | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,18 +7,15 @@ import android.view.ViewGroup.LayoutParams.WRAP_CONTENT | |
import androidx.constraintlayout.widget.ConstraintLayout | ||
import androidx.core.view.isVisible | ||
import androidx.fragment.app.activityViewModels | ||
import androidx.fragment.app.viewModels | ||
import androidx.lifecycle.Lifecycle | ||
import androidx.lifecycle.flowWithLifecycle | ||
import androidx.lifecycle.lifecycleScope | ||
import androidx.lifecycle.repeatOnLifecycle | ||
import androidx.recyclerview.widget.GridLayoutManager | ||
import com.google.android.material.tabs.TabLayout | ||
import com.peonlee.core.ui.Navigator | ||
import com.peonlee.core.ui.adapter.decoration.ContentPaddingDecoration | ||
import com.peonlee.core.ui.base.BaseBottomSheetFragment | ||
import com.peonlee.core.ui.base.BaseFragment | ||
import com.peonlee.core.ui.base.ProductSearchableViewModel | ||
import com.peonlee.core.ui.viewmodel.ProductViewModel | ||
import com.peonlee.model.product.ProductSearchConditionUiModel | ||
import com.peonlee.model.type.SortType | ||
import com.peonlee.model.type.toRangeString | ||
|
@@ -34,16 +31,14 @@ import com.peonlee.product.ui.PriceFilterBottomSheetFragment | |
import dagger.hilt.android.AndroidEntryPoint | ||
import kotlinx.coroutines.flow.launchIn | ||
import kotlinx.coroutines.flow.onEach | ||
import kotlinx.coroutines.launch | ||
import javax.inject.Inject | ||
|
||
@AndroidEntryPoint | ||
class ProductFragment : BaseFragment<FragmentProductBinding>() { | ||
@Inject | ||
lateinit var navigator: Navigator | ||
|
||
private val exploreViewModel: ProductSearchableViewModel by activityViewModels() | ||
private val productViewModel: ProductViewModel by viewModels() | ||
private val productViewModel: ProductViewModel by activityViewModels() | ||
|
||
private var currentBottomSheet: BaseBottomSheetFragment? = null | ||
private val priceFilter by lazy { | ||
|
@@ -69,7 +64,7 @@ class ProductFragment : BaseFragment<FragmentProductBinding>() { | |
} | ||
|
||
override fun initViews() = with(binding) { | ||
observeKeyword() | ||
// observeKeyword() | ||
|
||
SortType.values().forEach { | ||
tabProductSort.addTab( | ||
|
@@ -177,16 +172,15 @@ class ProductFragment : BaseFragment<FragmentProductBinding>() { | |
?.show(childFragmentManager, "Filter") | ||
} | ||
|
||
private fun observeKeyword() { | ||
println(exploreViewModel) | ||
viewLifecycleOwner.lifecycleScope.launch { | ||
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { | ||
exploreViewModel.productSearchCondition.collect { | ||
productViewModel.setProductSearchCondition(it) | ||
} | ||
} | ||
} | ||
} | ||
// private fun observeKeyword() { | ||
// viewLifecycleOwner.lifecycleScope.launch { | ||
// viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { | ||
// exploreViewModel.productSearchCondition.collect { | ||
// productViewModel.setProductSearchCondition(it) | ||
// } | ||
// } | ||
// } | ||
// } | ||
Comment on lines
+175
to
+183
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 주석은 지워도 될 듯! |
||
|
||
companion object { | ||
fun getInstance(): ProductFragment = ProductFragment() | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -8,7 +8,8 @@ import androidx.lifecycle.flowWithLifecycle | |
import androidx.lifecycle.lifecycleScope | ||
import com.peonlee.core.ui.Navigator | ||
import com.peonlee.core.ui.base.BaseFragment | ||
import com.peonlee.core.ui.base.ProductSearchableViewModel | ||
import com.peonlee.core.ui.base.PageActivity | ||
import com.peonlee.core.ui.viewmodel.ProductViewModel | ||
import com.peonlee.home.adapter.HomeAdapter | ||
import com.peonlee.home.databinding.FragmentHomeBinding | ||
import dagger.hilt.android.AndroidEntryPoint | ||
|
@@ -20,15 +21,20 @@ import javax.inject.Inject | |
class HomeFragment : BaseFragment<FragmentHomeBinding>() { | ||
@Inject | ||
lateinit var navigator: Navigator | ||
|
||
private val productSearchableViewModel: ProductViewModel by activityViewModels() | ||
private val homeViewModel: HomeViewModel by viewModels() | ||
private val productSearchableViewModel: ProductSearchableViewModel by activityViewModels() | ||
|
||
private val homeAdapter by lazy { | ||
HomeAdapter( | ||
navigator = navigator, | ||
moveToConditionExplore = productSearchableViewModel::changeSortType, | ||
moveToStoreExplore = productSearchableViewModel::changeStoreType | ||
moveToConditionExplore = { | ||
(requireActivity() as? PageActivity)?.moveToEvaluatePage() | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
productSearchableViewModel.setProductSortType(it, true) | ||
}, | ||
moveToStoreExplore = { | ||
(requireActivity() as? PageActivity)?.moveToEvaluatePage() | ||
productSearchableViewModel.setStoreType(it, true) | ||
} | ||
) | ||
} | ||
|
||
|
@@ -38,6 +44,7 @@ class HomeFragment : BaseFragment<FragmentHomeBinding>() { | |
|
||
override fun initViews() { | ||
binding.rvHome.adapter = homeAdapter | ||
// productSearchableViewModel | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요기도 주석 지워주세요~ |
||
binding.btnSearch.setOnClickListener { | ||
navigator.navigateToSearch(requireContext()) | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,17 +6,24 @@ import androidx.activity.viewModels | |
import androidx.lifecycle.flowWithLifecycle | ||
import androidx.lifecycle.lifecycleScope | ||
import com.peonlee.core.ui.base.BaseActivity | ||
import com.peonlee.core.ui.base.ProductSearchableViewModel | ||
import com.peonlee.core.ui.base.PageActivity | ||
import com.peonlee.core.ui.viewmodel.ProductViewModel | ||
import com.peonlee.data.product.ProductRepository | ||
import com.peonlee.main.databinding.ActivityMainBinding | ||
import dagger.hilt.android.AndroidEntryPoint | ||
import kotlinx.coroutines.flow.launchIn | ||
import kotlinx.coroutines.flow.onEach | ||
import javax.inject.Inject | ||
|
||
@AndroidEntryPoint | ||
class MainActivity : BaseActivity<ActivityMainBinding>() { | ||
private val mainViewModel: ProductSearchableViewModel by viewModels { MainViewModel.MainViewModelFactory() } | ||
class MainActivity : BaseActivity<ActivityMainBinding>(), PageActivity { | ||
@Inject | ||
lateinit var productRepository: ProductRepository | ||
private val productViewModel: ProductViewModel by viewModels { ProductViewModel.ProductViewModelFactory(productRepository) } | ||
private val mainViewModel: MainViewModel by viewModels { MainViewModel.MainViewModelFactory() } | ||
Comment on lines
+22
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 궁금한게 있읍니다 ㅎㅎ |
||
|
||
override fun initViews() { | ||
productViewModel | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 요거는 어떤 코드일까요? |
||
binding.bottomNav.setOnItemSelectedListener { | ||
(mainViewModel as? MainViewModel)?.changeSelectedNav(it.itemId) | ||
true | ||
|
@@ -52,6 +59,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>() { | |
super.onBackPressed() | ||
} | ||
|
||
override fun moveToEvaluatePage() { | ||
mainViewModel.changeSelectedNav(R.id.navExplore) | ||
} | ||
|
||
companion object { | ||
fun startActivity(context: Context) { | ||
context.startActivity( | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
요거 navigator 이용하면 되지 않나욤?