diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/StorySlateView.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/StorySlateView.kt index d76721547d..907f09d9a8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/StorySlateView.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/StorySlateView.kt @@ -6,11 +6,14 @@ import android.os.Parcelable import android.util.AttributeSet import android.view.View import android.widget.FrameLayout +import android.widget.ImageView import android.widget.TextView import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.R +import org.thoughtcrime.securesms.blurhash.BlurHash import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint +import org.thoughtcrime.securesms.mms.GlideApp import org.thoughtcrime.securesms.util.visible /** @@ -36,7 +39,7 @@ class StorySlateView @JvmOverloads constructor( inflate(context, R.layout.stories_slate_view, this) } - private val background: View = findViewById(R.id.background) + private val background: ImageView = findViewById(R.id.background) private val loadingSpinner: View = findViewById(R.id.loading_spinner) private val errorCircle: View = findViewById(R.id.error_circle) private val unavailableText: View = findViewById(R.id.unavailable) @@ -68,6 +71,16 @@ class StorySlateView @JvmOverloads constructor( } } + fun setBackground(blur: BlurHash?) { + if (blur != null) { + GlideApp.with(background) + .load(blur) + .into(background) + } else { + GlideApp.with(background).clear(background) + } + } + private fun moveToProgressState(state: State) { this.state = state visible = true diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt index e7f95bb16d..79b8177a68 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/viewer/page/StoryViewerPageFragment.kt @@ -541,6 +541,8 @@ class StoryViewerPageFragment : } private fun presentSlate(post: StoryPost) { + storySlate.setBackground((post.conversationMessage.messageRecord as? MediaMmsMessageRecord)?.slideDeck?.thumbnailSlide?.placeholderBlur) + when (post.content.transferState) { AttachmentDatabase.TRANSFER_PROGRESS_DONE -> { storySlate.moveToState(StorySlateView.State.HIDDEN, post.id) diff --git a/app/src/main/res/drawable/ic_arrow_down_24.xml b/app/src/main/res/drawable/ic_arrow_down_24.xml new file mode 100644 index 0000000000..c2673233f3 --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_down_24.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/stories_slate_view.xml b/app/src/main/res/layout/stories_slate_view.xml index 436d9a8f7e..de8ff96851 100644 --- a/app/src/main/res/layout/stories_slate_view.xml +++ b/app/src/main/res/layout/stories_slate_view.xml @@ -6,35 +6,46 @@ android:layout_height="match_parent" tools:parentTag="android.widget.FrameLayout"> - + + - = (1L..5L).map(RecipientId::from) val startStory = RecipientId.from(1L) whenever(repository.getStories(any())).doReturn(Single.just(stories)) - val testSubject = StoryViewerViewModel(startStory, false, null, null, repository) + val testSubject = StoryViewerViewModel(startStory, false, null, null, null, repository) testScheduler.triggerActions() // WHEN @@ -72,7 +72,7 @@ class StoryViewerViewModelTest { val stories: List = (1L..5L).map(RecipientId::from) val startStory = stories.last() whenever(repository.getStories(any())).doReturn(Single.just(stories)) - val testSubject = StoryViewerViewModel(startStory, false, null, null, repository) + val testSubject = StoryViewerViewModel(startStory, false, null, null, null, repository) testScheduler.triggerActions() // WHEN @@ -92,7 +92,7 @@ class StoryViewerViewModelTest { val stories: List = (1L..5L).map(RecipientId::from) val startStory = stories.last() whenever(repository.getStories(any())).doReturn(Single.just(stories)) - val testSubject = StoryViewerViewModel(startStory, false, null, null, repository) + val testSubject = StoryViewerViewModel(startStory, false, null, null, null, repository) testScheduler.triggerActions() // WHEN @@ -112,7 +112,7 @@ class StoryViewerViewModelTest { val stories: List = (1L..5L).map(RecipientId::from) val startStory = stories.first() whenever(repository.getStories(any())).doReturn(Single.just(stories)) - val testSubject = StoryViewerViewModel(startStory, false, null, null, repository) + val testSubject = StoryViewerViewModel(startStory, false, null, null, null, repository) testScheduler.triggerActions() // WHEN @@ -132,7 +132,7 @@ class StoryViewerViewModelTest { val stories: List = (1L..5L).map(RecipientId::from) val startStory = stories.first() whenever(repository.getStories(any())).doReturn(Single.just(stories)) - val testSubject = StoryViewerViewModel(startStory, false, null, null, repository) + val testSubject = StoryViewerViewModel(startStory, false, null, null, null, repository) testScheduler.triggerActions() // WHEN