feat: update copy for message reqeusts and fix the decline all / delete items

This commit is contained in:
0x330a 2023-12-08 17:06:05 +11:00
parent 4caa7681f8
commit 2628f03fcf
4 changed files with 34 additions and 23 deletions

View File

@ -195,7 +195,8 @@ class ConversationViewModel(
} }
fun declineMessageRequest() { fun declineMessageRequest() {
repository.declineMessageRequest(threadId) val recipient = recipient ?: return
repository.declineMessageRequest(threadId, recipient)
} }
private fun showMessage(message: String) { private fun showMessage(message: String) {

View File

@ -611,9 +611,9 @@ open class Storage(
val toAddCommunities = communities.filter { it.community.fullUrl() !in existingCommunities.map { it.value.joinURL } } val toAddCommunities = communities.filter { it.community.fullUrl() !in existingCommunities.map { it.value.joinURL } }
val existingJoinUrls = existingCommunities.values.map { it.joinURL } val existingJoinUrls = existingCommunities.values.map { it.joinURL }
val existingClosedGroups = getAllGroups(includeInactive = true).filter { it.isLegacyClosedGroup } val existingLegacyClosedGroups = getAllGroups(includeInactive = true).filter { it.isLegacyClosedGroup }
val lgcIds = lgc.map { it.sessionId.hexString() } val lgcIds = lgc.map { it.sessionId.hexString() }
val toDeleteClosedGroups = existingClosedGroups.filter { group -> val toDeleteClosedGroups = existingLegacyClosedGroups.filter { group ->
GroupUtil.doubleDecodeGroupId(group.encodedId) !in lgcIds GroupUtil.doubleDecodeGroupId(group.encodedId) !in lgcIds
} }
@ -656,9 +656,10 @@ open class Storage(
pollerFactory.pollerFor(closedGroup.groupSessionId)?.start() pollerFactory.pollerFor(closedGroup.groupSessionId)?.start()
} }
} }
// TODO: add in removing legacy closed groups via config update
for (group in lgc) { for (group in lgc) {
val existingGroup = existingClosedGroups.firstOrNull { GroupUtil.doubleDecodeGroupId(it.encodedId) == group.sessionId.hexString() } val existingGroup = existingLegacyClosedGroups.firstOrNull { GroupUtil.doubleDecodeGroupId(it.encodedId) == group.sessionId.hexString() }
val existingThread = existingGroup?.let { getThreadId(existingGroup.encodedId) } val existingThread = existingGroup?.let { getThreadId(existingGroup.encodedId) }
if (existingGroup != null) { if (existingGroup != null) {
if (group.priority == PRIORITY_HIDDEN && existingThread != null) { if (group.priority == PRIORITY_HIDDEN && existingThread != null) {
@ -1224,6 +1225,11 @@ open class Storage(
override fun respondToClosedGroupInvitation(groupRecipient: Recipient, approved: Boolean) { override fun respondToClosedGroupInvitation(groupRecipient: Recipient, approved: Boolean) {
val groups = configFactory.userGroups ?: return val groups = configFactory.userGroups ?: return
val groupSessionId = SessionId.from(groupRecipient.address.serialize()) val groupSessionId = SessionId.from(groupRecipient.address.serialize())
if (!approved) {
groups.eraseClosedGroup(groupSessionId.hexString())
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
return
} else {
val closedGroupInfo = groups.getClosedGroup(groupSessionId.hexString())?.copy( val closedGroupInfo = groups.getClosedGroup(groupSessionId.hexString())?.copy(
invited = false invited = false
) ?: return ) ?: return
@ -1238,6 +1244,7 @@ open class Storage(
// this will fail the first couple of times :) // this will fail the first couple of times :)
MessageSender.send(responseMessage, fromSerialized(groupSessionId.hexString())) MessageSender.send(responseMessage, fromSerialized(groupSessionId.hexString()))
} }
}
override fun addClosedGroupInvite( override fun addClosedGroupInvite(
groupId: SessionId, groupId: SessionId,

View File

@ -77,7 +77,7 @@ interface ConversationRepository {
suspend fun acceptMessageRequest(threadId: Long, recipient: Recipient): ResultOf<Unit> suspend fun acceptMessageRequest(threadId: Long, recipient: Recipient): ResultOf<Unit>
fun declineMessageRequest(threadId: Long) fun declineMessageRequest(threadId: Long, recipient: Recipient)
fun hasReceived(threadId: Long): Boolean fun hasReceived(threadId: Long): Boolean
@ -286,8 +286,7 @@ class DefaultConversationRepository @Inject constructor(
} }
override suspend fun deleteMessageRequest(thread: ThreadRecord): ResultOf<Unit> { override suspend fun deleteMessageRequest(thread: ThreadRecord): ResultOf<Unit> {
sessionJobDb.cancelPendingMessageSendJobs(thread.threadId) declineMessageRequest(thread.threadId, thread.recipient)
storage.deleteConversation(thread.threadId)
return ResultOf.Success(Unit) return ResultOf.Success(Unit)
} }
@ -320,10 +319,14 @@ class DefaultConversationRepository @Inject constructor(
} }
} }
override fun declineMessageRequest(threadId: Long) { override fun declineMessageRequest(threadId: Long, recipient: Recipient) {
sessionJobDb.cancelPendingMessageSendJobs(threadId) sessionJobDb.cancelPendingMessageSendJobs(threadId)
if (recipient.isClosedGroupRecipient) {
storage.respondToClosedGroupInvitation(recipient, false)
} else {
storage.deleteConversation(threadId) storage.deleteConversation(threadId)
} }
}
override fun hasReceived(threadId: Long): Boolean { override fun hasReceived(threadId: Long): Boolean {
val cursor = mmsSmsDb.getConversation(threadId, true) val cursor = mmsSmsDb.getConversation(threadId, true)

View File

@ -941,7 +941,7 @@
<string name="message_requests_decline_message">Are you sure you want to decline this message request?</string> <string name="message_requests_decline_message">Are you sure you want to decline this message request?</string>
<string name="message_requests_block_message">Are you sure you want to block this message request?</string> <string name="message_requests_block_message">Are you sure you want to block this message request?</string>
<string name="message_requests_deleted">Message request deleted</string> <string name="message_requests_deleted">Message request deleted</string>
<string name="message_requests_clear_all_message">Are you sure you want to clear all message requests?</string> <string name="message_requests_clear_all_message">Are you sure you want to clear all message requests and group invites?</string>
<string name="message_requests_cleared">Message requests deleted</string> <string name="message_requests_cleared">Message requests deleted</string>
<string name="message_requests_accepted">Your message request has been accepted.</string> <string name="message_requests_accepted">Your message request has been accepted.</string>
<string name="message_requests_pending">Your message request is currently pending.</string> <string name="message_requests_pending">Your message request is currently pending.</string>