From 254124061e8c0ef1ad13b59d6a2596ccf9122aef Mon Sep 17 00:00:00 2001 From: leeeha Date: Sun, 10 Sep 2023 16:31:05 +0900 Subject: [PATCH] =?UTF-8?q?[fix]=20#192=20=EB=A7=88=EC=9D=B4=ED=94=BC?= =?UTF-8?q?=EB=93=9C=20=ED=94=84=EB=9E=98=EA=B7=B8=EB=A8=BC=ED=8A=B8?= =?UTF-8?q?=EC=97=90=EC=84=9C=EB=8F=84=20onStart=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=9E=AC=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=ED=95=98=EC=A7=80=20=EC=95=8A=EB=8F=84=EB=A1=9D=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/feed/WineyFeedFragment.kt | 2 +- .../main/mypage/myfeed/MyFeedFragment.kt | 80 +++++++++---------- .../main/mypage/myfeed/MyFeedViewModel.kt | 2 +- 3 files changed, 40 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/org/go/sopt/winey/presentation/main/feed/WineyFeedFragment.kt b/app/src/main/java/org/go/sopt/winey/presentation/main/feed/WineyFeedFragment.kt index f01ae86d..eac38fe0 100644 --- a/app/src/main/java/org/go/sopt/winey/presentation/main/feed/WineyFeedFragment.kt +++ b/app/src/main/java/org/go/sopt/winey/presentation/main/feed/WineyFeedFragment.kt @@ -391,7 +391,7 @@ class WineyFeedFragment : private fun navigateToDetail(wineyFeed: WineyFeed) { val currentItemSnapshotList = wineyFeedAdapter.snapshot() - Timber.e("CURRENT PAGE SIZE: ${currentItemSnapshotList.size}") + Timber.e("CURRENT ITEM SIZE: ${currentItemSnapshotList.size}") selectedItemIndex = currentItemSnapshotList.indexOf(wineyFeed) Timber.e("CLICKED ITEM INDEX: $selectedItemIndex") diff --git a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedFragment.kt b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedFragment.kt index 7c6dee83..abc96935 100644 --- a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedFragment.kt +++ b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedFragment.kt @@ -2,7 +2,6 @@ package org.go.sopt.winey.presentation.main.mypage.myfeed import android.content.Intent import android.os.Bundle -import android.os.Parcelable import android.view.Gravity import android.view.View import androidx.core.view.isVisible @@ -17,7 +16,6 @@ import androidx.lifecycle.repeatOnLifecycle import androidx.paging.LoadState import androidx.paging.PagingData import androidx.recyclerview.widget.SimpleItemAnimator -import com.google.android.material.bottomnavigation.BottomNavigationView import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.launchIn @@ -38,16 +36,14 @@ import org.go.sopt.winey.util.fragment.viewLifeCycleScope import org.go.sopt.winey.util.fragment.wineySnackbar import org.go.sopt.winey.util.view.UiState import org.go.sopt.winey.util.view.WineyPopupMenu -import org.go.sopt.winey.util.view.setOnSingleClickListener import timber.log.Timber @AndroidEntryPoint class MyFeedFragment : BindingFragment(R.layout.fragment_myfeed) { - private var selectedScrollPosition: Parcelable? = null - private var selectedItemIndex: Int = -1 private val viewModel by viewModels() private lateinit var myFeedAdapter: MyFeedAdapter private lateinit var wineyFeedLoadAdapter: WineyFeedLoadAdapter + private var selectedItemIndex: Int = -1 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -61,11 +57,6 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ initDeleteFeedStateObserver() } - override fun onStart() { - super.onStart() - viewModel.getMyFeed() - } - private fun initAdapter() { wineyFeedLoadAdapter = WineyFeedLoadAdapter() myFeedAdapter = MyFeedAdapter( @@ -81,6 +72,7 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ } private fun restoreScrollPosition() { + Timber.e("RESTORE ITEM INDEX: $selectedItemIndex") binding.rvMyfeedPost.post { if (selectedItemIndex != -1) { binding.rvMyfeedPost.layoutManager?.scrollToPosition(selectedItemIndex + 1) @@ -130,7 +122,7 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ } private fun initBackButtonClickListener() { - binding.imgMyfeedBack.setOnSingleClickListener { + binding.imgMyfeedBack.setOnClickListener { navigateTo() parentFragmentManager.popBackStack() } @@ -178,25 +170,7 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ viewModel.getMyFeedListState.collectLatest { state -> when (state) { is UiState.Success -> { - myFeedAdapter.addLoadStateListener { loadState -> - when (loadState.refresh) { - is LoadState.Loading -> { - binding.clMyfeedEmpty.isVisible = false - binding.rvMyfeedPost.isVisible = false - } - - is LoadState.NotLoading -> { - binding.rvMyfeedPost.isVisible = myFeedAdapter.itemCount > 0 - binding.clMyfeedEmpty.isVisible = - myFeedAdapter.itemCount == 0 - restoreScrollPosition() - } - - is LoadState.Error -> { - Timber.tag("failure").e(MSG_MYFEED_ERROR) - } - } - } + initPagingLoadStateListener() myFeedAdapter.submitData(state.data) } @@ -211,6 +185,28 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ } } + private fun initPagingLoadStateListener() { + myFeedAdapter.addLoadStateListener { loadState -> + when (loadState.refresh) { + is LoadState.Loading -> { + binding.clMyfeedEmpty.isVisible = false + binding.rvMyfeedPost.isVisible = false + } + + is LoadState.NotLoading -> { + binding.rvMyfeedPost.isVisible = myFeedAdapter.itemCount > 0 + binding.clMyfeedEmpty.isVisible = + myFeedAdapter.itemCount == 0 + restoreScrollPosition() + } + + is LoadState.Error -> { + Timber.tag("failure").e(MSG_MYFEED_ERROR) + } + } + } + } + private fun initPostLikeStateObserver() { viewModel.postMyFeedLikeState.flowWithLifecycle(viewLifeCycle).onEach { state -> when (state) { @@ -232,33 +228,33 @@ class MyFeedFragment : BindingFragment(R.layout.fragment_ } private fun navigateToDetail(wineyFeed: WineyFeed) { - selectedItemIndex = myFeedAdapter.snapshot().indexOf(wineyFeed) - selectedScrollPosition = binding.rvMyfeedPost.layoutManager?.onSaveInstanceState() - - val intent = Intent(requireContext(), DetailActivity::class.java) - intent.putExtra(KEY_FEED_ID, wineyFeed.feedId) - intent.putExtra(KEY_FEED_WRITER_ID, wineyFeed.userId) - intent.putExtra(KEY_PREV_SCREEN, MY_FEED_SCREEN) - startActivity(intent) + val currentItemSnapshotList = myFeedAdapter.snapshot() + Timber.e("CURRENT ITEM SIZE: ${currentItemSnapshotList.size}") + + selectedItemIndex = currentItemSnapshotList.indexOf(wineyFeed) + Timber.e("CLICKED ITEM INDEX: $selectedItemIndex") + + Intent(requireContext(), DetailActivity::class.java).apply { + putExtra(KEY_FEED_ID, wineyFeed.feedId) + putExtra(KEY_FEED_WRITER_ID, wineyFeed.userId) + putExtra(KEY_PREV_SCREEN, MY_FEED_SCREEN) + startActivity(this) + } } private inline fun navigateTo() { parentFragmentManager.commit { replace(R.id.fcv_main, T::class.simpleName) } - val bottomNav: BottomNavigationView = requireActivity().findViewById(R.id.bnv_main) - bottomNav.selectedItemId = R.id.menu_mypage } companion object { private const val KEY_FEED_ID = "feedId" private const val KEY_FEED_WRITER_ID = "feedWriterId" private const val KEY_PREV_SCREEN = "PREV_SCREEN_NAME" - private const val POPUP_MENU_OFFSET = 65 private const val MSG_MYFEED_ERROR = "ERROR" private const val TAG_FEED_DELETE_DIALOG = "DELETE_DIALOG" - private const val MY_FEED_SCREEN = "MyFeedFragment" } } diff --git a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedViewModel.kt b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedViewModel.kt index 831554a9..10008bae 100644 --- a/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedViewModel.kt +++ b/app/src/main/java/org/go/sopt/winey/presentation/main/mypage/myfeed/MyFeedViewModel.kt @@ -59,7 +59,7 @@ class MyFeedViewModel @Inject constructor( } } - fun getMyFeed() { + private fun getMyFeed() { viewModelScope.launch { _getMyFeedListState.emit(UiState.Loading)