mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-31 15:36:09 +00:00
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:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user