2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-19 09:25:34 +00:00

[fenix] For https://github.com/mozilla-mobile/fenix/issues/17917: Use View binding in bookmarks screen

This commit is contained in:
codrut.topliceanu 2021-08-06 15:17:01 +03:00 committed by mergify[bot]
parent d4ab4f3572
commit 6c15482c9d
2 changed files with 22 additions and 19 deletions

View File

@ -21,8 +21,6 @@ import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavDirections
import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import kotlinx.android.synthetic.main.component_bookmark.view.*
import kotlinx.android.synthetic.main.fragment_bookmark.view.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers.IO
import kotlinx.coroutines.Dispatchers.Main
@ -44,6 +42,7 @@ import org.mozilla.fenix.R
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.components.StoreProvider
import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.databinding.FragmentBookmarkBinding
import org.mozilla.fenix.ext.bookmarkStorage
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.minus
@ -72,13 +71,16 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
private var pendingBookmarkDeletionJob: (suspend () -> Unit)? = null
private var pendingBookmarksToDelete: MutableSet<BookmarkNode> = mutableSetOf()
private var _binding: FragmentBookmarkBinding? = null
private val binding get() = _binding!!
private val metrics
get() = context?.components?.analytics?.metrics
override val selectedItems get() = bookmarkStore.state.mode.selectedItems
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment_bookmark, container, false)
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
_binding = FragmentBookmarkBinding.inflate(inflater, container, false)
bookmarkStore = StoreProvider.get(this) {
BookmarkFragmentStore(BookmarkFragmentState(null))
@ -103,8 +105,8 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
metrics = metrics!!
)
bookmarkView = BookmarkView(view.bookmarkLayout, bookmarkInteractor, findNavController())
bookmarkView.view.bookmark_folders_sign_in.visibility = View.GONE
bookmarkView = BookmarkView(binding.bookmarkLayout, bookmarkInteractor, findNavController())
bookmarkView.binding.bookmarkFoldersSignIn.visibility = View.GONE
viewLifecycleOwner.lifecycle.addObserver(
BookmarkDeselectNavigationListener(
@ -114,7 +116,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
)
)
return view
return binding.root
}
private fun showSnackBarWithText(text: String) {
@ -138,7 +140,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
// Don't want to pester user too much with it, and if there are lots of bookmarks present,
// it'll just get visually lost. Inside of the "Desktop Bookmarks" node, it'll nicely stand-out,
// since there are always only three other items in there. It's also the right place contextually.
bookmarkView.view.bookmark_folders_sign_in.isVisible =
bookmarkView.binding.bookmarkFoldersSignIn.isVisible =
it.tree?.guid == BookmarkRoot.Root.id && accountManager.authenticatedAccount() == null
}
}
@ -361,6 +363,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
override fun onDestroyView() {
super.onDestroyView()
_bookmarkInteractor = null
_binding = null
}
private fun showRemoveFolderDialog(selected: Set<BookmarkNode>) {

View File

@ -5,16 +5,15 @@
package org.mozilla.fenix.library.bookmarks
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.navigation.NavController
import kotlinx.android.synthetic.main.component_bookmark.view.*
import mozilla.appservices.places.BookmarkRoot
import mozilla.components.concept.storage.BookmarkNode
import mozilla.components.support.base.feature.UserInteractionHandler
import org.mozilla.fenix.NavGraphDirections
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.ComponentBookmarkBinding
import org.mozilla.fenix.library.LibraryPageView
import org.mozilla.fenix.selection.SelectionInteractor
@ -106,22 +105,23 @@ class BookmarkView(
private val navController: NavController
) : LibraryPageView(container), UserInteractionHandler {
val view: View = LayoutInflater.from(container.context)
.inflate(R.layout.component_bookmark, container, true)
val binding = ComponentBookmarkBinding.inflate(
LayoutInflater.from(container.context), container, true
)
private var mode: BookmarkFragmentState.Mode = BookmarkFragmentState.Mode.Normal()
private var tree: BookmarkNode? = null
private val bookmarkAdapter = BookmarkAdapter(view.bookmarks_empty_view, interactor)
private val bookmarkAdapter = BookmarkAdapter(binding.bookmarksEmptyView, interactor)
init {
view.bookmark_list.apply {
binding.bookmarkList.apply {
adapter = bookmarkAdapter
}
view.bookmark_folders_sign_in.setOnClickListener {
binding.bookmarkFoldersSignIn.setOnClickListener {
navController.navigate(NavGraphDirections.actionGlobalTurnOnSync())
}
view.swipe_refresh.setOnRefreshListener {
binding.swipeRefresh.setOnRefreshListener {
interactor.onRequestSync()
}
}
@ -150,10 +150,10 @@ class BookmarkView(
)
}
}
view.bookmarks_progress_bar.isVisible = state.isLoading
view.swipe_refresh.isEnabled =
binding.bookmarksProgressBar.isVisible = state.isLoading
binding.swipeRefresh.isEnabled =
state.mode is BookmarkFragmentState.Mode.Normal || state.mode is BookmarkFragmentState.Mode.Syncing
view.swipe_refresh.isRefreshing = state.mode is BookmarkFragmentState.Mode.Syncing
binding.swipeRefresh.isRefreshing = state.mode is BookmarkFragmentState.Mode.Syncing
}
override fun onBackPressed(): Boolean {