@@ -6,6 +6,7 @@ import kotlinx.coroutines.CoroutineScope
6
6
import kotlinx.coroutines.Dispatchers
7
7
import kotlinx.coroutines.ExperimentalCoroutinesApi
8
8
import kotlinx.coroutines.flow.collectLatest
9
+ import kotlinx.coroutines.flow.combine
9
10
import kotlinx.coroutines.flow.distinctUntilChanged
10
11
import kotlinx.coroutines.flow.filterNotNull
11
12
import kotlinx.coroutines.flow.first
@@ -28,6 +29,7 @@ import org.session.libsession.utilities.Address
28
29
import org.session.libsession.utilities.Address.Companion.fromSerialized
29
30
import org.session.libsession.utilities.ConfigFactoryProtocol
30
31
import org.session.libsession.utilities.TextSecurePreferences
32
+ import org.session.libsession.utilities.UserConfigType
31
33
import org.session.libsession.utilities.getGroup
32
34
import org.session.libsession.utilities.userConfigsChanged
33
35
import org.session.libsignal.crypto.ecc.DjbECPrivateKey
@@ -50,6 +52,8 @@ import org.thoughtcrime.securesms.dependencies.ManagerScope
50
52
import org.thoughtcrime.securesms.dependencies.OnAppStartupComponent
51
53
import org.thoughtcrime.securesms.repository.ConversationRepository
52
54
import org.thoughtcrime.securesms.util.SessionMetaProtocol
55
+ import org.thoughtcrime.securesms.util.castAwayType
56
+ import java.util.EnumSet
53
57
import java.util.concurrent.TimeUnit
54
58
import javax.inject.Inject
55
59
@@ -87,9 +91,15 @@ class ConfigToDatabaseSync @Inject constructor(
87
91
preferences.watchLocalNumber()
88
92
.filterNotNull()
89
93
.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
+ )
93
103
}
94
104
.distinctUntilChanged()
95
105
.collectLatest { (conversations, convoInfo) ->
@@ -104,9 +114,7 @@ class ConfigToDatabaseSync @Inject constructor(
104
114
}
105
115
106
116
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)
110
118
111
119
if (result.deletedThreads.isNotEmpty()) {
112
120
val deletedThreadIDs = result.deletedThreads.values
0 commit comments