feat: introduce the handling of poll messages for closed group poller

This commit is contained in:
0x330a
2023-09-13 12:11:42 +10:00
parent df29ed8f16
commit 040696c08b
6 changed files with 141 additions and 28 deletions

View File

@@ -906,8 +906,8 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
val group = userGroups.createGroup()
val adminKey = group.adminKey
userGroups.set(group)
val groupInfo = configFactory.getOrConstructGroupInfoConfig(group.groupSessionId) ?: return Optional.absent()
val groupMembers = configFactory.getOrConstructGroupMemberConfig(group.groupSessionId) ?: return Optional.absent()
val groupInfo = configFactory.getGroupInfoConfig(group.groupSessionId) ?: return Optional.absent()
val groupMembers = configFactory.getGroupMemberConfig(group.groupSessionId) ?: return Optional.absent()
with (groupInfo) {
setName(groupName)
@@ -921,7 +921,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
val groupKeys = GroupKeysConfig.newInstance(
userKp.secretKey.asBytes,
Hex.fromStringCondensed(group.groupSessionId.publicKey),
group.adminKey,
adminKey,
info = groupInfo,
members = groupMembers
)
@@ -930,7 +930,6 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
val configTtl = 1 * 24 * 60 * 60 * 1000L // TODO: just testing here, 1 day so we don't fill large space on network
// Test the sending
val keyPush = groupKeys.pendingConfig() ?: return Optional.absent()
val pendingKey = groupKeys.pendingKey() ?: return Optional.absent()
val keysSnodeMessage = SnodeMessage(
newGroupRecipient,
@@ -1180,7 +1179,7 @@ open class Storage(context: Context, helper: SQLCipherOpenHelper, private val co
}
override fun getMembers(groupPublicKey: String): List<LibSessionGroupMember> =
configFactory.getOrConstructGroupMemberConfig(SessionId.from(groupPublicKey))?.all()?.toList() ?: emptyList()
configFactory.getGroupMemberConfig(SessionId.from(groupPublicKey))?.all()?.toList() ?: emptyList()
override fun setServerCapabilities(server: String, capabilities: List<String>) {
return DatabaseComponent.get(context).lokiAPIDatabase().setServerCapabilities(server, capabilities)

View File

@@ -176,7 +176,7 @@ class ConfigFactory(
it.adminKey to it.authData
}
override fun getOrConstructGroupInfoConfig(groupSessionId: SessionId): GroupInfoConfig? = getGroupAuthInfo(groupSessionId)?.let { (sk, _) ->
override fun getGroupInfoConfig(groupSessionId: SessionId): GroupInfoConfig? = getGroupAuthInfo(groupSessionId)?.let { (sk, _) ->
// get any potential initial dumps
val dump = configDatabase.retrieveConfigAndHashes(
SharedConfigMessage.Kind.CLOSED_GROUP_INFO.name,
@@ -191,10 +191,10 @@ class ConfigFactory(
val (userSk, _) = maybeGetUserInfo() ?: return@let null
// Get the group info or return early
val info = getOrConstructGroupInfoConfig(groupSessionId) ?: return@let null
val info = getGroupInfoConfig(groupSessionId) ?: return@let null
// Get the group members or return early
val members = getOrConstructGroupMemberConfig(groupSessionId) ?: return@let null
val members = getGroupMemberConfig(groupSessionId) ?: return@let null
// Get the dump or empty
val dump = configDatabase.retrieveConfigAndHashes(
@@ -213,7 +213,7 @@ class ConfigFactory(
)
}
override fun getOrConstructGroupMemberConfig(groupSessionId: SessionId): GroupMembersConfig? = getGroupAuthInfo(groupSessionId)?.let { (sk, auth) ->
override fun getGroupMemberConfig(groupSessionId: SessionId): GroupMembersConfig? = getGroupAuthInfo(groupSessionId)?.let { (sk, auth) ->
// Get initial dump if we have one
val dump = configDatabase.retrieveConfigAndHashes(
SharedConfigMessage.Kind.CLOSED_GROUP_MEMBERS.name,