Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

Commit

Permalink
For #17917: Use View binding in bookmarks screen
Browse files Browse the repository at this point in the history
  • Loading branch information
codrut.topliceanu authored and mergify[bot] committed Aug 6, 2021
1 parent d6bc939 commit f9d6380
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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))
Expand All @@ -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(
Expand All @@ -114,7 +116,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
)
)

return view
return binding.root
}

private fun showSnackBarWithText(text: String) {
Expand All @@ -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
}
}
Expand Down Expand Up @@ -361,6 +363,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
override fun onDestroyView() {
super.onDestroyView()
_bookmarkInteractor = null
_binding = null
}

private fun showRemoveFolderDialog(selected: Set<BookmarkNode>) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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()
}
}
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit f9d6380

Please sign in to comment.