kopia lustrzana https://github.com/ryukoposting/Signal-Android
Ensure stub is never resolved if not needed.
rodzic
e10c20ffd7
commit
0ac5782f1f
|
@ -1,6 +1,7 @@
|
|||
package org.thoughtcrime.securesms.stories.viewer.page
|
||||
|
||||
import android.view.ViewStub
|
||||
import androidx.core.view.isVisible
|
||||
import org.thoughtcrime.securesms.blurhash.BlurHash
|
||||
import org.thoughtcrime.securesms.stories.StoryFirstTimeNavigationView
|
||||
import org.thoughtcrime.securesms.util.views.Stub
|
||||
|
@ -29,6 +30,22 @@ class StoryFirstNavigationStub(viewStub: ViewStub) : Stub<StoryFirstTimeNavigati
|
|||
}
|
||||
}
|
||||
|
||||
fun showIfAble(ableToShow: Boolean) {
|
||||
if (ableToShow) {
|
||||
get().show()
|
||||
}
|
||||
}
|
||||
|
||||
fun isVisible(): Boolean {
|
||||
return resolved() && get().isVisible
|
||||
}
|
||||
|
||||
fun hide() {
|
||||
if (resolved()) {
|
||||
get().hide()
|
||||
}
|
||||
}
|
||||
|
||||
override fun get(): StoryFirstTimeNavigationView {
|
||||
val needsResolve = !resolved()
|
||||
val view = super.get()
|
||||
|
|
|
@ -390,27 +390,27 @@ class StoryViewerPageFragment :
|
|||
resumeProgress()
|
||||
}
|
||||
|
||||
val wasDisplayingNavigationView = isFirstTimeNavVisible()
|
||||
val wasDisplayingNavigationView = storyFirstTimeNavigationViewStub.isVisible()
|
||||
|
||||
when {
|
||||
state.hideChromeImmediate -> {
|
||||
hideChromeImmediate()
|
||||
storyCaptionContainer.visible = false
|
||||
storyFirstTimeNavigationViewStub.takeIf { it.resolved() }?.get()?.hide()
|
||||
storyFirstTimeNavigationViewStub.hide()
|
||||
}
|
||||
state.hideChrome -> {
|
||||
hideChrome()
|
||||
storyCaptionContainer.visible = true
|
||||
storyFirstTimeNavigationViewStub.get().show()
|
||||
storyFirstTimeNavigationViewStub.showIfAble(!SignalStore.storyValues().userHasSeenFirstNavView)
|
||||
}
|
||||
else -> {
|
||||
showChrome()
|
||||
storyCaptionContainer.visible = true
|
||||
storyFirstTimeNavigationViewStub.get().show()
|
||||
storyFirstTimeNavigationViewStub.showIfAble(!SignalStore.storyValues().userHasSeenFirstNavView)
|
||||
}
|
||||
}
|
||||
|
||||
val isDisplayingNavigationView = isFirstTimeNavVisible()
|
||||
val isDisplayingNavigationView = storyFirstTimeNavigationViewStub.isVisible()
|
||||
if (isDisplayingNavigationView && Build.VERSION.SDK_INT >= 31) {
|
||||
hideChromeImmediate()
|
||||
storyContentContainer.setRenderEffect(RenderEffect.createBlurEffect(100f, 100f, Shader.TileMode.CLAMP))
|
||||
|
@ -419,7 +419,7 @@ class StoryViewerPageFragment :
|
|||
}
|
||||
|
||||
if (wasDisplayingNavigationView xor isDisplayingNavigationView) {
|
||||
viewModel.setIsDisplayingFirstTimeNavigation(isFirstTimeNavVisible())
|
||||
viewModel.setIsDisplayingFirstTimeNavigation(storyFirstTimeNavigationViewStub.isVisible())
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -473,10 +473,6 @@ class StoryViewerPageFragment :
|
|||
viewModel.setIsDisplayingForwardDialog(false)
|
||||
}
|
||||
|
||||
private fun isFirstTimeNavVisible(): Boolean {
|
||||
return storyFirstTimeNavigationViewStub.takeIf { it.resolved() }?.get()?.isVisible ?: false
|
||||
}
|
||||
|
||||
private fun calculateDurationForText(textContent: StoryPost.Content.TextContent): Long {
|
||||
val divisionsOf15 = textContent.length / CHARACTERS_PER_SECOND
|
||||
return TimeUnit.SECONDS.toMillis(divisionsOf15) + MIN_TEXT_STORY_PLAYBACK
|
||||
|
|
Ładowanie…
Reference in New Issue