Skip to content

Commit 86cc5ea

Browse files
committed
Bug 2003511 - Cancel loading bookmarks if weve navigated from the BookmarksFragment
1 parent ec6f76b commit 86cc5ea

4 files changed

Lines changed: 10 additions & 3 deletions

File tree

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarkFragment.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ class BookmarkFragment : Fragment() {
111111
BookmarksSyncMiddleware(requireComponents.backgroundServices.syncStore, lifecycleScope),
112112
BrowserToolbarSyncToBookmarksMiddleware(toolbarStore, lifecycleScope),
113113
BookmarksMiddleware(
114+
lifecycleScope = lifecycleScope,
114115
bookmarksStorage = requireContext().bookmarkStorage,
115116
clipboardManager = requireActivity().getSystemService(),
116117
addNewTabUseCase = requireComponents.useCases.tabsUseCases.addTab,

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksMiddleware.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.navigation.NavController
1010
import kotlinx.coroutines.CoroutineDispatcher
1111
import kotlinx.coroutines.CoroutineScope
1212
import kotlinx.coroutines.Dispatchers
13+
import kotlinx.coroutines.ensureActive
1314
import kotlinx.coroutines.launch
1415
import kotlinx.coroutines.withContext
1516
import mozilla.appservices.places.BookmarkRoot
@@ -72,10 +73,11 @@ internal class BookmarksMiddleware(
7273
private val saveBookmarkSortOrder: suspend (BookmarksListSortOrder) -> Unit,
7374
private val lastSavedFolderCache: LastSavedFolderCache,
7475
private val reportResultGlobally: (BookmarksGlobalResultReport) -> Unit,
76+
private val lifecycleScope: CoroutineScope,
7577
private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO,
7678
) : Middleware<BookmarksState, BookmarksAction> {
7779

78-
private val scope = CoroutineScope(ioDispatcher)
80+
private val scope = CoroutineScope(lifecycleScope.coroutineContext + ioDispatcher)
7981

8082
@Suppress("LongMethod", "CognitiveComplexMethod", "CyclomaticComplexMethod")
8183
override fun invoke(
@@ -96,7 +98,7 @@ internal class BookmarksMiddleware(
9698
}
9799

98100
when (action) {
99-
Init -> store.tryDispatchLoadFor(BookmarkRoot.Mobile.id)
101+
Init -> store.tryDispatchLoadFor(store.state.currentFolder.guid)
100102
is InitEdit -> scope.launch {
101103
Result.runCatching {
102104
val bookmarkNode = bookmarksStorage.getBookmark(action.guid).getOrNull()
@@ -516,6 +518,8 @@ internal class BookmarksMiddleware(
516518
private fun Store<BookmarksState, BookmarksAction>.tryDispatchLoadFor(guid: String) =
517519
scope.launch {
518520
bookmarksStorage.getTree(guid).getOrNull()?.let { rootNode ->
521+
ensureActive()
522+
519523
val folder = BookmarkItem.Folder(
520524
guid = guid,
521525
title = resolveFolderTitle(rootNode),

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/BookmarksState.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ internal data class BookmarksState(
113113
sortMenuShown = false,
114114
sortOrder = BookmarksListSortOrder.default,
115115
recursiveSelectedCount = null,
116-
currentFolder = BookmarkItem.Folder("", "", null),
116+
currentFolder = BookmarkItem.Folder("Mobile Bookmarks", BookmarkRoot.Mobile.id, null),
117117
isSignedIntoSync = false,
118118
openTabsConfirmationDialog = OpenTabsConfirmationDialog.None,
119119
bookmarksSnackbarState = BookmarksSnackbarState.None,

mobile/android/fenix/app/src/main/java/org/mozilla/fenix/bookmarks/EditBookmarkFragment.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import androidx.compose.ui.platform.ComposeView
1212
import androidx.compose.ui.platform.ViewCompositionStrategy
1313
import androidx.core.content.getSystemService
1414
import androidx.fragment.app.Fragment
15+
import androidx.lifecycle.lifecycleScope
1516
import androidx.navigation.NavHostController
1617
import androidx.navigation.fragment.findNavController
1718
import androidx.navigation.fragment.navArgs
@@ -111,6 +112,7 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
111112
AppAction.BookmarkAction.BookmarkOperationResultReported(it),
112113
)
113114
},
115+
lifecycleScope = lifecycleScope,
114116
),
115117
),
116118
bookmarkToLoad = args.guidToEdit,

0 commit comments

Comments
 (0)