feat: finish latest wrappers fix tests and continue building default generation functions. refactor defaults to be used if no stored data blob in DB

This commit is contained in:
0x330a
2023-03-03 16:41:57 +11:00
parent c1434648dc
commit 2a701f2cc3
6 changed files with 70 additions and 41 deletions

View File

@@ -8,8 +8,8 @@ import network.loki.messenger.libsession_util.UserProfile
import org.session.libsession.utilities.ConfigFactoryProtocol
import org.session.libsession.utilities.ConfigFactoryUpdateListener
import org.session.libsignal.protos.SignalServiceProtos.SharedConfigMessage
import org.session.libsignal.utilities.Log
import org.thoughtcrime.securesms.database.ConfigDatabase
import org.thoughtcrime.securesms.util.ConfigurationMessageUtilities
import java.util.concurrent.ConcurrentSkipListSet
class ConfigFactory(private val context: Context,
@@ -42,14 +42,14 @@ class ConfigFactory(private val context: Context,
override val user: UserProfile? get() = synchronized(userLock) {
if (_userConfig == null) {
Log.d("Loki-DBG", "Getting user info")
val (secretKey, publicKey) = maybeGetUserInfo() ?: return@synchronized null
Log.d("Loki-DBG", "Getting user configs and hashes")
val userDump = configDatabase.retrieveConfigAndHashes(SharedConfigMessage.Kind.USER_PROFILE.name, publicKey)
_userConfig = if (userDump != null) {
UserProfile.newInstance(secretKey, userDump)
} else {
UserProfile.newInstance(secretKey)
ConfigurationMessageUtilities.generateUserProfileConfigDump()?.let { dump ->
UserProfile.newInstance(secretKey, dump)
} ?: UserProfile.newInstance(secretKey)
}
}
_userConfig
@@ -62,7 +62,9 @@ class ConfigFactory(private val context: Context,
_contacts = if (contactsDump != null) {
Contacts.newInstance(secretKey, contactsDump)
} else {
Contacts.newInstance(secretKey)
ConfigurationMessageUtilities.generateContactConfigDump()?.let { dump ->
Contacts.newInstance(secretKey, dump)
} ?: Contacts.newInstance(secretKey)
}
}
_contacts
@@ -75,7 +77,10 @@ class ConfigFactory(private val context: Context,
_convoVolatileConfig = if (convoDump != null) {
ConversationVolatileConfig.newInstance(secretKey, convoDump)
} else {
ConversationVolatileConfig.newInstance(secretKey)
// TODO: generate convo volatile config here
ConfigurationMessageUtilities.generateConversationVolatileDump(context)?.let { dump ->
ConversationVolatileConfig.newInstance(secretKey, dump)
} ?: ConversationVolatileConfig.newInstance(secretKey)
}
}
_convoVolatileConfig

View File

@@ -15,6 +15,7 @@ import org.session.libsession.messaging.jobs.JobQueue
import org.session.libsession.messaging.messages.Destination
import org.session.libsession.messaging.messages.control.ConfigurationMessage
import org.session.libsession.messaging.sending_receiving.MessageSender
import org.session.libsession.messaging.utilities.SessionId
import org.session.libsession.utilities.Address
import org.session.libsession.utilities.GroupUtil
import org.session.libsession.utilities.TextSecurePreferences
@@ -116,7 +117,7 @@ object ConfigurationMessageUtilities {
return dump
}
fun generateContactConfigDump(context: Context): ByteArray? {
fun generateContactConfigDump(): ByteArray? {
val secretKey = maybeUserSecretKey() ?: return null
val storage = MessagingModuleConfiguration.shared.storage
val localUserKey = storage.getUserPublicKey() ?: return null
@@ -142,7 +143,7 @@ object ConfigurationMessageUtilities {
approved = settings.isApproved,
approvedMe = settings.hasApprovedMe(),
profilePicture = userPic ?: UserPic.DEFAULT,
priority = 0 // TODO: read this in from a pinned priority
priority = if ()
)
contactConfig.set(contactInfo)
}
@@ -154,7 +155,6 @@ object ConfigurationMessageUtilities {
fun generateConversationVolatileDump(context: Context): ByteArray? {
val secretKey = maybeUserSecretKey() ?: return null
val storage = MessagingModuleConfiguration.shared.storage
val localUserKey = storage.getUserPublicKey() ?: return null
val convoConfig = ConversationVolatileConfig.newInstance(secretKey)
val threadDb = DatabaseComponent.get(context).threadDatabase()
threadDb.approvedConversationList.use { cursor ->
@@ -172,9 +172,18 @@ object ConfigurationMessageUtilities {
val groupPublicKey = GroupUtil.doubleDecodeGroupId(recipient.address.serialize())
convoConfig.getOrConstructLegacyGroup(groupPublicKey)
}
recipient.isContactRecipient -> convoConfig.getOrConstructOneToOne(recipient.address.serialize())
recipient.isContactRecipient -> {
val sessionId = SessionId(recipient.address.serialize())
if (recipient.isLocalNumber) null // this is handled by the user profile NTS data
else convoConfig.getOrConstructOneToOne(recipient.address.serialize())
}
else -> null
} ?: continue
}
if (contact == null) {
current = reader.next
continue
}
contact.lastRead = current.lastSeen
contact.unread = false // TODO: make the forced unread work at DB level
convoConfig.set(contact)