1
0
Fork 0

For #2068 - Create QAS initial state (#2298)

master
Emily Kager 2019-05-06 14:38:32 -07:00 committed by Colin Lee
parent 66986d88cb
commit e6e3ac35e0
1 changed files with 29 additions and 7 deletions

View File

@ -31,6 +31,7 @@ import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main import kotlinx.coroutines.Dispatchers.Main
import kotlinx.coroutines.Job import kotlinx.coroutines.Job
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import mozilla.appservices.places.BookmarkRoot import mozilla.appservices.places.BookmarkRoot
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager 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.QuickActionAction
import org.mozilla.fenix.quickactionsheet.QuickActionChange import org.mozilla.fenix.quickactionsheet.QuickActionChange
import org.mozilla.fenix.quickactionsheet.QuickActionComponent import org.mozilla.fenix.quickactionsheet.QuickActionComponent
import org.mozilla.fenix.quickactionsheet.QuickActionState
import org.mozilla.fenix.settings.quicksettings.QuickSettingsSheetDialogFragment import org.mozilla.fenix.settings.quicksettings.QuickSettingsSheetDialogFragment
import org.mozilla.fenix.utils.ItsNotBrokenSnack import org.mozilla.fenix.utils.ItsNotBrokenSnack
import org.mozilla.fenix.utils.Settings 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 val activity = activity as HomeActivity
DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity)
@ -297,8 +307,10 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope,
) { ) {
getManagedEmitter<QuickActionChange>().apply { getManagedEmitter<QuickActionChange>().apply {
onNext(QuickActionChange.ReadableStateChange(it)) onNext(QuickActionChange.ReadableStateChange(it))
onNext(QuickActionChange.ReaderActiveStateChange( onNext(
sessionManager.selectedSession?.readerMode ?: false) QuickActionChange.ReaderActiveStateChange(
sessionManager.selectedSession?.readerMode ?: false
)
) )
} }
}, },
@ -345,6 +357,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope,
sessionObserver = subscribeToSession() sessionObserver = subscribeToSession()
sessionManagerObserver = subscribeToSessions() sessionManagerObserver = subscribeToSessions()
updateToolbar() updateToolbar()
getSessionById()?.let { updateBookmarkState(it) }
getAutoDisposeObservable<SearchAction>() getAutoDisposeObservable<SearchAction>()
.subscribe { .subscribe {
when (it) { when (it) {
@ -678,7 +691,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope,
override fun onLoadingStateChanged(session: Session, loading: Boolean) { override fun onLoadingStateChanged(session: Session, loading: Boolean) {
super.onLoadingStateChanged(session, loading) super.onLoadingStateChanged(session, loading)
if (!loading) { if (!loading) {
searchBookmarks(session) updateBookmarkState(session)
} }
setToolbarBehavior(loading) 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 { launch {
val list = requireComponents.core.bookmarksStorage.getBookmarksWithUrl(session.url) val found = findBookmarkedURL(session)
val found = list.isNotEmpty() && list[0].url == session.url
launch(Main) { launch(Main) {
getManagedEmitter<QuickActionChange>() getManagedEmitter<QuickActionChange>()
.onNext(QuickActionChange.BookmarkedStateChange(found)) .onNext(QuickActionChange.BookmarkedStateChange(found))