Skip to content

Commit 0012cd9

Browse files
committed
NTS should always be in convo list, just home screen not showing hidden convo
1 parent 4aef4c7 commit 0012cd9

File tree

3 files changed

+20
-12
lines changed

3 files changed

+20
-12
lines changed

app/src/main/java/org/thoughtcrime/securesms/configs/ConfigToDatabaseSync.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import kotlinx.coroutines.CoroutineScope
66
import kotlinx.coroutines.Dispatchers
77
import kotlinx.coroutines.ExperimentalCoroutinesApi
88
import kotlinx.coroutines.flow.collectLatest
9+
import kotlinx.coroutines.flow.combine
910
import kotlinx.coroutines.flow.distinctUntilChanged
1011
import kotlinx.coroutines.flow.filterNotNull
1112
import kotlinx.coroutines.flow.first
@@ -28,6 +29,7 @@ import org.session.libsession.utilities.Address
2829
import org.session.libsession.utilities.Address.Companion.fromSerialized
2930
import org.session.libsession.utilities.ConfigFactoryProtocol
3031
import org.session.libsession.utilities.TextSecurePreferences
32+
import org.session.libsession.utilities.UserConfigType
3133
import org.session.libsession.utilities.getGroup
3234
import org.session.libsession.utilities.userConfigsChanged
3335
import org.session.libsignal.crypto.ecc.DjbECPrivateKey
@@ -50,6 +52,8 @@ import org.thoughtcrime.securesms.dependencies.ManagerScope
5052
import org.thoughtcrime.securesms.dependencies.OnAppStartupComponent
5153
import org.thoughtcrime.securesms.repository.ConversationRepository
5254
import org.thoughtcrime.securesms.util.SessionMetaProtocol
55+
import org.thoughtcrime.securesms.util.castAwayType
56+
import java.util.EnumSet
5357
import java.util.concurrent.TimeUnit
5458
import javax.inject.Inject
5559

@@ -87,9 +91,15 @@ class ConfigToDatabaseSync @Inject constructor(
8791
preferences.watchLocalNumber()
8892
.filterNotNull()
8993
.take(1)
90-
.flatMapLatest { conversationRepository.conversationListAddressesFlow }
91-
.map { addresses ->
92-
addresses to configFactory.withUserConfigs { it.convoInfoVolatile.all() }
94+
.flatMapLatest {
95+
combine(
96+
conversationRepository.conversationListAddressesFlow,
97+
configFactory.userConfigsChanged(EnumSet.of(UserConfigType.CONVO_INFO_VOLATILE))
98+
.castAwayType()
99+
.onStart { emit(Unit) }
100+
.map { _ -> configFactory.withUserConfigs { it.convoInfoVolatile.all() } },
101+
::Pair
102+
)
93103
}
94104
.distinctUntilChanged()
95105
.collectLatest { (conversations, convoInfo) ->
@@ -104,9 +114,7 @@ class ConfigToDatabaseSync @Inject constructor(
104114
}
105115

106116
private fun ensureConversations(addresses: Set<Address.Conversable>) {
107-
val myAddress = Address.Standard(AccountId(preferences.getLocalNumber()!!))
108-
val ensureAddresses = if (myAddress in addresses) addresses else addresses + myAddress
109-
val result = threadDatabase.ensureThreads(ensureAddresses) // Always include NTS so it doesn't get deleted
117+
val result = threadDatabase.ensureThreads(addresses)
110118

111119
if (result.deletedThreads.isNotEmpty()) {
112120
val deletedThreadIDs = result.deletedThreads.values

app/src/main/java/org/thoughtcrime/securesms/home/HomeViewModel.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import kotlinx.coroutines.flow.stateIn
2525
import kotlinx.coroutines.flow.update
2626
import kotlinx.coroutines.launch
2727
import network.loki.messenger.R
28+
import network.loki.messenger.libsession_util.ConfigBase.Companion.PRIORITY_HIDDEN
2829
import org.session.libsession.database.StorageProtocol
2930
import org.session.libsession.messaging.groups.GroupManagerV2
3031
import org.session.libsession.utilities.Address
@@ -95,7 +96,8 @@ class HomeViewModel @Inject constructor(
9596
.map { convos ->
9697
val (approved, unapproved) = convos
9798
.asSequence()
98-
.filter { !it.recipient.blocked } // We don't display blocked convo at all
99+
.filter { !it.recipient.blocked } // We don't display blocked convo
100+
.filter { it.recipient.priority != PRIORITY_HIDDEN } // We don't show hidden convo
99101
.partition { it.recipient.approved }
100102
val unreadUnapproved = unapproved
101103
.count { it.unreadCount > 0 || it.unreadMentionCount > 0 }

app/src/main/java/org/thoughtcrime/securesms/repository/ConversationRepository.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -165,12 +165,10 @@ class DefaultConversationRepository @Inject constructor(
165165
private fun getConversationListAddresses() = buildSet {
166166
val myAddress = Address.Standard(AccountId(textSecurePreferences.getLocalNumber() ?: return@buildSet ))
167167

168-
configFactory.withUserConfigs { configs ->
169-
// Have NTS?
170-
if (configs.userProfile.getNtsPriority() >= 0) {
171-
add(myAddress)
172-
}
168+
// Always have NTS - we should only "hide" them on home screen - the convo should never be deleted
169+
add(myAddress)
173170

171+
configFactory.withUserConfigs { configs ->
174172
// Contacts
175173
for (contact in configs.contacts.all()) {
176174
if (contact.priority >= 0 && (!contact.blocked || contact.approved)) {

0 commit comments

Comments
 (0)