From 2674fd2df4b67878a9952a9689b2e1642803560c Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 28 Jul 2022 10:07:40 -0300 Subject: [PATCH] Fix issue where postponed transition would not start at the right time. --- .../avatar/photo/PhotoEditorFragment.kt | 3 +++ .../mediasend/AvatarSelectionActivity.java | 4 ++++ .../v2/images/MediaReviewImagePageFragment.kt | 10 ++------ .../v2/review/MediaReviewFragment.kt | 24 +++++++------------ .../scribbles/ImageEditorFragment.java | 9 +++++-- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/avatar/photo/PhotoEditorFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/avatar/photo/PhotoEditorFragment.kt index cd3365102b..4223b9ce89 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/avatar/photo/PhotoEditorFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/avatar/photo/PhotoEditorFragment.kt @@ -61,6 +61,9 @@ class PhotoEditorFragment : Fragment(R.layout.avatar_photo_editor_fragment), Ima Navigation.findNavController(requireView()).popBackStack() } + override fun restoreState() { + } + override fun onMainImageLoaded() { } diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/AvatarSelectionActivity.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/AvatarSelectionActivity.java index d2b965503a..d96534db5c 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/AvatarSelectionActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/AvatarSelectionActivity.java @@ -183,6 +183,10 @@ public class AvatarSelectionActivity extends AppCompatActivity implements Camera } + @Override + public void restoreState() { + } + public boolean popToRoot() { final int backStackCount = getSupportFragmentManager().getBackStackEntryCount(); if (backStackCount == 0) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/images/MediaReviewImagePageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/images/MediaReviewImagePageFragment.kt index d654de8455..4032f9c897 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/images/MediaReviewImagePageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/images/MediaReviewImagePageFragment.kt @@ -69,11 +69,6 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag } } - override fun onViewStateRestored(savedInstanceState: Bundle?) { - super.onViewStateRestored(savedInstanceState) - restoreImageEditorState() - } - override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) @@ -84,7 +79,6 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag val fragmentInManager: ImageEditorFragment? = childFragmentManager.findFragmentByTag(IMAGE_EDITOR_TAG) as? ImageEditorFragment return if (fragmentInManager != null) { - sharedViewModel.sendCommand(HudCommand.ResumeEntryTransition) fragmentInManager } else { val imageEditorFragment = ImageEditorFragment.newInstance( @@ -131,7 +125,7 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag } override fun onCancelEditing() { - restoreImageEditorState() + restoreState() } override fun onMainImageLoaded() { @@ -142,7 +136,7 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag sharedViewModel.sendCommand(HudCommand.ResumeEntryTransition) } - private fun restoreImageEditorState() { + override fun restoreState() { val data = sharedViewModel.getEditorState(requireUri()) as? ImageEditorFragment.Data if (data != null) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt index 59ac994663..8e80828ea2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/review/MediaReviewFragment.kt @@ -23,7 +23,6 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import app.cash.exhaustive.Exhaustive -import io.reactivex.rxjava3.disposables.CompositeDisposable import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.conversation.MessageSendType @@ -40,6 +39,7 @@ import org.thoughtcrime.securesms.mediasend.v2.MediaValidator import org.thoughtcrime.securesms.mediasend.v2.stories.StoriesMultiselectForwardActivity import org.thoughtcrime.securesms.mms.SentMediaQuality import org.thoughtcrime.securesms.permissions.Permissions +import org.thoughtcrime.securesms.util.LifecycleDisposable import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.fragments.requireListener @@ -80,11 +80,13 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { ) private var animatorSet: AnimatorSet? = null - private var disposables: CompositeDisposable? = null + private var disposables: LifecycleDisposable = LifecycleDisposable() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { postponeEnterTransition() + disposables.bindTo(viewLifecycleOwner) + callback = requireListener() drawToolButton = view.findViewById(R.id.draw_tool) @@ -110,15 +112,12 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { val pagerAdapter = MediaReviewFragmentPagerAdapter(this) - disposables = CompositeDisposable() - disposables?.add( - sharedViewModel.hudCommands.subscribe { - when (it) { - HudCommand.ResumeEntryTransition -> startPostponedEnterTransition() - else -> Unit - } + disposables += sharedViewModel.hudCommands.subscribe { + when (it) { + HudCommand.ResumeEntryTransition -> startPostponedEnterTransition() + else -> Unit } - ) + } pager.adapter = pagerAdapter @@ -251,11 +250,6 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) { Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults) } - override fun onDestroyView() { - disposables?.dispose() - super.onDestroyView() - } - private fun handleMediaValidatorFilterError(error: MediaValidator.FilterError) { @Exhaustive when (error) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java index 66cb5a1bf1..26aaaaa45f 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java @@ -220,6 +220,7 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + controller.restoreState(); Mode mode = Mode.getByCode(requireArguments().getString(KEY_MODE)); @@ -588,8 +589,10 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu @Override public void onClearAll() { - imageEditorView.getModel().clearUndoStack(); - updateHudDialRotation(); + if (imageEditorView != null) { + imageEditorView.getModel().clearUndoStack(); + updateHudDialRotation(); + } } @Override @@ -1050,6 +1053,8 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu void onMainImageLoaded(); void onMainImageFailedToLoad(); + + void restoreState(); } private static class FaceDetectionResult {