From 14b1de8a8c37a9cad831e906a8e5a7dcb57a784a Mon Sep 17 00:00:00 2001 From: Evgenii Kozlov Date: Tue, 14 Jan 2025 17:38:34 +0100 Subject: [PATCH] DROID-3132 Space-level chat | Enhancement | Added loading state for fullscreen media preview + fix window insets --- .../gallery/FullScreenPictureFragment.kt | 19 ++++++++++++++++++- .../anytype/ui/home/HomeScreenFragment.kt | 13 ++++++++----- .../layout/fragment_full_screen_picture.xml | 10 +++++++++- 3 files changed, 35 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/anytypeio/anytype/ui/editor/gallery/FullScreenPictureFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/editor/gallery/FullScreenPictureFragment.kt index 07d69017f6..4d6d273475 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/editor/gallery/FullScreenPictureFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/editor/gallery/FullScreenPictureFragment.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.os.bundleOf import com.anytypeio.anytype.R +import com.anytypeio.anytype.core_utils.ext.argOrNull import com.anytypeio.anytype.core_utils.ui.BaseFragment import com.anytypeio.anytype.databinding.FragmentFullScreenPictureBinding import com.bumptech.glide.Glide @@ -15,6 +16,10 @@ class FullScreenPictureFragment : BaseFragment private val url: String get() = requireArguments().getString(ARG_URL_KEY) ?: throw IllegalStateException() + private val ignoreRootWindowInsets + get() = argOrNull(ARG_IGNORE_INSETS_KEY) + + companion object { fun new(target: String, url: String) = FullScreenPictureFragment().apply { @@ -24,10 +29,14 @@ class FullScreenPictureFragment : BaseFragment ) } - fun args(url: String) : Bundle = bundleOf(ARG_URL_KEY to url) + fun args( + url: String, + ignoreRootWindowInsets: Boolean = false + ) : Bundle = bundleOf(ARG_URL_KEY to url, ARG_IGNORE_INSETS_KEY to ignoreRootWindowInsets) const val ARG_URL_KEY = "arg.full_screen_picture.url" const val ARG_TARGET_KEY = "arg.full_screen_picture.target" + private const val ARG_IGNORE_INSETS_KEY = "arg.full_screen_picture.ignore-insets" } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -39,6 +48,14 @@ class FullScreenPictureFragment : BaseFragment override fun injectDependencies() {} override fun releaseDependencies() {} + override fun onApplyWindowRootInsets() { + if (ignoreRootWindowInsets != true) { + super.onApplyWindowRootInsets() + } else { + // DO nothing. + } + } + override fun inflateBinding( inflater: LayoutInflater, container: ViewGroup? diff --git a/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt b/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt index d6ce30e1f4..4bdc35aaf3 100644 --- a/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt +++ b/app/src/main/java/com/anytypeio/anytype/ui/home/HomeScreenFragment.kt @@ -193,12 +193,15 @@ class HomeScreenFragment : BaseComposeFragment(), proceedWithAction(SystemAction.OpenUrl(it)) }, onRequestOpenFullScreenImage = { url -> - findNavController().navigate( - R.id.fullScreenImageFragment, - FullScreenPictureFragment.args( - url = url + runCatching { + findNavController().navigate( + R.id.fullScreenImageFragment, + FullScreenPictureFragment.args( + url = url, + ignoreRootWindowInsets = true + ) ) - ) + } }, onSelectChatReaction = { runCatching { diff --git a/app/src/main/res/layout/fragment_full_screen_picture.xml b/app/src/main/res/layout/fragment_full_screen_picture.xml index 0fbd16db7b..1c884d80a4 100644 --- a/app/src/main/res/layout/fragment_full_screen_picture.xml +++ b/app/src/main/res/layout/fragment_full_screen_picture.xml @@ -2,13 +2,21 @@ + +