From e6e3ac35e0550854714a5709329f54ed07065694 Mon Sep 17 00:00:00 2001 From: Emily Kager Date: Mon, 6 May 2019 14:38:32 -0700 Subject: [PATCH] For #2068 - Create QAS initial state (#2298) --- .../mozilla/fenix/browser/BrowserFragment.kt | 36 +++++++++++++++---- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 9cce21530..4bca745d7 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -31,6 +31,7 @@ import kotlinx.coroutines.Dispatchers.IO import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Job import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking import mozilla.appservices.places.BookmarkRoot import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager @@ -83,6 +84,7 @@ import org.mozilla.fenix.mvi.getManagedEmitter import org.mozilla.fenix.quickactionsheet.QuickActionAction import org.mozilla.fenix.quickactionsheet.QuickActionChange import org.mozilla.fenix.quickactionsheet.QuickActionComponent +import org.mozilla.fenix.quickactionsheet.QuickActionState import org.mozilla.fenix.settings.quicksettings.QuickSettingsSheetDialogFragment import org.mozilla.fenix.utils.ItsNotBrokenSnack import org.mozilla.fenix.utils.Settings @@ -152,7 +154,15 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, } } - QuickActionComponent(view.nestedScrollQuickAction, ActionBusFactory.get(this)) + QuickActionComponent( + view.nestedScrollQuickAction, + ActionBusFactory.get(this), + QuickActionState( + readable = getSessionById()?.readerable ?: false, + bookmarked = findBookmarkedURL(getSessionById()), + readerActive = getSessionById()?.readerMode ?: false + ) + ) val activity = activity as HomeActivity DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) @@ -297,8 +307,10 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, ) { getManagedEmitter().apply { onNext(QuickActionChange.ReadableStateChange(it)) - onNext(QuickActionChange.ReaderActiveStateChange( - sessionManager.selectedSession?.readerMode ?: false) + onNext( + QuickActionChange.ReaderActiveStateChange( + sessionManager.selectedSession?.readerMode ?: false + ) ) } }, @@ -345,6 +357,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, sessionObserver = subscribeToSession() sessionManagerObserver = subscribeToSessions() updateToolbar() + getSessionById()?.let { updateBookmarkState(it) } getAutoDisposeObservable() .subscribe { when (it) { @@ -678,7 +691,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, override fun onLoadingStateChanged(session: Session, loading: Boolean) { super.onLoadingStateChanged(session, loading) if (!loading) { - searchBookmarks(session) + updateBookmarkState(session) } setToolbarBehavior(loading) } @@ -706,10 +719,19 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope, } } - private fun searchBookmarks(session: Session) { + private fun findBookmarkedURL(session: Session?): Boolean { + session?.let { + return runBlocking { + val list = requireComponents.core.bookmarksStorage.getBookmarksWithUrl(it.url) + list.isNotEmpty() && list[0].url == it.url + } + } + return false + } + + private fun updateBookmarkState(session: Session) { launch { - val list = requireComponents.core.bookmarksStorage.getBookmarksWithUrl(session.url) - val found = list.isNotEmpty() && list[0].url == session.url + val found = findBookmarkedURL(session) launch(Main) { getManagedEmitter() .onNext(QuickActionChange.BookmarkedStateChange(found))