From 16536c43d6e2a7a07806b5e902ed732860d25eb8 Mon Sep 17 00:00:00 2001 From: 0x330a <92654767+0x330a@users.noreply.github.com> Date: Tue, 19 Sep 2023 12:21:37 +1000 Subject: [PATCH] feat: get the group member list from convo activity/vm --- .../securesms/ApplicationContext.java | 1 + .../conversation/v2/ConversationActivityV2.kt | 22 +++++++++++++------ .../conversation/v2/ConversationViewModel.kt | 9 ++++++++ .../securesms/database/Storage.kt | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index 8ff6ad863a..87fa307e56 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -285,6 +285,7 @@ public class ApplicationContext extends Application implements DefaultLifecycleO if (poller != null) { poller.stopIfNeeded(); } + pollerFactory.stopAll(); LegacyClosedGroupPollerV2.getShared().stopAll(); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt index 8f2bced904..9e2ecd2a15 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationActivityV2.kt @@ -1125,14 +1125,22 @@ class ConversationActivityV2 : PassphraseRequiredActionBarActivity(), InputBarDe actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_muted_forever) } } else if (recipient.isGroupRecipient) { - viewModel.openGroup?.let { openGroup -> - val userCount = lokiApiDb.getUserCount(openGroup.room, openGroup.server) ?: 0 - actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_active_member_count, userCount) - } ?: run { - val userCount = groupDb.getGroupMemberAddresses(recipient.address.toGroupString(), true).size - actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_member_count, userCount) + when { + recipient.isOpenGroupRecipient -> { + viewModel.openGroup?.let { openGroup -> + val userCount = lokiApiDb.getUserCount(openGroup.room, openGroup.server) ?: 0 + actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_active_member_count, userCount) + } + } + recipient.isLegacyClosedGroupRecipient -> { + val userCount = groupDb.getGroupMemberAddresses(recipient.address.toGroupString(), true).size + actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_member_count, userCount) + } + recipient.isClosedGroupRecipient -> { + val userCount = viewModel.closedGroupMembers.size + actionBarBinding.conversationSubtitleView.text = getString(R.string.ConversationActivity_member_count, userCount) + } } - viewModel } else { actionBarBinding.conversationSubtitleView.isVisible = false } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt index 118f4856b0..5bceb69771 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt @@ -12,6 +12,7 @@ import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch +import network.loki.messenger.libsession_util.util.GroupMember import org.session.libsession.database.StorageProtocol import org.session.libsession.messaging.open_groups.OpenGroup import org.session.libsession.messaging.open_groups.OpenGroupApi @@ -58,6 +59,14 @@ class ConversationViewModel( val openGroup: OpenGroup? get() = _openGroup.value + val closedGroupMembers: List + get() { + val recipient = recipient ?: return emptyList() + if (!recipient.isClosedGroupRecipient) return emptyList() + return storage.getMembers(recipient.address.serialize()) + } + + val serverCapabilities: List get() = openGroup?.let { storage.getServerCapabilities(it.server) } ?: listOf() diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 73aaa43177..9780249092 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -1201,7 +1201,7 @@ open class Storage( } override fun getMembers(groupPublicKey: String): List = - configFactory.getGroupMemberConfig(SessionId.from(groupPublicKey))?.all()?.toList() ?: emptyList() + configFactory.getGroupMemberConfig(SessionId.from(groupPublicKey))?.use { it.all() }?.toList() ?: emptyList() override fun setServerCapabilities(server: String, capabilities: List) { return DatabaseComponent.get(context).lokiAPIDatabase().setServerCapabilities(server, capabilities)