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 {

View file

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true">
<shape android:shape="oval">
<stroke android:color="@color/signal_colorPrimary" android:width="2.5dp" />
</shape>
</item>
<item>
<shape android:shape="oval">
<stroke android:color="@color/signal_inverse_transparent_25" android:width="1.5dp" />
</shape>
</item>
</selector>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="2.5dp"
android:color="@color/signal_colorPrimary" />
</shape>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<stroke
android:width="1.5dp"
android:color="@color/signal_inverse_transparent_25" />
</shape>

View file

@ -17,7 +17,7 @@
android:id="@+id/avatar_story_ring"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/avatar_story_ring"
android:background="@drawable/avatar_story_ring_inactive"
android:importantForAccessibility="no"
android:visibility="gone"
tools:visibility="visible" />