Skip to content

Commit 84e6071

Browse files
committed
Fix the bookmarked sites counting logic
1 parent 09cf289 commit 84e6071

File tree

3 files changed

+30
-30
lines changed

3 files changed

+30
-30
lines changed

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherActivity.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -464,7 +464,11 @@ class TabSwitcherActivity : DuckDuckGoActivity(), TabSwitcherListener, Coroutine
464464
}
465465

466466
private fun showBookmarkToast(numBookmarks: Int) {
467-
val message = resources.getQuantityString(R.plurals.tabSwitcherBookmarkToast, numBookmarks, numBookmarks)
467+
val message = if (numBookmarks == 0) {
468+
getString(R.string.tabSwitcherBookmarkToastZero)
469+
} else {
470+
resources.getQuantityString(R.plurals.tabSwitcherBookmarkToast, numBookmarks, numBookmarks)
471+
}
468472
Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
469473
}
470474

app/src/main/java/com/duckduckgo/app/tabs/ui/TabSwitcherViewModel.kt

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ import com.duckduckgo.di.scopes.ActivityScope
4444
import com.duckduckgo.savedsites.api.SavedSitesRepository
4545
import com.duckduckgo.savedsites.api.models.SavedSite.Bookmark
4646
import javax.inject.Inject
47+
import kotlinx.coroutines.async
48+
import kotlinx.coroutines.awaitAll
4749
import kotlinx.coroutines.flow.MutableStateFlow
4850
import kotlinx.coroutines.flow.SharingStarted
4951
import kotlinx.coroutines.flow.combine
@@ -246,54 +248,48 @@ class TabSwitcherViewModel @Inject constructor(
246248
}
247249

248250
fun onCloseSelectedTabs() {
249-
(selectionViewState.value.mode as? SelectionViewState.Mode.Selection)?.selectedTabs?.size?.let { numTabs ->
250-
if (numTabs > 0) {
251-
command.value = BookmarkTabs(numTabs)
252-
}
253-
}
254251
}
255252

256253
fun onCloseOtherTabs() {
257254
}
258255

259256
fun onBookmarkTabsConfirmed(numTabs: Int) {
260-
val numBookmarkedTabs = when (val mode = selectionViewState.value.mode) {
261-
is SelectionViewState.Mode.Selection -> {
262-
// bookmark selected tabs (or all tabs if none selected)
263-
if (mode.selectedTabs.isNotEmpty()) {
264-
bookmarkTabs(mode.selectedTabs)
265-
} else {
266-
bookmarkAllTabs()
257+
viewModelScope.launch {
258+
val numBookmarkedTabs = when (val mode = selectionViewState.value.mode) {
259+
is SelectionViewState.Mode.Selection -> {
260+
// bookmark selected tabs (or all tabs if none selected)
261+
if (mode.selectedTabs.isNotEmpty()) {
262+
bookmarkTabs(mode.selectedTabs)
263+
} else {
264+
bookmarkAllTabs()
265+
}
267266
}
268-
}
269267

270-
SelectionViewState.Mode.Normal -> {
271-
if (numTabs == 1) {
272-
activeTab.value?.tabId?.let { bookmarkTabs(listOf(it)) } ?: 0
273-
} else {
274-
bookmarkAllTabs()
268+
SelectionViewState.Mode.Normal -> {
269+
if (numTabs == 1) {
270+
activeTab.value?.tabId?.let { bookmarkTabs(listOf(it)) } ?: 0
271+
} else {
272+
bookmarkAllTabs()
273+
}
275274
}
276275
}
276+
command.value = ShowBookmarkToast(numBookmarkedTabs)
277277
}
278-
command.value = ShowBookmarkToast(numBookmarkedTabs)
279278
}
280279

281-
private fun bookmarkAllTabs(): Int {
280+
private suspend fun bookmarkAllTabs(): Int {
282281
return tabSwitcherItems.value?.filterIsInstance<TabSwitcherItem.Tab>()?.let { tabIds ->
283282
bookmarkTabs(tabIds.map { it.id })
284283
} ?: 0
285284
}
286285

287-
private fun bookmarkTabs(tabIds: List<String>): Int {
288-
var bookmarkedSites = 0
289-
tabIds.forEach {
290-
viewModelScope.launch {
291-
if (saveSiteBookmark(it) != null) {
292-
bookmarkedSites++
293-
}
286+
private suspend fun bookmarkTabs(tabIds: List<String>): Int {
287+
val results = tabIds.map { tabId ->
288+
viewModelScope.async {
289+
saveSiteBookmark(tabId)
294290
}
295291
}
296-
return bookmarkedSites
292+
return results.awaitAll().count { it != null }
297293
}
298294

299295
fun onCloseAllTabsConfirmed() {

app/src/main/res/values/donottranslate.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@
9595
<item quantity="one">Bookmark Selected Tab?</item>
9696
<item quantity="other">Bookmark %1$d Tabs?</item>
9797
</plurals>
98+
<string name="tabSwitcherBookmarkToastZero">No unique bookmark was added.</string>
9899
<plurals name="tabSwitcherBookmarkToast" tools:ignore="ImpliedQuantity,MissingInstruction">
99-
<item quantity="zero">No new bookmark was added.</item>
100100
<item quantity="one">One new bookmark was added.</item>
101101
<item quantity="other">%1$d new bookmarks were added.</item>
102102
</plurals>

0 commit comments

Comments
 (0)