Skip to content

Commit

Permalink
#74 [FEAT] : set up show loading view, home refresh when reselect
Browse files Browse the repository at this point in the history
  • Loading branch information
sohyun127 committed Sep 7, 2024
1 parent 34d3b2d commit 7a04651
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 6 deletions.
8 changes: 6 additions & 2 deletions feature/home/src/main/java/com/teamwable/home/HomeFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>(FragmentHomeBinding::i
fetchFeedFromHomeDetail()
}

fun updateToLoadingState() = viewModel.updateLoadingState()

private fun collect() {
viewLifeCycleScope.launch {
viewModel.uiState.flowWithLifecycle(viewLifeCycle).collect { uiState ->
Expand Down Expand Up @@ -176,10 +178,12 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>(FragmentHomeBinding::i
private fun setSwipeLayout() {
binding.layoutHomeSwipe.setOnRefreshListener {
binding.layoutHomeSwipe.isRefreshing = false
feedAdapter.refresh()
refreshHome()
}
}

fun refreshHome() = feedAdapter.refresh()

private fun initNavigatePostingFabClickListener() {
binding.fabHomeNavigatePosting.setOnClickListener {
findNavController().deepLinkNavigateTo(requireContext(), DeepLinkDestination.Posting)
Expand All @@ -189,7 +193,7 @@ class HomeFragment : BindingFragment<FragmentHomeBinding>(FragmentHomeBinding::i
private fun fetchFeedUploaded() {
parentFragmentManager.setFragmentResultListener(POSTING_RESULT, viewLifecycleOwner) { _, result ->
val isUploaded = result.getBoolean(IS_UPLOADED, false)
if (isUploaded) feedAdapter.refresh()
if (isUploaded) refreshHome()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ class HomeViewModel @Inject constructor(
}
}

fun updateLoadingState() {
viewModelScope.launch {
_uiState.value = HomeUiState.Loading
delay(500) // 로딩뷰를 위한 delay
_uiState.value = HomeUiState.Success
}
}

fun updateFeeds(): Flow<PagingData<Feed>> {
return combine(feedsFlow, removedFeedsFlow, ghostedFeedsFlow, likeFeedsFlow) { feedsFlow, removedFeedIds, ghostedUserIds, likeStates ->
feedsFlow
Expand Down
44 changes: 40 additions & 4 deletions feature/main/src/main/java/com/teamwable/main/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,21 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.NavDestination
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.onNavDestinationSelected
import androidx.navigation.ui.setupWithNavController
import com.teamwable.common.uistate.UiState
import com.teamwable.home.HomeFragment
import com.teamwable.main.databinding.ActivityMainBinding
import com.teamwable.ui.extensions.colorOf
import com.teamwable.ui.extensions.restartApp
import com.teamwable.ui.extensions.toast
import com.teamwable.ui.extensions.visible
import com.teamwable.ui.util.Navigation
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
import timber.log.Timber

@AndroidEntryPoint
Expand All @@ -47,10 +51,7 @@ class MainActivity : AppCompatActivity(), Navigation {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)

appUpdateHelper = AppUpdateHandler(this)
appUpdateHelper.checkForAppUpdate(activityResultLauncher)

setInAppUpdate()
initView()
requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
}
Expand All @@ -60,6 +61,11 @@ class MainActivity : AppCompatActivity(), Navigation {
appUpdateHelper.resumeUpdateIfNeeded(activityResultLauncher)
}

private fun setInAppUpdate() {
appUpdateHelper = AppUpdateHandler(this)
appUpdateHelper.checkForAppUpdate(activityResultLauncher)
}

private fun initView() {
setBottomNavigation()

Expand Down Expand Up @@ -93,6 +99,8 @@ class MainActivity : AppCompatActivity(), Navigation {
}

initBottomNavigationChangedListener(navController)
initBottomNaviSelectedListener(navController)
initBottomNaviReSelectedListener(navController)
}

private fun initBottomNavigationChangedListener(navController: NavController) {
Expand Down Expand Up @@ -145,6 +153,34 @@ class MainActivity : AppCompatActivity(), Navigation {
binding.bnvMain.selectedItemId = R.id.graph_news
}

private fun initBottomNaviSelectedListener(navController: NavController) {
binding.bnvMain.setOnItemSelectedListener {
if (it.itemId == R.id.graph_home) {
lifecycleScope.launch {
delay(100)
findHomeFragment()?.updateToLoadingState()
}
}
it.onNavDestinationSelected(navController)
}
}

private fun initBottomNaviReSelectedListener(navController: NavController) {
binding.bnvMain.setOnItemReselectedListener {
if (it.itemId == R.id.graph_home) {
lifecycleScope.launch {
delay(100)
findHomeFragment()?.refreshHome()
}
}
it.onNavDestinationSelected(navController)
}
}

private fun findHomeFragment(): HomeFragment? = supportFragmentManager.findFragmentById(R.id.fcv_main)?.let { hostFragment ->
hostFragment.childFragmentManager.fragments.firstOrNull { it is HomeFragment } as? HomeFragment
}

companion object {
fun createIntent(context: Context) = Intent(context, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
Expand Down

0 comments on commit 7a04651

Please sign in to comment.