From 7ac80c272e5306e566fd246d18db2854d7b91305 Mon Sep 17 00:00:00 2001 From: ashiagr Date: Thu, 23 Jul 2020 12:52:48 +0530 Subject: [PATCH] Do not reload interests if language is same --- .../discover/interests/ReaderInterestsFragment.kt | 3 ++- .../discover/interests/ReaderInterestsViewModel.kt | 11 ++++++++++- .../interests/ReaderInterestsViewModelTest.kt | 6 +++++- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsFragment.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsFragment.kt index 4d9128061fc9..7aca84fc7e1e 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsFragment.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsFragment.kt @@ -18,6 +18,7 @@ import org.wordpress.android.ui.reader.discover.interests.ReaderInterestsViewMod import org.wordpress.android.ui.reader.discover.interests.ReaderInterestsViewModel.UiState.LoadingUiState import org.wordpress.android.ui.reader.viewmodels.ReaderViewModel import org.wordpress.android.ui.utils.UiHelpers +import org.wordpress.android.util.LocaleManager import org.wordpress.android.util.WPActivityUtils import javax.inject.Inject @@ -79,7 +80,7 @@ class ReaderInterestsFragment : Fragment(R.layout.reader_interests_fragment_layo } }) - viewModel.start(parentViewModel) + viewModel.start(parentViewModel, LocaleManager.getLanguage(WordPress.getContext())) } private fun updateDoneButton(doneButtonUiState: DoneButtonUiState) { diff --git a/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModel.kt b/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModel.kt index 1de130e72cbc..9efdb244b192 100644 --- a/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModel.kt +++ b/WordPress/src/main/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModel.kt @@ -26,16 +26,25 @@ import javax.inject.Inject class ReaderInterestsViewModel @Inject constructor( private val readerTagRepository: ReaderTagRepository ) : ViewModel() { + private var isStarted = false + private lateinit var currentLanguage: String private lateinit var parentViewModel: ReaderViewModel private val _uiState: MutableLiveData = MutableLiveData() val uiState: LiveData = _uiState - fun start(parentViewModel: ReaderViewModel) { + fun start(parentViewModel: ReaderViewModel, currentLanguage: String) { this.parentViewModel = parentViewModel + if (isStarted && isLanguageSame(currentLanguage)) { + return + } loadUserTags() + this.currentLanguage = currentLanguage + isStarted = true } + private fun isLanguageSame(currentLanguage: String) = this.currentLanguage == currentLanguage + private fun loadUserTags() { updateUiState(LoadingUiState) viewModelScope.launch { diff --git a/WordPress/src/test/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModelTest.kt b/WordPress/src/test/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModelTest.kt index 66f071e09306..ba36c15844d7 100644 --- a/WordPress/src/test/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModelTest.kt +++ b/WordPress/src/test/java/org/wordpress/android/ui/reader/discover/interests/ReaderInterestsViewModelTest.kt @@ -36,6 +36,7 @@ import org.wordpress.android.ui.reader.repository.ReaderRepositoryCommunication. import org.wordpress.android.ui.reader.repository.ReaderTagRepository import org.wordpress.android.ui.reader.viewmodels.ReaderViewModel +private const val CURRENT_LANGUAGE = "en" @RunWith(MockitoJUnitRunner::class) class ReaderInterestsViewModelTest { @Rule @@ -372,7 +373,10 @@ class ReaderInterestsViewModelTest { assertThat(contentLoadFailedUiState.titleResId).isEqualTo(R.string.reader_error_generic_title) } - private fun initViewModel() = viewModel.start(parentViewModel) + private fun initViewModel() = viewModel.start( + parentViewModel = parentViewModel, + currentLanguage = CURRENT_LANGUAGE + ) @ExperimentalCoroutinesApi private fun testWithEmptyUserTags(block: suspend CoroutineScope.() -> T) {