Skip to content

Commit

Permalink
address PR comments
Browse files Browse the repository at this point in the history
  • Loading branch information
malmstein committed Nov 21, 2023
1 parent f26a7ba commit ffd2edd
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -672,10 +672,10 @@ class BrowserTabViewModel @Inject constructor(
observeAccessibilitySettings()

savedSitesRepository.getFavorites()
.flowOn(dispatchers.io())
.combine(hiddenIds) { favorites, hiddenIds ->
favorites.filter { it.id !in hiddenIds.favorites }
}
.flowOn(dispatchers.io())
.onEach { filteredFavourites ->
withContext(dispatchers.main()) {
val favorites = filteredFavourites.map { FavoritesQuickAccessAdapter.QuickAccessFavorite(it) }
Expand All @@ -685,7 +685,6 @@ class BrowserTabViewModel @Inject constructor(
browserViewState.value = currentBrowserViewState().copy(favorite = favorite)
}
}
.flowOn(dispatchers.main())
.launchIn(viewModelScope)

savedSitesRepository.getBookmarks()
Expand Down Expand Up @@ -2802,7 +2801,6 @@ class BrowserTabViewModel @Inject constructor(
}

private fun hide(savedSite: SavedSite) {
Timber.d("FLOW: hide $savedSite")
viewModelScope.launch(dispatchers.io()) {
when (savedSite) {
is Bookmark -> {
Expand All @@ -2818,23 +2816,20 @@ class BrowserTabViewModel @Inject constructor(
hiddenIds.emit(hiddenIds.value.copy(favorites = hiddenIds.value.favorites + savedSite.id))
}
}
Timber.d("FLOW: hide ${hiddenIds.value}")
withContext(dispatchers.main()) {
command.value = DeleteSavedSiteConfirmation(savedSite)
}
}
}

fun undoDelete(savedSite: SavedSite) {
Timber.d("FLOW: undoDelete $savedSite")
viewModelScope.launch(dispatchers.io()) {
hiddenIds.emit(
hiddenIds.value.copy(
favorites = hiddenIds.value.favorites - savedSite.id,
bookmarks = hiddenIds.value.bookmarks - savedSite.id,
),
)
Timber.d("FLOW: hide ${hiddenIds.value}")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.systemsearch.SystemSearchViewModel.Command.*
import com.duckduckgo.app.tabs.ui.GridViewColumnCalculator
import com.duckduckgo.common.ui.DuckDuckGoActivity
import com.duckduckgo.common.ui.view.*
import com.duckduckgo.common.ui.view.hideKeyboard
import com.duckduckgo.common.ui.view.toPx
import com.duckduckgo.common.ui.viewbinding.viewBinding
Expand All @@ -64,7 +63,6 @@ import com.duckduckgo.voice.api.VoiceSearchLauncher.Source.WIDGET
import com.google.android.material.snackbar.BaseTransientBottomBar
import com.google.android.material.snackbar.Snackbar
import javax.inject.Inject
import timber.log.Timber

@InjectWith(ActivityScope::class)
class SystemSearchActivity : DuckDuckGoActivity() {
Expand Down Expand Up @@ -420,11 +418,8 @@ class SystemSearchActivity : DuckDuckGoActivity() {
transientBottomBar: Snackbar?,
event: Int,
) {
// when snackbar is not dismissed because of an action we want to
// actually delete the saved site
Timber.d("Bookmark: dismissed with $event")
if (event != DISMISS_EVENT_ACTION) {
viewModel.deleteQuickAccessItem(savedSite)
viewModel.deleteSavedSiteSnackbarDismissed(savedSite)
}
}
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,7 @@ import com.duckduckgo.anvil.annotations.ContributesViewModel
import com.duckduckgo.app.autocomplete.api.AutoComplete
import com.duckduckgo.app.autocomplete.api.AutoComplete.AutoCompleteResult
import com.duckduckgo.app.bookmarks.ui.EditSavedSiteDialogFragment
import com.duckduckgo.app.browser.BrowserTabViewModel.Command.DeleteSavedSiteConfirmation
import com.duckduckgo.app.browser.favorites.FavoritesQuickAccessAdapter
import com.duckduckgo.app.browser.favorites.FavoritesQuickAccessAdapter.QuickAccessFavorite
import com.duckduckgo.app.global.SingleLiveEvent
import com.duckduckgo.app.onboarding.store.AppStage
import com.duckduckgo.app.onboarding.store.UserStageStore
Expand All @@ -34,7 +32,6 @@ import com.duckduckgo.app.pixels.AppPixelName.*
import com.duckduckgo.app.settings.db.SettingsDataStore
import com.duckduckgo.app.statistics.pixels.Pixel
import com.duckduckgo.app.systemsearch.SystemSearchViewModel.Command.UpdateVoiceSearch
import com.duckduckgo.app.systemsearch.SystemSearchViewModel.Suggestions.QuickAccessItems
import com.duckduckgo.common.utils.DispatcherProvider
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.savedsites.api.SavedSitesRepository
Expand Down Expand Up @@ -124,18 +121,17 @@ class SystemSearchViewModel @Inject constructor(
refreshAppList()

savedSitesRepository.getFavorites()
.flowOn(dispatchers.io())
.combine(hiddenIds) { favorites, hiddenIds ->
favorites.filter { it.id !in hiddenIds.favorites }
}
.flowOn(dispatchers.io())
.onEach { filteredFavourites ->
withContext(dispatchers.main()) {
latestQuickAccessItems =
Suggestions.QuickAccessItems(filteredFavourites.map { FavoritesQuickAccessAdapter.QuickAccessFavorite(it) })
resultsViewState.postValue(latestQuickAccessItems)
}
}
.flowOn(dispatchers.main())
.launchIn(viewModelScope)
}

Expand Down Expand Up @@ -349,7 +345,7 @@ class SystemSearchViewModel @Inject constructor(
}
}

fun deleteQuickAccessItem(savedSite: SavedSite) {
fun deleteSavedSiteSnackbarDismissed(savedSite: SavedSite) {
when (savedSite) {
is SavedSite.Favorite -> {
viewModelScope.launch(dispatchers.io() + NonCancellable) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -377,13 +377,15 @@ class SystemSearchViewModelTest {
assertFalse(viewState.favorites.isEmpty())

testee.undoDelete(savedSite)

assertFalse(viewState.favorites.isEmpty())
}

@Test
fun whenQuickAccessDeletedThenRepositoryDeletesSavedSite() = runTest {
val savedSite = Favorite("favorite1", "title", "http://example.com", "timestamp", 0)

testee.deleteQuickAccessItem(savedSite)
testee.deleteSavedSiteSnackbarDismissed(savedSite)

verify(mocksavedSitesRepository).delete(savedSite)
}
Expand Down

0 comments on commit ffd2edd

Please sign in to comment.