feat: update copy for message reqeusts and fix the decline all / delete items
This commit is contained in:
parent
4caa7681f8
commit
2628f03fcf
|
@ -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) {
|
||||||
|
|
|
@ -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,19 +1225,25 @@ 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())
|
||||||
val closedGroupInfo = groups.getClosedGroup(groupSessionId.hexString())?.copy(
|
if (!approved) {
|
||||||
invited = false
|
groups.eraseClosedGroup(groupSessionId.hexString())
|
||||||
) ?: return
|
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
|
||||||
groups.set(closedGroupInfo)
|
return
|
||||||
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
|
} else {
|
||||||
pollerFactory.pollerFor(groupSessionId)?.start()
|
val closedGroupInfo = groups.getClosedGroup(groupSessionId.hexString())?.copy(
|
||||||
val inviteResponse = GroupUpdateInviteResponseMessage.newBuilder()
|
invited = false
|
||||||
.setIsApproved(true)
|
) ?: return
|
||||||
val responseData = GroupUpdateMessage.newBuilder()
|
groups.set(closedGroupInfo)
|
||||||
.setInviteResponse(inviteResponse)
|
ConfigurationMessageUtilities.forceSyncConfigurationNowIfNeeded(context)
|
||||||
val responseMessage = GroupUpdated(responseData.build())
|
pollerFactory.pollerFor(groupSessionId)?.start()
|
||||||
// this will fail the first couple of times :)
|
val inviteResponse = GroupUpdateInviteResponseMessage.newBuilder()
|
||||||
MessageSender.send(responseMessage, fromSerialized(groupSessionId.hexString()))
|
.setIsApproved(true)
|
||||||
|
val responseData = GroupUpdateMessage.newBuilder()
|
||||||
|
.setInviteResponse(inviteResponse)
|
||||||
|
val responseMessage = GroupUpdated(responseData.build())
|
||||||
|
// this will fail the first couple of times :)
|
||||||
|
MessageSender.send(responseMessage, fromSerialized(groupSessionId.hexString()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun addClosedGroupInvite(
|
override fun addClosedGroupInvite(
|
||||||
|
|
|
@ -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,9 +319,13 @@ class DefaultConversationRepository @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun declineMessageRequest(threadId: Long) {
|
override fun declineMessageRequest(threadId: Long, recipient: Recipient) {
|
||||||
sessionJobDb.cancelPendingMessageSendJobs(threadId)
|
sessionJobDb.cancelPendingMessageSendJobs(threadId)
|
||||||
storage.deleteConversation(threadId)
|
if (recipient.isClosedGroupRecipient) {
|
||||||
|
storage.respondToClosedGroupInvitation(recipient, false)
|
||||||
|
} else {
|
||||||
|
storage.deleteConversation(threadId)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasReceived(threadId: Long): Boolean {
|
override fun hasReceived(threadId: Long): Boolean {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Loading…
Reference in New Issue