Skip to content

Commit

Permalink
Merge pull request #1231 from Infomaniak/fix-gallery-crash
Browse files Browse the repository at this point in the history
Fix Gallery crash
  • Loading branch information
KevinBoulongne authored Mar 6, 2024
2 parents d7eba74 + 2dad63e commit 0372bd7
Showing 1 changed file with 38 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import androidx.core.view.marginBottom
import androidx.core.view.marginTop
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
import com.google.android.material.appbar.AppBarLayout
import com.infomaniak.drive.R
import com.infomaniak.drive.databinding.FragmentMenuGalleryBinding
import com.infomaniak.drive.databinding.MultiSelectLayoutBinding
Expand All @@ -43,63 +42,64 @@ class MenuGalleryFragment : Fragment() {
private var binding: FragmentMenuGalleryBinding by safeBinding()
private val mainViewModel: MainViewModel by activityViewModels()

private var galleryFragment = GalleryFragment()

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
binding = FragmentMenuGalleryBinding.inflate(inflater, container, false).apply {
swipeRefreshLayout.setOnRefreshListener { galleryFragment.onRefreshGallery() }
}

binding.multiSelectLayout.apply {
selectAllButton.isGone = true
setMultiSelectClickListeners()
}

return binding.root
}

private fun MultiSelectLayoutBinding.setMultiSelectClickListeners() = with(galleryFragment) {
toolbarMultiSelect.setNavigationOnClickListener { closeMultiSelect() }
moveButtonMultiSelect.setOnClickListener { onMoveButtonClicked() }
deleteButtonMultiSelect.setOnClickListener { deleteFiles() }
menuButtonMultiSelect.setOnClickListener {
onMenuButtonClicked(
multiSelectBottomSheet = GalleryMultiSelectActionsBottomSheetDialog(),
areAllFromTheSameFolder = false,
)
}
return FragmentMenuGalleryBinding.inflate(inflater, container, false).also { binding = it }.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

ViewCompat.requestApplyInsets(binding.galleryListCoordinator)
val galleryFragment = addGalleryFragment()
setUi(galleryFragment)
}

with(childFragmentManager) {
(findFragmentByTag(GalleryFragment.TAG) as? GalleryFragment)?.let {
galleryFragment = it
} ?: run {
private fun addGalleryFragment(): GalleryFragment = with(childFragmentManager) {
return@with (findFragmentByTag(GalleryFragment.TAG) as? GalleryFragment) ?: run {
GalleryFragment().also {
beginTransaction()
.replace(R.id.galleryFragmentView, galleryFragment, GalleryFragment.TAG)
.replace(R.id.galleryFragmentView, it, GalleryFragment.TAG)
.commit()
}
}
}

private fun setUi(galleryFragment: GalleryFragment) = with(binding) {

swipeRefreshLayout.setOnRefreshListener(galleryFragment::onRefreshGallery)

multiSelectLayout.apply {
selectAllButton.isGone = true
setMultiSelectClickListeners(galleryFragment)
}

galleryFragment.menuGalleryBinding = binding

binding.appBar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener { _, verticalOffset ->
galleryFragment.setScrollbarTrackOffset(binding.appBar.totalScrollRange + verticalOffset)
})
appBar.addOnOffsetChangedListener { _, verticalOffset ->
galleryFragment.setScrollbarTrackOffset(appBar.totalScrollRange + verticalOffset)
}

adjustFastScrollBarScrollRange(galleryFragment)

adjustFastScrollBarScrollRange()
observeAndDisplayNetworkAvailability(
mainViewModel = mainViewModel,
noNetworkBinding = binding.noNetworkInclude,
noNetworkBindingDirectParent = binding.galleryContentLinearLayout,
noNetworkBinding = noNetworkInclude,
noNetworkBindingDirectParent = galleryContentLinearLayout,
)
}

private fun adjustFastScrollBarScrollRange() = with(binding) {
private fun MultiSelectLayoutBinding.setMultiSelectClickListeners(galleryFragment: GalleryFragment) = with(galleryFragment) {
toolbarMultiSelect.setNavigationOnClickListener { closeMultiSelect() }
moveButtonMultiSelect.setOnClickListener { onMoveButtonClicked() }
deleteButtonMultiSelect.setOnClickListener { deleteFiles() }
menuButtonMultiSelect.setOnClickListener {
onMenuButtonClicked(
multiSelectBottomSheet = GalleryMultiSelectActionsBottomSheetDialog(),
areAllFromTheSameFolder = false,
)
}
}

private fun adjustFastScrollBarScrollRange(galleryFragment: GalleryFragment) = with(binding) {
val bottomNavigationOffset = with((activity as MainActivity).getBottomNavigation()) {
layoutParams.height + marginBottom + marginTop + 10.toPx()
}
Expand Down

0 comments on commit 0372bd7

Please sign in to comment.