From b9a225f6c608656be6cf627f0e27d44cf7a06847 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Fri, 22 Jul 2022 14:02:29 -0300 Subject: [PATCH] Fix blank screen issue when entering through a quote. --- .../securesms/conversation/ConversationFragment.java | 1 + .../securesms/stories/StoryViewerArgs.kt | 12 ++++++++++-- .../securesms/stories/viewer/StoryViewerFragment.kt | 4 ++++ .../securesms/stories/viewer/StoryViewerState.kt | 3 ++- .../securesms/stories/viewer/StoryViewerViewModel.kt | 3 ++- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java index 822e6a5424..1c7b7ffdef 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationFragment.java @@ -1731,6 +1731,7 @@ public class ConversationFragment extends LoggingFragment implements Multiselect requireContext(), new StoryViewerArgs.Builder(messageRecord.getQuote().getAuthor(), Recipient.resolved(messageRecord.getQuote().getAuthor()).shouldHideStory()) .withStoryId(messageRecord.getParentStoryId().asMessageId().getId()) + .isFromQuote(true) .build())); return; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryViewerArgs.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryViewerArgs.kt index 6df9886a66..863f30f941 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StoryViewerArgs.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StoryViewerArgs.kt @@ -21,7 +21,8 @@ data class StoryViewerArgs( val isFromNotification: Boolean = false, val groupReplyStartPosition: Int = -1, val isUnviewedOnly: Boolean = false, - val isFromInfoContextMenuAction: Boolean = false + val isFromInfoContextMenuAction: Boolean = false, + val isFromQuote: Boolean = false ) : Parcelable { class Builder(private val recipientId: RecipientId, private val isInHiddenStoryMode: Boolean) { @@ -35,6 +36,7 @@ data class StoryViewerArgs( private var groupReplyStartPosition: Int = -1 private var isUnviewedOnly: Boolean = false private var isFromInfoContextMenuAction: Boolean = false + private var isFromQuote: Boolean = false fun withStoryId(storyId: Long): Builder { this.storyId = storyId @@ -76,6 +78,11 @@ data class StoryViewerArgs( return this } + fun isFromQuote(isFromQuote: Boolean): Builder { + this.isFromQuote = isFromQuote + return this + } + fun build(): StoryViewerArgs { return StoryViewerArgs( recipientId = recipientId, @@ -88,7 +95,8 @@ data class StoryViewerArgs( isFromNotification = isFromNotification, groupReplyStartPosition = groupReplyStartPosition, isUnviewedOnly = isUnviewedOnly, - isFromInfoContextMenuAction = isFromInfoContextMenuAction + isFromInfoContextMenuAction = isFromInfoContextMenuAction, + isFromQuote = isFromQuote ) } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt index aead349bc0..fe418f73d7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerFragment.kt @@ -86,6 +86,10 @@ class StoryViewerFragment : requireActivity().supportStartPostponedEnterTransition() } + if (state.skipCrossfade) { + viewModel.setCrossfaderIsReady(true) + } + if (state.loadState.isReady()) { storyCrossfader.alpha = 0f } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerState.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerState.kt index e4898f6bae..7b791a36e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerState.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerState.kt @@ -12,7 +12,8 @@ data class StoryViewerState( val page: Int = -1, val crossfadeSource: CrossfadeSource, val crossfadeTarget: CrossfadeTarget? = null, - val loadState: LoadState = LoadState() + val loadState: LoadState = LoadState(), + val skipCrossfade: Boolean = false ) { sealed class CrossfadeSource { object None : CrossfadeSource() diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerViewModel.kt index 6de03e61f6..32ce8ab8e6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/StoryViewerViewModel.kt @@ -29,7 +29,8 @@ class StoryViewerViewModel( storyViewerArgs.storyThumbTextModel != null -> StoryViewerState.CrossfadeSource.TextModel(storyViewerArgs.storyThumbTextModel) storyViewerArgs.storyThumbUri != null -> StoryViewerState.CrossfadeSource.ImageUri(storyViewerArgs.storyThumbUri, storyViewerArgs.storyThumbBlur) else -> StoryViewerState.CrossfadeSource.None - } + }, + skipCrossfade = storyViewerArgs.isFromNotification || storyViewerArgs.isFromQuote ) )