From e9fbce4e28f2ae55cdff48667e06c04ba569b222 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Mon, 2 Oct 2023 14:49:52 -0400 Subject: [PATCH] Add missing GV2 state update on conversation open. --- .../conversation/v2/ConversationFragment.kt | 2 ++ .../v2/groups/ConversationGroupViewModel.kt | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 009e804c70..479f9d9c94 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -631,6 +631,8 @@ class ConversationFragment : ).addTo(disposables) } + conversationGroupViewModel.updateGroupStateIfNeeded() + ConversationUtil.refreshRecipientShortcuts() if (SignalStore.rateLimit().needsRecaptcha()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/groups/ConversationGroupViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/groups/ConversationGroupViewModel.kt index 376a9351e6..ebbd92d065 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/groups/ConversationGroupViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/groups/ConversationGroupViewModel.kt @@ -17,10 +17,14 @@ import org.signal.core.util.concurrent.subscribeWithSubject import org.thoughtcrime.securesms.conversation.v2.ConversationRecipientRepository import org.thoughtcrime.securesms.database.GroupTable import org.thoughtcrime.securesms.database.model.GroupRecord +import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.groups.GroupId import org.thoughtcrime.securesms.groups.ui.GroupChangeFailureReason import org.thoughtcrime.securesms.groups.v2.GroupBlockJoinRequestResult import org.thoughtcrime.securesms.groups.v2.GroupManagementRepository +import org.thoughtcrime.securesms.jobs.ForceUpdateGroupV2Job +import org.thoughtcrime.securesms.jobs.GroupV2UpdateSelfProfileKeyJob +import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob import org.thoughtcrime.securesms.profiles.spoofing.ReviewUtil import org.thoughtcrime.securesms.recipients.Recipient @@ -132,6 +136,24 @@ class ConversationGroupViewModel( .observeOn(AndroidSchedulers.mainThread()) } + fun updateGroupStateIfNeeded() { + recipientRepository + .conversationRecipient + .firstOrError() + .onErrorComplete() + .filter { it.isPushV2Group && !it.isBlocked } + .subscribe { + val groupId = it.requireGroupId().requireV2() + ApplicationDependencies.getJobManager() + .startChain(RequestGroupV2InfoJob(groupId)) + .then(GroupV2UpdateSelfProfileKeyJob.withoutLimits(groupId)) + .enqueue() + + ForceUpdateGroupV2Job.enqueueIfNecessary(groupId) + } + .addTo(disposables) + } + class Factory(private val threadId: Long, private val recipientRepository: ConversationRecipientRepository) : ViewModelProvider.Factory { override fun create(modelClass: Class): T { return modelClass.cast(ConversationGroupViewModel(threadId, recipientRepository = recipientRepository)) as T