Fix issue where postponed transition would not start at the right time.

This commit is contained in:
Alex Hart 2022-07-28 10:07:40 -03:00 committed by Greyson Parrelli
parent 39d07c0081
commit 2674fd2df4
5 changed files with 25 additions and 25 deletions

View file

@ -61,6 +61,9 @@ class PhotoEditorFragment : Fragment(R.layout.avatar_photo_editor_fragment), Ima
Navigation.findNavController(requireView()).popBackStack() Navigation.findNavController(requireView()).popBackStack()
} }
override fun restoreState() {
}
override fun onMainImageLoaded() { override fun onMainImageLoaded() {
} }

View file

@ -183,6 +183,10 @@ public class AvatarSelectionActivity extends AppCompatActivity implements Camera
} }
@Override
public void restoreState() {
}
public boolean popToRoot() { public boolean popToRoot() {
final int backStackCount = getSupportFragmentManager().getBackStackEntryCount(); final int backStackCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackCount == 0) { if (backStackCount == 0) {

View file

@ -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) { override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState) 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 val fragmentInManager: ImageEditorFragment? = childFragmentManager.findFragmentByTag(IMAGE_EDITOR_TAG) as? ImageEditorFragment
return if (fragmentInManager != null) { return if (fragmentInManager != null) {
sharedViewModel.sendCommand(HudCommand.ResumeEntryTransition)
fragmentInManager fragmentInManager
} else { } else {
val imageEditorFragment = ImageEditorFragment.newInstance( val imageEditorFragment = ImageEditorFragment.newInstance(
@ -131,7 +125,7 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag
} }
override fun onCancelEditing() { override fun onCancelEditing() {
restoreImageEditorState() restoreState()
} }
override fun onMainImageLoaded() { override fun onMainImageLoaded() {
@ -142,7 +136,7 @@ class MediaReviewImagePageFragment : Fragment(R.layout.fragment_container), Imag
sharedViewModel.sendCommand(HudCommand.ResumeEntryTransition) sharedViewModel.sendCommand(HudCommand.ResumeEntryTransition)
} }
private fun restoreImageEditorState() { override fun restoreState() {
val data = sharedViewModel.getEditorState(requireUri()) as? ImageEditorFragment.Data val data = sharedViewModel.getEditorState(requireUri()) as? ImageEditorFragment.Data
if (data != null) { if (data != null) {

View file

@ -23,7 +23,6 @@ import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2 import androidx.viewpager2.widget.ViewPager2
import app.cash.exhaustive.Exhaustive import app.cash.exhaustive.Exhaustive
import io.reactivex.rxjava3.disposables.CompositeDisposable
import org.thoughtcrime.securesms.R import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.conversation.MessageSendType 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.mediasend.v2.stories.StoriesMultiselectForwardActivity
import org.thoughtcrime.securesms.mms.SentMediaQuality import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.permissions.Permissions import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.util.LifecycleDisposable
import org.thoughtcrime.securesms.util.MediaUtil import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter import org.thoughtcrime.securesms.util.adapter.mapping.MappingAdapter
import org.thoughtcrime.securesms.util.fragments.requireListener 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 animatorSet: AnimatorSet? = null
private var disposables: CompositeDisposable? = null private var disposables: LifecycleDisposable = LifecycleDisposable()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
postponeEnterTransition() postponeEnterTransition()
disposables.bindTo(viewLifecycleOwner)
callback = requireListener() callback = requireListener()
drawToolButton = view.findViewById(R.id.draw_tool) drawToolButton = view.findViewById(R.id.draw_tool)
@ -110,15 +112,12 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) {
val pagerAdapter = MediaReviewFragmentPagerAdapter(this) val pagerAdapter = MediaReviewFragmentPagerAdapter(this)
disposables = CompositeDisposable() disposables += sharedViewModel.hudCommands.subscribe {
disposables?.add( when (it) {
sharedViewModel.hudCommands.subscribe { HudCommand.ResumeEntryTransition -> startPostponedEnterTransition()
when (it) { else -> Unit
HudCommand.ResumeEntryTransition -> startPostponedEnterTransition()
else -> Unit
}
} }
) }
pager.adapter = pagerAdapter pager.adapter = pagerAdapter
@ -251,11 +250,6 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) {
Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults) Permissions.onRequestPermissionsResult(this, requestCode, permissions, grantResults)
} }
override fun onDestroyView() {
disposables?.dispose()
super.onDestroyView()
}
private fun handleMediaValidatorFilterError(error: MediaValidator.FilterError) { private fun handleMediaValidatorFilterError(error: MediaValidator.FilterError) {
@Exhaustive @Exhaustive
when (error) { when (error) {

View file

@ -220,6 +220,7 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
@Override @Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState); super.onViewCreated(view, savedInstanceState);
controller.restoreState();
Mode mode = Mode.getByCode(requireArguments().getString(KEY_MODE)); Mode mode = Mode.getByCode(requireArguments().getString(KEY_MODE));
@ -588,8 +589,10 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
@Override @Override
public void onClearAll() { public void onClearAll() {
imageEditorView.getModel().clearUndoStack(); if (imageEditorView != null) {
updateHudDialRotation(); imageEditorView.getModel().clearUndoStack();
updateHudDialRotation();
}
} }
@Override @Override
@ -1050,6 +1053,8 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
void onMainImageLoaded(); void onMainImageLoaded();
void onMainImageFailedToLoad(); void onMainImageFailedToLoad();
void restoreState();
} }
private static class FaceDetectionResult { private static class FaceDetectionResult {