Add story ring to CFV2.

This commit is contained in:
Alex Hart
2023-06-29 15:16:19 -03:00
committed by Greyson Parrelli
parent e1e3d7a85b
commit 9b1917cbdc
7 changed files with 43 additions and 15 deletions

View File

@@ -41,7 +41,7 @@ class AvatarView @JvmOverloads constructor(
}
storyRing.visible = true
storyRing.isActivated = hasUnreadStory
storyRing.setBackgroundResource(if (hasUnreadStory) R.drawable.avatar_story_ring_active else R.drawable.avatar_story_ring_inactive)
avatar.scaleX = storyRingScale
avatar.scaleY = storyRingScale

View File

@@ -479,6 +479,7 @@ class ConversationFragment :
presentChatColors(args.chatColors)
presentConversationTitle(viewModel.recipientSnapshot)
presentActionBarMenu()
presentStoryRing()
observeConversationThread()
@@ -855,6 +856,25 @@ class ConversationFragment :
.addTo(disposables)
}
private fun presentStoryRing() {
if (SignalStore.storyValues().isFeatureDisabled) {
return
}
disposables += viewModel.storyRingState.subscribeBy {
binding.conversationTitleView.conversationTitleView.setStoryRingFromState(it)
}
binding.conversationTitleView.conversationTitleView.setOnStoryRingClickListener {
val recipient: Recipient = viewModel.recipientSnapshot ?: return@setOnStoryRingClickListener
val args = StoryViewerArgs.Builder(recipient.id, recipient.shouldHideStory())
.isFromQuote(true)
.build()
startActivity(StoryViewerActivity.createIntent(requireContext(), args))
}
}
private fun presentInputReadyState(inputReadyState: InputReadyState) {
presentConversationTitle(inputReadyState.conversationRecipient)

View File

@@ -43,6 +43,7 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.database.model.Quote
import org.thoughtcrime.securesms.database.model.ReactionRecord
import org.thoughtcrime.securesms.database.model.StickerRecord
import org.thoughtcrime.securesms.database.model.StoryViewState
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob
@@ -123,6 +124,12 @@ class ConversationViewModel(
private val _searchQuery = BehaviorSubject.createDefault("")
val searchQuery: Observable<String> = _searchQuery
val storyRingState = recipient
.switchMap { StoryViewState.getForRecipientId(it.id) }
.subscribeOn(Schedulers.io())
.distinctUntilChanged()
.observeOn(AndroidSchedulers.mainThread())
init {
disposables += recipient
.subscribeBy {