diff --git a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt index 37581bd1a6..2bace0b4ce 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/PlayerFragment.kt @@ -517,7 +517,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { mainMotionLayout.progress = abs(progress) } disableController() - commentsViewModel.setCommentSheetExpand(false) + commonPlayerViewModel.setSheetExpand(false) transitionEndId = endId transitionStartId = startId } @@ -530,7 +530,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { // re-enable captions updateCurrentSubtitle(viewModel.currentSubtitle) binding.player.useController = true - commentsViewModel.setCommentSheetExpand(true) + commonPlayerViewModel.setSheetExpand(true) mainMotionLayout.progress = 0F changeOrientationMode() } else if (currentId == transitionEndId) { @@ -538,7 +538,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { // disable captions temporarily updateCurrentSubtitle(null) disableController() - commentsViewModel.setCommentSheetExpand(null) + commonPlayerViewModel.setSheetExpand(null) binding.sbSkipBtn.isGone = true if (NavBarHelper.hasTabs()) { mainMotionLayout.progress = 1F @@ -773,7 +773,7 @@ class PlayerFragment : Fragment(), OnlinePlayerOptions { updateFullscreenOrientation() - commentsViewModel.setCommentSheetExpand(null) + commonPlayerViewModel.setSheetExpand(null) updateResolution(true) openOrCloseFullscreenDialog(true) diff --git a/app/src/main/java/com/github/libretube/ui/models/CommentsViewModel.kt b/app/src/main/java/com/github/libretube/ui/models/CommentsViewModel.kt index 5b1833dd7a..840f09e4af 100644 --- a/app/src/main/java/com/github/libretube/ui/models/CommentsViewModel.kt +++ b/app/src/main/java/com/github/libretube/ui/models/CommentsViewModel.kt @@ -30,22 +30,13 @@ class CommentsViewModel : ViewModel() { private val _commentCountLiveData = MutableLiveData() val commentCountLiveData: LiveData = _commentCountLiveData - val commentSheetExpand = MutableLiveData() - private val _currentCommentsPosition = MutableLiveData(0) val currentCommentsPosition: LiveData = _currentCommentsPosition private val _currentRepliesPosition = MutableLiveData(0) val currentRepliesPosition: LiveData = _currentRepliesPosition - fun setCommentSheetExpand(value: Boolean?) { - if (commentSheetExpand.value != value) { - commentSheetExpand.value = value - } - } - fun reset() { - setCommentSheetExpand(null) _currentCommentsPosition.value = 0 } diff --git a/app/src/main/java/com/github/libretube/ui/models/CommonPlayerViewModel.kt b/app/src/main/java/com/github/libretube/ui/models/CommonPlayerViewModel.kt index e3e5ebc02f..176507e3fb 100644 --- a/app/src/main/java/com/github/libretube/ui/models/CommonPlayerViewModel.kt +++ b/app/src/main/java/com/github/libretube/ui/models/CommonPlayerViewModel.kt @@ -2,9 +2,16 @@ package com.github.libretube.ui.models import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import com.github.libretube.extensions.updateIfChanged class CommonPlayerViewModel : ViewModel() { val isMiniPlayerVisible = MutableLiveData(false) val isFullscreen = MutableLiveData(false) var maxSheetHeightPx = 0 + + val sheetExpand = MutableLiveData() + + fun setSheetExpand(state: Boolean?) { + sheetExpand.updateIfChanged(state) + } } diff --git a/app/src/main/java/com/github/libretube/ui/sheets/ChaptersBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/ChaptersBottomSheet.kt index bf651b0b8c..33b4887e6e 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/ChaptersBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/ChaptersBottomSheet.kt @@ -17,7 +17,7 @@ import com.github.libretube.databinding.BottomSheetBinding import com.github.libretube.ui.adapters.ChaptersAdapter import com.github.libretube.ui.models.ChaptersViewModel -class ChaptersBottomSheet : UndimmedBottomSheet() { +class ChaptersBottomSheet : ExpandablePlayerSheet() { private var _binding: BottomSheetBinding? = null private val binding get() = _binding!! diff --git a/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt index fc6fe09206..f223722075 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/CommentsSheet.kt @@ -12,15 +12,13 @@ import androidx.fragment.app.setFragmentResult import com.github.libretube.R import com.github.libretube.databinding.CommentsSheetBinding import com.github.libretube.ui.fragments.CommentsMainFragment -import com.github.libretube.ui.models.CommentsViewModel import com.github.libretube.ui.models.CommonPlayerViewModel -class CommentsSheet : UndimmedBottomSheet() { +class CommentsSheet : ExpandablePlayerSheet() { private var _binding: CommentsSheetBinding? = null val binding get() = _binding!! private val commonPlayerViewModel: CommonPlayerViewModel by activityViewModels() - private val commentsViewModel: CommentsViewModel by activityViewModels() override fun onCreateView( inflater: LayoutInflater, @@ -56,15 +54,6 @@ class CommentsSheet : UndimmedBottomSheet() { childFragmentManager.commit { replace(R.id.commentFragContainer, args = arguments) } - - commentsViewModel.setCommentSheetExpand(true) - commentsViewModel.commentSheetExpand.observe(viewLifecycleOwner) { - when (it) { - true -> expand() - false -> expand(true) - else -> dismiss() - } - } } override fun onDestroyView() { diff --git a/app/src/main/java/com/github/libretube/ui/sheets/ExpandablePlayerSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/ExpandablePlayerSheet.kt new file mode 100644 index 0000000000..9d9e115b85 --- /dev/null +++ b/app/src/main/java/com/github/libretube/ui/sheets/ExpandablePlayerSheet.kt @@ -0,0 +1,28 @@ +package com.github.libretube.ui.sheets + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.activityViewModels +import com.github.libretube.ui.models.CommonPlayerViewModel + +abstract class ExpandablePlayerSheet: UndimmedBottomSheet() { + private val commonPlayerViewModel: CommonPlayerViewModel by activityViewModels() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + commonPlayerViewModel.setSheetExpand(true) + commonPlayerViewModel.sheetExpand.observe(viewLifecycleOwner) { + when (it) { + true -> expand() + false -> expand(true) + else -> dismiss() + } + } + } + + override fun onDestroyView() { + super.onDestroyView() + commonPlayerViewModel.setSheetExpand(null) + } +} \ No newline at end of file