diff --git a/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryFragment.kt b/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryFragment.kt index 87f307041..605b260ed 100644 --- a/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryFragment.kt +++ b/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryFragment.kt @@ -31,7 +31,6 @@ import org.koin.androidx.viewmodel.ext.android.viewModel import org.openedx.core.AppUpdateState import org.openedx.core.AppUpdateState.wasUpdateDialogClosed import org.openedx.core.UIMessage -import org.openedx.core.data.storage.CorePreferences import org.openedx.core.domain.model.Course import org.openedx.core.domain.model.Media import org.openedx.core.presentation.dialog.appupgrade.AppUpgradeDialogFragment @@ -47,7 +46,6 @@ class DiscoveryFragment : Fragment() { private val viewModel by viewModel() private val router: DiscoveryRouter by inject() - private val corePreferencesManager by inject() override fun onCreateView( inflater: LayoutInflater, @@ -66,8 +64,7 @@ class DiscoveryFragment : Fragment() { val appUpgradeEvent by viewModel.appUpgradeEvent.observeAsState() val wasUpdateDialogClosed by remember { wasUpdateDialogClosed } val querySearch = arguments?.getString(ARG_SEARCH_QUERY, "") ?: "" - val isLogistrationEnabled by viewModel.isLogistrationEnabled.observeAsState(false) - val canShowBackButton = isLogistrationEnabled && corePreferencesManager.user == null + val canShowBackButton by viewModel.canShowBackButton.observeAsState(false) DiscoveryScreen( windowSize = windowSize, diff --git a/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryViewModel.kt b/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryViewModel.kt index 862e93899..fad5a016f 100644 --- a/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryViewModel.kt +++ b/discovery/src/main/java/org/openedx/discovery/presentation/DiscoveryViewModel.kt @@ -11,6 +11,7 @@ import org.openedx.core.BuildConfig import org.openedx.core.R import org.openedx.core.SingleEventLiveData import org.openedx.core.UIMessage +import org.openedx.core.data.storage.CorePreferences import org.openedx.core.config.Config import org.openedx.core.domain.model.Course import org.openedx.core.extension.isInternetError @@ -26,7 +27,8 @@ class DiscoveryViewModel( private val interactor: DiscoveryInteractor, private val resourceManager: ResourceManager, private val analytics: DiscoveryAnalytics, - private val appUpgradeNotifier: AppUpgradeNotifier + private val appUpgradeNotifier: AppUpgradeNotifier, + private val corePreferences: CorePreferences ) : BaseViewModel() { val apiHostUrl get() = config.getApiHostURL() @@ -51,8 +53,8 @@ class DiscoveryViewModel( val appUpgradeEvent: LiveData get() = _appUpgradeEvent - private val _isLogistrationEnabled = MutableLiveData() - val isLogistrationEnabled: LiveData = _isLogistrationEnabled + private val _canShowBackButton = MutableLiveData() + val canShowBackButton: LiveData = _canShowBackButton val hasInternetConnection: Boolean get() = networkConnection.isOnline() @@ -62,7 +64,8 @@ class DiscoveryViewModel( private var isLoading = false init { - _isLogistrationEnabled.value = BuildConfig.PRE_LOGIN_EXPERIENCE_ENABLED + _canShowBackButton.value = + BuildConfig.PRE_LOGIN_EXPERIENCE_ENABLED && corePreferences.user == null getCoursesList() collectAppUpgradeEvent() } diff --git a/discovery/src/test/java/org/openedx/discovery/presentation/DiscoveryViewModelTest.kt b/discovery/src/test/java/org/openedx/discovery/presentation/DiscoveryViewModelTest.kt index 4c0fc45bb..d16f6e59c 100644 --- a/discovery/src/test/java/org/openedx/discovery/presentation/DiscoveryViewModelTest.kt +++ b/discovery/src/test/java/org/openedx/discovery/presentation/DiscoveryViewModelTest.kt @@ -16,6 +16,7 @@ import org.junit.Before import org.junit.Rule import org.junit.Test import org.junit.rules.TestRule +import org.openedx.core.data.storage.CorePreferences import org.openedx.core.R import org.openedx.core.UIMessage import org.openedx.core.config.Config @@ -42,6 +43,7 @@ class DiscoveryViewModelTest { private val networkConnection = mockk() private val analytics = mockk() private val appUpgradeNotifier = mockk() + private val corePreferences = mockk() private val noInternet = "Slow or no internet connection" private val somethingWrong = "Something went wrong" @@ -52,6 +54,7 @@ class DiscoveryViewModelTest { every { resourceManager.getString(R.string.core_error_no_connection) } returns noInternet every { resourceManager.getString(R.string.core_error_unknown_error) } returns somethingWrong every { appUpgradeNotifier.notifier } returns emptyFlow() + every { corePreferences.user } returns null every { config.getApiHostURL() } returns "http://localhost:8000" } @@ -62,7 +65,7 @@ class DiscoveryViewModelTest { @Test fun `getCoursesList no internet connection`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } throws UnknownHostException() advanceUntilIdle() @@ -79,7 +82,7 @@ class DiscoveryViewModelTest { @Test fun `getCoursesList unknown exception`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } throws Exception() advanceUntilIdle() @@ -95,7 +98,7 @@ class DiscoveryViewModelTest { @Test fun `getCoursesList from cache`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns false coEvery { interactor.getCoursesListFromCache() } returns emptyList() advanceUntilIdle() @@ -110,7 +113,7 @@ class DiscoveryViewModelTest { @Test fun `getCoursesList from network with next page`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } returns CourseList( Pagination( @@ -132,7 +135,7 @@ class DiscoveryViewModelTest { @Test fun `getCoursesList from network without next page`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } returns CourseList( Pagination( @@ -155,7 +158,7 @@ class DiscoveryViewModelTest { @Test fun `updateData no internet connection`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } throws UnknownHostException() viewModel.updateData() @@ -172,7 +175,7 @@ class DiscoveryViewModelTest { @Test fun `updateData unknown exception`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } throws Exception() viewModel.updateData() @@ -189,7 +192,7 @@ class DiscoveryViewModelTest { @Test fun `updateData success with next page`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } returns CourseList( Pagination( @@ -212,7 +215,7 @@ class DiscoveryViewModelTest { @Test fun `updateData success without next page`() = runTest { - val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier) + val viewModel = DiscoveryViewModel(config, networkConnection, interactor, resourceManager, analytics, appUpgradeNotifier, corePreferences) every { networkConnection.isOnline() } returns true coEvery { interactor.getCoursesList(any(), any(), any()) } returns CourseList( Pagination(