diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/jetpack/workmanager/HandlePasswordProtectedMsgWorker.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/jetpack/workmanager/HandlePasswordProtectedMsgWorker.kt index a1d6288609..68d5ef730d 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/jetpack/workmanager/HandlePasswordProtectedMsgWorker.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/jetpack/workmanager/HandlePasswordProtectedMsgWorker.kt @@ -49,6 +49,7 @@ import java.io.InputStream import java.net.SocketException import java.util.Base64 import java.util.Properties +import javax.mail.Address import javax.mail.Message import javax.mail.MessagingException import javax.mail.Multipart @@ -139,17 +140,20 @@ class HandlePasswordProtectedMsgWorker(context: Context, params: WorkerParameter val domain = EmailUtil.getDomain(fromAddress) val idToken = getGoogleIdToken() val replyToken = fetchReplyToken(apiRepository, domain, idToken) - val messageUploadRequest = MessageUploadRequest( - associateReplyToken = replyToken, - from = fromAddress, - to = toCandidates.map { (it as InternetAddress).address }, - cc = ccCandidates.map { (it as InternetAddress).address }, - bcc = bccCandidates.map { (it as InternetAddress).address } + val replyInfoData = ReplyInfoData( + sender = fromAddress, + recipient = (toCandidates + ccCandidates + bccCandidates) + .mapNotNull { (it as? InternetAddress)?.address } + .filterNot { + it.equals(fromAddress, true) + }, + subject = plainMimeMsgWithAttachments.subject, + token = replyToken ) //prepare bodyWithReplyToken val replyInfo = Base64.getEncoder().encodeToString( - GsonBuilder().create().toJson(messageUploadRequest).toByteArray() + GsonBuilder().create().toJson(replyInfoData).toByteArray() ) val infoDiv = genInfoDiv(replyInfo) @@ -180,7 +184,13 @@ class HandlePasswordProtectedMsgWorker(context: Context, params: WorkerParameter apiRepository = apiRepository, domain = domain, idToken = idToken, - messageUploadRequest = messageUploadRequest, + messageUploadRequest = genMessageUploadRequest( + replyToken, + fromAddress, + toCandidates, + ccCandidates, + bccCandidates + ), pwdEncryptedWithAttachments = pwdEncryptedWithAttachments ) @@ -197,6 +207,20 @@ class HandlePasswordProtectedMsgWorker(context: Context, params: WorkerParameter } } + private fun genMessageUploadRequest( + replyToken: String, + fromAddress: String, + toCandidates: Array
, + ccCandidates: Array, + bccCandidates: Array + ) = MessageUploadRequest( + associateReplyToken = replyToken, + from = fromAddress, + to = toCandidates.map { (it as InternetAddress).address }, + cc = ccCandidates.map { (it as InternetAddress).address }, + bcc = bccCandidates.map { (it as InternetAddress).address } + ) + private suspend fun handleExceptionsForMessage( e: Exception, msgEntity: MessageEntity, @@ -394,6 +418,13 @@ class HandlePasswordProtectedMsgWorker(context: Context, params: WorkerParameter return@withContext requireNotNull(messageReplyTokenResponseResult.data?.replyToken) } + private data class ReplyInfoData( + val sender: String, + val recipient: List