mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 17:29:32 +01:00
Observe sharedprefs for banner updates.
This commit is contained in:
committed by
mtang-signal
parent
244a81ef24
commit
d15bb05ae3
@@ -106,6 +106,8 @@ import org.thoughtcrime.securesms.badges.gifts.OpenableGift
|
||||
import org.thoughtcrime.securesms.badges.gifts.OpenableGiftItemDecoration
|
||||
import org.thoughtcrime.securesms.badges.gifts.viewgift.received.ViewReceivedGiftBottomSheet
|
||||
import org.thoughtcrime.securesms.badges.gifts.viewgift.sent.ViewSentGiftBottomSheet
|
||||
import org.thoughtcrime.securesms.banner.banners.ServiceOutageBanner
|
||||
import org.thoughtcrime.securesms.banner.banners.UnauthorizedBanner
|
||||
import org.thoughtcrime.securesms.components.AnimatingToggle
|
||||
import org.thoughtcrime.securesms.components.ComposeText
|
||||
import org.thoughtcrime.securesms.components.ConversationSearchBottomBar
|
||||
@@ -227,6 +229,7 @@ import org.thoughtcrime.securesms.groups.ui.migration.GroupsV1MigrationInfoBotto
|
||||
import org.thoughtcrime.securesms.groups.ui.migration.GroupsV1MigrationSuggestionsDialog
|
||||
import org.thoughtcrime.securesms.groups.v2.GroupBlockJoinRequestResult
|
||||
import org.thoughtcrime.securesms.invites.InviteActions
|
||||
import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob
|
||||
import org.thoughtcrime.securesms.keyboard.KeyboardPage
|
||||
import org.thoughtcrime.securesms.keyboard.KeyboardPagerFragment
|
||||
import org.thoughtcrime.securesms.keyboard.KeyboardPagerViewModel
|
||||
@@ -306,7 +309,7 @@ import org.thoughtcrime.securesms.util.MessageConstraintsUtil.isValidEditMessage
|
||||
import org.thoughtcrime.securesms.util.PlayStoreUtil
|
||||
import org.thoughtcrime.securesms.util.RemoteConfig
|
||||
import org.thoughtcrime.securesms.util.SaveAttachmentUtil
|
||||
import org.thoughtcrime.securesms.util.ServiceOutageObserver
|
||||
import org.thoughtcrime.securesms.util.SharedPreferencesLifecycleObserver
|
||||
import org.thoughtcrime.securesms.util.SignalLocalMetrics
|
||||
import org.thoughtcrime.securesms.util.StorageUtil
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences
|
||||
@@ -1019,13 +1022,22 @@ class ConversationFragment :
|
||||
val conversationBannerListener = ConversationBannerListener()
|
||||
binding.conversationBanner.listener = conversationBannerListener
|
||||
|
||||
val serviceOutageObserver = ServiceOutageObserver(requireContext())
|
||||
|
||||
lifecycle.addObserver(serviceOutageObserver)
|
||||
val unauthorizedProducer = UnauthorizedBanner.Producer(requireContext())
|
||||
val serviceOutageProducer = ServiceOutageBanner.Producer(requireContext())
|
||||
lifecycle.addObserver(
|
||||
SharedPreferencesLifecycleObserver(
|
||||
requireContext(),
|
||||
mapOf(
|
||||
TextSecurePreferences.UNAUTHORIZED_RECEIVED to { unauthorizedProducer.queryAndEmit() },
|
||||
TextSecurePreferences.SERVICE_OUTAGE to { serviceOutageProducer.queryAndEmit() }
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val bannerFlows = viewModel.getBannerFlows(
|
||||
context = requireContext(),
|
||||
serviceOutageStatusFlow = serviceOutageObserver.flow,
|
||||
unauthorizedFlow = unauthorizedProducer.flow,
|
||||
serviceOutageStatusFlow = serviceOutageProducer.flow,
|
||||
groupJoinClickListener = conversationBannerListener::reviewJoinRequestsAction,
|
||||
onAddMembers = {
|
||||
conversationGroupViewModel.groupRecordSnapshot?.let { groupRecord ->
|
||||
@@ -1038,6 +1050,10 @@ class ConversationFragment :
|
||||
|
||||
binding.conversationBanner.collectAndShowBanners(bannerFlows)
|
||||
|
||||
if (TextSecurePreferences.getServiceOutage(context)) {
|
||||
AppDependencies.jobManager.add(ServiceOutageDetectionJob())
|
||||
}
|
||||
|
||||
viewModel
|
||||
.identityRecordsObservable
|
||||
.distinctUntilChanged()
|
||||
|
||||
@@ -310,7 +310,7 @@ class ConversationViewModel(
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalCoroutinesApi::class)
|
||||
fun getBannerFlows(context: Context, serviceOutageStatusFlow: Flow<Boolean>, groupJoinClickListener: () -> Unit, onAddMembers: () -> Unit, onNoThanks: () -> Unit, bubbleClickListener: (Boolean) -> Unit): List<Flow<Banner>> {
|
||||
fun getBannerFlows(context: Context, unauthorizedFlow: Flow<UnauthorizedBanner>, serviceOutageStatusFlow: Flow<ServiceOutageBanner>, groupJoinClickListener: () -> Unit, onAddMembers: () -> Unit, onNoThanks: () -> Unit, bubbleClickListener: (Boolean) -> Unit): List<Flow<Banner>> {
|
||||
val pendingGroupJoinFlow: Flow<PendingGroupJoinRequestsBanner> = merge(
|
||||
flow {
|
||||
emit(PendingGroupJoinRequestsBanner(false, 0, {}, {}))
|
||||
@@ -327,8 +327,8 @@ class ConversationViewModel(
|
||||
|
||||
return listOf(
|
||||
OutdatedBuildBanner.createFlow(context, OutdatedBuildBanner.ExpiryStatus.EXPIRED_ONLY),
|
||||
UnauthorizedBanner.createFlow(context),
|
||||
ServiceOutageBanner.fromFlow(serviceOutageStatusFlow),
|
||||
unauthorizedFlow,
|
||||
serviceOutageStatusFlow,
|
||||
pendingGroupJoinFlow,
|
||||
groupV1SuggestionsFlow,
|
||||
BubbleOptOutBanner.createFlow(inBubble = repository.isInBubble, bubbleClickListener)
|
||||
|
||||
Reference in New Issue
Block a user