@@ -3,16 +3,20 @@ package org.openedx.app
33import android.os.Bundle
44import android.view.View
55import androidx.core.os.bundleOf
6+ import androidx.core.view.forEach
67import androidx.fragment.app.Fragment
78import androidx.fragment.app.setFragmentResultListener
9+ import androidx.lifecycle.lifecycleScope
810import androidx.viewpager2.widget.ViewPager2
11+ import kotlinx.coroutines.launch
912import org.koin.android.ext.android.inject
1013import org.koin.androidx.viewmodel.ext.android.viewModel
1114import org.openedx.app.adapter.MainNavigationFragmentAdapter
1215import org.openedx.app.databinding.FragmentMainBinding
1316import org.openedx.core.presentation.global.app_upgrade.UpgradeRequiredFragment
1417import org.openedx.core.presentation.global.viewBinding
15- import org.openedx.dashboard.presentation.DashboardFragment
18+ import org.openedx.dashboard.presentation.dashboard.DashboardFragment
19+ import org.openedx.dashboard.presentation.program.ProgramFragment
1620import org.openedx.discovery.presentation.DiscoveryNavigator
1721import org.openedx.discovery.presentation.DiscoveryRouter
1822import org.openedx.profile.presentation.profile.ProfileFragment
@@ -28,6 +32,7 @@ class MainFragment : Fragment(R.layout.fragment_main) {
2832
2933 override fun onCreate (savedInstanceState : Bundle ? ) {
3034 super .onCreate(savedInstanceState)
35+ lifecycle.addObserver(viewModel)
3136 setFragmentResultListener(UpgradeRequiredFragment .REQUEST_KEY ) { _, _ ->
3237 binding.bottomNavView.selectedItemId = R .id.fragmentProfile
3338 viewModel.enableBottomBar(false )
@@ -68,6 +73,14 @@ class MainFragment : Fragment(R.layout.fragment_main) {
6873 enableBottomBar(isBottomBarEnabled)
6974 }
7075
76+ viewLifecycleOwner.lifecycleScope.launch {
77+ viewModel.navigateToDiscovery.collect { shouldNavigateToDiscovery ->
78+ if (shouldNavigateToDiscovery) {
79+ binding.bottomNavView.selectedItemId = R .id.fragmentHome
80+ }
81+ }
82+ }
83+
7184 requireArguments().apply {
7285 this .getString(ARG_COURSE_ID , null )?.apply {
7386 router.navigateToCourseDetail(parentFragmentManager, this )
@@ -82,20 +95,25 @@ class MainFragment : Fragment(R.layout.fragment_main) {
8295
8396 val discoveryFragment = DiscoveryNavigator (viewModel.isDiscoveryTypeWebView)
8497 .getDiscoveryFragment()
98+ val programFragment = if (viewModel.isProgramTypeWebView) {
99+ ProgramFragment (true )
100+ } else {
101+ InDevelopmentFragment ()
102+ }
85103
86104 adapter = MainNavigationFragmentAdapter (this ).apply {
87105 addFragment(discoveryFragment)
88106 addFragment(DashboardFragment ())
89- addFragment(InDevelopmentFragment () )
107+ addFragment(programFragment )
90108 addFragment(ProfileFragment ())
91109 }
92110 binding.viewPager.adapter = adapter
93111 binding.viewPager.isUserInputEnabled = false
94112 }
95113
96114 private fun enableBottomBar (enable : Boolean ) {
97- for (i in 0 until binding.bottomNavView.menu.size()) {
98- binding.bottomNavView.menu.getItem(i) .isEnabled = enable
115+ binding.bottomNavView.menu.forEach {
116+ it .isEnabled = enable
99117 }
100118 }
101119
0 commit comments