From ee559b85074af79b69374b4d936f47f0ad0e5fb9 Mon Sep 17 00:00:00 2001 From: DenBond7 Date: Mon, 7 Nov 2022 17:20:58 +0200 Subject: [PATCH 1/4] Applied "kotlin-parcelize" plugin.| #1034 --- FlowCrypt/build.gradle | 1 + .../email/api/email/model/AttachmentInfo.kt | 59 +------------- .../email/api/email/model/AuthCredentials.kt | 53 +------------ .../email/api/email/model/AuthTokenInfo.kt | 33 +------- .../email/api/email/model/ExtraActionInfo.kt | 26 +----- .../api/email/model/GeneralMessageDetails.kt | 72 +---------------- .../api/email/model/IncomingMessageInfo.kt | 42 +--------- .../api/email/model/InitializationData.kt | 30 +------ .../email/api/email/model/LocalFolder.kt | 45 ++--------- .../api/email/model/OutgoingMessageInfo.kt | 53 +------------ .../email/api/email/model/SecurityType.kt | 47 +---------- .../email/api/email/model/ServiceInfo.kt | 45 +---------- .../response/api/EkmPrivateKeysResponse.kt | 31 +------- .../api/retrofit/response/model/AttMeta.kt | 31 +------- .../retrofit/response/model/DecryptError.kt | 32 +------- .../response/model/DecryptErrorDetails.kt | 31 +------- .../email/api/retrofit/response/model/Key.kt | 25 +----- .../api/retrofit/response/model/MsgBlock.kt | 17 +--- .../retrofit/response/model/MsgBlockError.kt | 16 +--- .../api/retrofit/response/model/OrgRules.kt | 68 +--------------- .../response/model/VerificationResult.kt | 34 +------- .../flowcrypt/email/database/MessageState.kt | 15 +--- .../email/database/entity/AccountEntity.kt | 79 ++----------------- .../email/database/entity/KeyEntity.kt | 16 +--- .../email/database/entity/MessageEntity.kt | 76 ++++-------------- .../email/database/entity/PublicKeyEntity.kt | 1 + .../email/database/entity/RecipientEntity.kt | 27 +------ .../entity/relation/RecipientWithPubKeys.kt | 23 +----- .../com/flowcrypt/email/model/DialogItem.kt | 30 +------ .../flowcrypt/email/model/KeyImportDetails.kt | 37 +-------- .../flowcrypt/email/model/KeyImportModel.kt | 33 +------- .../email/model/MessageEncryptionType.kt | 22 +----- .../com/flowcrypt/email/model/Screenshot.kt | 18 +---- .../flowcrypt/email/security/model/Algo.kt | 33 +------- .../flowcrypt/email/security/model/KeyId.kt | 27 +------ .../email/security/model/PgpKeyDetails.kt | 49 +----------- .../security/pgp/PgpDecryptAndOrVerify.kt | 16 +--- .../service/actionqueue/actions/Action.kt | 17 +--- 38 files changed, 116 insertions(+), 1194 deletions(-) diff --git a/FlowCrypt/build.gradle b/FlowCrypt/build.gradle index 7a4c10edda..054e8fccc1 100644 --- a/FlowCrypt/build.gradle +++ b/FlowCrypt/build.gradle @@ -17,6 +17,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: "androidx.navigation.safeargs.kotlin" apply plugin: "com.starter.easylauncher" +apply plugin: "kotlin-parcelize" def keystoreProperties = new Properties() File propertiesFile = project.file("keystore.properties") diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AttachmentInfo.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AttachmentInfo.kt index 1bdda9667d..f5cfb718d7 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AttachmentInfo.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AttachmentInfo.kt @@ -6,12 +6,11 @@ package com.flowcrypt.email.api.email.model import android.net.Uri -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.Constants import com.flowcrypt.email.core.msg.RawBlockParser -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt import com.flowcrypt.email.security.SecurityUtils +import kotlinx.parcelize.Parcelize /** * Simple POJO which defines information about email attachments. @@ -21,6 +20,7 @@ import com.flowcrypt.email.security.SecurityUtils * Time: 18:38 * E-mail: DenBond7@gmail.com */ +@Parcelize data class AttachmentInfo constructor( var rawData: ByteArray? = null, var email: String? = null, @@ -55,54 +55,6 @@ data class AttachmentInfo constructor( ) } - constructor(source: Parcel) : this( - source.createByteArray(), - source.readString(), - source.readString(), - source.readLong(), - source.readString(), - source.readLong(), - source.readString(), - source.readLong(), - source.readString()!!, - source.readString(), - source.readString()!!, - source.readParcelableViaExt(Uri::class.java), - source.readByte() != 0.toByte(), - source.readByte() != 0.toByte(), - source.readByte() != 0.toByte(), - source.readByte() != 0.toByte(), - source.readInt(), - source.readByte() != 0.toByte(), - ) - - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) { - with(dest) { - writeByteArray(rawData) - writeString(email) - writeString(folder) - writeLong(uid) - writeString(fwdFolder) - writeLong(fwdUid) - writeString(name) - writeLong(encodedSize) - writeString(type) - writeString(id) - writeString(path) - writeParcelable(uri, flags) - writeByte(if (isProtected) 1.toByte() else 0.toByte()) - writeByte(if (isForwarded) 1.toByte() else 0.toByte()) - writeByte(if (isDecrypted) 1.toByte() else 0.toByte()) - writeByte(if (isEncryptionAllowed) 1.toByte() else 0.toByte()) - writeInt(orderNumber) - writeByte(if (decryptWhenForward) 1.toByte() else 0.toByte()) - } - } - override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -168,12 +120,5 @@ data class AttachmentInfo constructor( companion object { const val DEPTH_SEPARATOR = "/" const val INNER_ATTACHMENT_PREFIX = "inner_" - - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): AttachmentInfo = AttachmentInfo(source) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } } } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthCredentials.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthCredentials.kt index fd1996115a..1b5bb11eff 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthCredentials.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthCredentials.kt @@ -5,11 +5,10 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.api.email.JavaEmailConstants import com.flowcrypt.email.database.entity.AccountEntity -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt +import kotlinx.parcelize.Parcelize /** * This class describes a details information about auth settings for some IMAP and SMTP servers. @@ -19,6 +18,7 @@ import com.flowcrypt.email.extensions.android.os.readParcelableViaExt * Time: 15:11. * E-mail: DenBond7@gmail.com */ +@Parcelize data class AuthCredentials constructor( val email: String, val username: String, @@ -37,47 +37,6 @@ data class AuthCredentials constructor( val displayName: String? = null, val authTokenInfo: AuthTokenInfo? = null ) : Parcelable { - constructor(source: Parcel) : this( - source.readString()!!, - source.readString()!!, - source.readString()!!, - source.readString()!!, - source.readInt(), - source.readParcelableViaExt(SecurityType.Option::class.java)!!, - source.readString()!!, - source.readInt(), - source.readParcelableViaExt(SecurityType.Option::class.java)!!, - source.readByte() != 0.toByte(), - source.readString(), - source.readString(), - source.readString(), - source.readByte() != 0.toByte(), - source.readString(), - source.readParcelableViaExt(AuthTokenInfo::class.java) - ) - - override fun describeContents() = 0 - - override fun writeToParcel(dest: Parcel, flags: Int) { - with(dest) { - writeString(email) - writeString(username) - writeString(password) - writeString(imapServer) - writeInt(imapPort) - writeParcelable(imapOpt, flags) - writeString(smtpServer) - writeInt(smtpPort) - writeParcelable(smtpOpt, flags) - writeInt((if (hasCustomSignInForSmtp) 1 else 0)) - writeString(smtpSigInUsername) - writeString(smtpSignInPassword) - writeString(faqUrl) - writeInt((if (useOAuth2) 1 else 0)) - writeString(displayName) - writeParcelable(authTokenInfo, flags) - } - } fun peekPassword(): String { return if (useOAuth2) authTokenInfo?.accessToken ?: password else password @@ -88,14 +47,6 @@ data class AuthCredentials constructor( } companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): AuthCredentials = AuthCredentials(source) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } - fun from(accountEntity: AccountEntity): AuthCredentials { with(accountEntity) { var imapOpt: SecurityType.Option = SecurityType.Option.NONE diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthTokenInfo.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthTokenInfo.kt index 38d371aec5..f9fbf48b19 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthTokenInfo.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/AuthTokenInfo.kt @@ -5,8 +5,8 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable +import kotlinx.parcelize.Parcelize /** * @author Denis Bondarenko @@ -14,37 +14,10 @@ import android.os.Parcelable * Time: 4:57 PM * E-mail: DenBond7@gmail.com */ +@Parcelize data class AuthTokenInfo constructor( val email: String?, val accessToken: String? = null, val expiresAt: Long? = null, val refreshToken: String? = null -) : Parcelable { - constructor(parcel: Parcel) : this( - parcel.readString(), - parcel.readString(), - parcel.readValue(Long::class.java.classLoader) as? Long, - parcel.readString() - ) - - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeString(email) - parcel.writeString(accessToken) - parcel.writeValue(expiresAt) - parcel.writeString(refreshToken) - } - - override fun describeContents(): Int { - return 0 - } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel): AuthTokenInfo { - return AuthTokenInfo(parcel) - } - - override fun newArray(size: Int): Array { - return arrayOfNulls(size) - } - } -} +) : Parcelable diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/ExtraActionInfo.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/ExtraActionInfo.kt index 0f3ceeee53..72a63511b5 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/ExtraActionInfo.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/ExtraActionInfo.kt @@ -8,13 +8,12 @@ package com.flowcrypt.email.api.email.model import android.content.Context import android.content.Intent import android.net.Uri -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.api.email.EmailUtil import com.flowcrypt.email.extensions.android.content.getParcelableArrayListExtraViaExt import com.flowcrypt.email.extensions.android.content.getParcelableExtraViaExt -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt import com.flowcrypt.email.util.RFC6068Parser +import kotlinx.parcelize.Parcelize /** * This class describes information about incoming extra info from the intent with one of next actions: @@ -30,34 +29,13 @@ import com.flowcrypt.email.util.RFC6068Parser * Time: 16:16 * E-mail: DenBond7@gmail.com */ +@Parcelize data class ExtraActionInfo( val atts: List = emptyList(), val initializationData: InitializationData ) : Parcelable { - constructor(parcel: Parcel) : this( - mutableListOf().apply { parcel.readTypedList(this, AttachmentInfo.CREATOR) }, - requireNotNull(parcel.readParcelableViaExt(InitializationData::class.java)) - ) - - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) { - dest.writeTypedList(atts) - dest.writeParcelable(initializationData, flags) - } - companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): ExtraActionInfo = ExtraActionInfo(source) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } - /** * Parse incoming information from the intent which can have the next actions: * diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/GeneralMessageDetails.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/GeneralMessageDetails.kt index b064554c6d..13ed793a01 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/GeneralMessageDetails.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/GeneralMessageDetails.kt @@ -5,12 +5,10 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.database.MessageState -import com.flowcrypt.email.extensions.android.os.readListViaExt -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt import jakarta.mail.internet.InternetAddress +import kotlinx.parcelize.Parcelize /** * Simple POJO class which describe a general message details. @@ -20,7 +18,7 @@ import jakarta.mail.internet.InternetAddress * Time: 11:51 * E-mail: DenBond7@gmail.com */ - +@Parcelize data class GeneralMessageDetails constructor( val email: String, val label: String, @@ -69,70 +67,4 @@ data class GeneralMessageDetails constructor( return emails } - - constructor(source: Parcel) : this( - source.readString()!!, - source.readString()!!, - source.readInt(), - source.readInt(), - source.readLong(), - source.readLong(), - mutableListOf().apply { - source.readListViaExt(this, InternetAddress::class.java) - }, - mutableListOf().apply { - source.readListViaExt(this, InternetAddress::class.java) - }, - mutableListOf().apply { - source.readListViaExt(this, InternetAddress::class.java) - }, - mutableListOf().apply { - source.readListViaExt(this, InternetAddress::class.java) - }, - source.readString(), - source.createStringArrayList()!!, - 1 == source.readInt(), - 1 == source.readInt(), - 1 == source.readInt(), - source.readParcelableViaExt(MessageState::class.java)!!, - source.readString(), - source.readString() - ) - - override fun describeContents() = 0 - - override fun writeToParcel(dest: Parcel, flags: Int) { - with(dest) { - writeString(email) - writeString(label) - writeInt(uid) - writeInt(id) - writeLong(receivedDate) - writeLong(sentDate) - writeList(from) - writeList(replyTo) - writeList(to) - writeList(cc) - writeString(subject) - writeStringList(msgFlags) - writeInt((if (isRawMsgAvailable) 1 else 0)) - writeInt((if (hasAtts) 1 else 0)) - writeInt((if (isEncrypted) 1 else 0)) - writeParcelable(msgState, flags) - writeString(attsDir) - writeString(errorMsg) - } - } - - companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): GeneralMessageDetails = - GeneralMessageDetails(source) - - override fun newArray(size: Int): Array = arrayOfNulls(size) - } - } } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/IncomingMessageInfo.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/IncomingMessageInfo.kt index f8924163b7..aa2f80582d 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/IncomingMessageInfo.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/IncomingMessageInfo.kt @@ -6,19 +6,17 @@ package com.flowcrypt.email.api.email.model import android.content.Context -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.R import com.flowcrypt.email.api.email.EmailUtil import com.flowcrypt.email.api.email.FoldersManager -import com.flowcrypt.email.api.retrofit.response.model.GenericMsgBlock import com.flowcrypt.email.api.retrofit.response.model.MsgBlock import com.flowcrypt.email.api.retrofit.response.model.VerificationResult import com.flowcrypt.email.database.entity.MessageEntity -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt import com.flowcrypt.email.model.MessageEncryptionType import com.flowcrypt.email.model.MessageType import jakarta.mail.internet.InternetAddress +import kotlinx.parcelize.Parcelize import java.util.Date import java.util.regex.Pattern @@ -30,7 +28,7 @@ import java.util.regex.Pattern * Time: 11:20 * E-mail: DenBond7@gmail.com */ - +@Parcelize data class IncomingMessageInfo constructor( val msgEntity: MessageEntity, var atts: List? = null, @@ -220,40 +218,4 @@ data class IncomingMessageInfo constructor( return false } - - constructor(source: Parcel) : this( - source.readParcelableViaExt(MessageEntity::class.java)!!, - source.createTypedArrayList(AttachmentInfo.CREATOR), - source.readParcelableViaExt(LocalFolder::class.java), - source.readString(), - source.readString(), - mutableListOf().apply { source.readTypedList(this, GenericMsgBlock.CREATOR) }, - source.readParcelableViaExt(MessageEncryptionType::class.java)!!, - source.readParcelableViaExt(VerificationResult::class.java)!! - ) - - override fun describeContents() = 0 - - override fun writeToParcel(dest: Parcel, flags: Int) = with(dest) { - writeParcelable(msgEntity, flags) - writeTypedList(atts) - writeParcelable(localFolder, flags) - writeString(text) - writeString(inlineSubject) - writeTypedList(msgBlocks) - writeParcelable(encryptionType, flags) - writeParcelable(verificationResult, flags) - } - - companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = - object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): IncomingMessageInfo = - IncomingMessageInfo(source) - - override fun newArray(size: Int): Array = arrayOfNulls(size) - } - } } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/InitializationData.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/InitializationData.kt index 3402311a9b..5e9a46706f 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/InitializationData.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/InitializationData.kt @@ -5,38 +5,14 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable +import kotlinx.parcelize.Parcelize +@Parcelize data class InitializationData( var subject: String? = null, var body: String? = null, val toAddresses: java.util.ArrayList = arrayListOf(), val ccAddresses: java.util.ArrayList = arrayListOf(), val bccAddresses: java.util.ArrayList = arrayListOf() -) : Parcelable { - constructor(parcel: Parcel) : this( - parcel.readString(), - parcel.readString(), - parcel.createStringArrayList() ?: arrayListOf(), - parcel.createStringArrayList() ?: arrayListOf(), - parcel.createStringArrayList() ?: arrayListOf() - ) - - override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeString(subject) - parcel.writeString(body) - parcel.writeStringList(toAddresses) - parcel.writeStringList(ccAddresses) - parcel.writeStringList(bccAddresses) - } - - override fun describeContents(): Int { - return 0 - } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel): InitializationData = InitializationData(parcel) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } -} +) : Parcelable diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/LocalFolder.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/LocalFolder.kt index cd6710c75b..c98d5d032f 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/LocalFolder.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/LocalFolder.kt @@ -5,11 +5,12 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.api.email.FoldersManager import com.flowcrypt.email.api.email.JavaEmailConstants import com.flowcrypt.email.database.entity.LabelEntity +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize /** * This is a simple POJO object, which describe information about the email folder. @@ -19,7 +20,7 @@ import com.flowcrypt.email.database.entity.LabelEntity * Time: 14:49 * E-mail: DenBond7@gmail.com */ - +@Parcelize data class LocalFolder constructor( val account: String, val fullName: String, @@ -29,17 +30,6 @@ data class LocalFolder constructor( var msgCount: Int = 0, var searchQuery: String? = null ) : Parcelable { - - constructor(source: Parcel) : this( - source.readString()!!, - source.readString()!!, - source.readString(), - source.createStringArrayList(), - source.readInt() == 1, - source.readInt(), - source.readString() - ) - constructor(source: LabelEntity) : this( source.email, source.name, @@ -50,35 +40,16 @@ data class LocalFolder constructor( null ) + @IgnoredOnParcel val isOutbox: Boolean = JavaEmailConstants.FOLDER_OUTBOX.equals(fullName, ignoreCase = true) + + @IgnoredOnParcel val isAll: Boolean = JavaEmailConstants.FOLDER_ALL_MAIL.equals(fullName, ignoreCase = true) + + @IgnoredOnParcel val isDrafts: Boolean = FoldersManager.FolderType.DRAFTS == getFolderType() fun getFolderType(): FoldersManager.FolderType? { return FoldersManager.getFolderType(this) } - - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) = - with(dest) { - writeString(account) - writeString(fullName) - writeString(folderAlias) - writeStringList(attributes) - writeInt((if (isCustom) 1 else 0)) - writeInt(msgCount) - writeString(searchQuery) - } - - companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator = object : Parcelable.Creator { - override fun createFromParcel(source: Parcel): LocalFolder = LocalFolder(source) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } - } } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/OutgoingMessageInfo.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/OutgoingMessageInfo.kt index 11121d80ba..2fe9038783 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/OutgoingMessageInfo.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/OutgoingMessageInfo.kt @@ -5,14 +5,13 @@ package com.flowcrypt.email.api.email.model -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.database.entity.MessageEntity -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt -import com.flowcrypt.email.extensions.android.os.readSerializableViaExt import com.flowcrypt.email.model.MessageEncryptionType import com.flowcrypt.email.model.MessageType import jakarta.mail.internet.InternetAddress +import kotlinx.parcelize.IgnoredOnParcel +import kotlinx.parcelize.Parcelize /** * Simple POJO class which describe an outgoing message model. @@ -22,6 +21,7 @@ import jakarta.mail.internet.InternetAddress * Time: 11:20 * E-mail: DenBond7@gmail.com */ +@Parcelize data class OutgoingMessageInfo constructor( val account: String? = null, val subject: String? = null, @@ -39,6 +39,7 @@ data class OutgoingMessageInfo constructor( val password: CharArray? = null ) : Parcelable { + @IgnoredOnParcel val isPasswordProtected = password?.isNotEmpty() /** @@ -54,47 +55,6 @@ data class OutgoingMessageInfo constructor( return allRecipients } - @Suppress("UNCHECKED_CAST") - constructor(parcel: Parcel) : this( - parcel.readString(), - parcel.readString(), - parcel.readString(), - parcel.readValue(InternetAddress::class.java.classLoader) as List?, - parcel.readValue(InternetAddress::class.java.classLoader) as List?, - parcel.readValue(InternetAddress::class.java.classLoader) as List?, - parcel.readSerializableViaExt(InternetAddress::class.java), - parcel.readValue(AttachmentInfo::class.java.classLoader) as List?, - parcel.readValue(AttachmentInfo::class.java.classLoader) as List?, - parcel.readParcelableViaExt(MessageEncryptionType::class.java)!!, - parcel.readInt(), - parcel.readParcelableViaExt(MessageEntity::class.java), - parcel.readLong(), - parcel.createCharArray() - ) - - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) { - with(dest) { - writeString(account) - writeString(subject) - writeString(msg) - writeValue(toRecipients) - writeValue(ccRecipients) - writeValue(bccRecipients) - writeSerializable(from) - writeValue(atts) - writeValue(forwardedAtts) - writeParcelable(encryptionType, flags) - writeInt(messageType) - writeParcelable(replyToMsgEntity, flags) - writeLong(uid) - writeCharArray(password) - } - } - override fun equals(other: Any?): Boolean { if (this === other) return true if (javaClass != other?.javaClass) return false @@ -141,9 +101,4 @@ data class OutgoingMessageInfo constructor( result = 31 * result + (isPasswordProtected?.hashCode() ?: 0) return result } - - companion object CREATOR : Parcelable.Creator { - override fun createFromParcel(parcel: Parcel) = OutgoingMessageInfo(parcel) - override fun newArray(size: Int): Array = arrayOfNulls(size) - } } diff --git a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/SecurityType.kt b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/SecurityType.kt index e6d3da1e76..2b2f9249e5 100644 --- a/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/SecurityType.kt +++ b/FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/SecurityType.kt @@ -6,11 +6,10 @@ package com.flowcrypt.email.api.email.model import android.content.Context -import android.os.Parcel import android.os.Parcelable import com.flowcrypt.email.R import com.flowcrypt.email.api.email.JavaEmailConstants -import com.flowcrypt.email.extensions.android.os.readParcelableViaExt +import kotlinx.parcelize.Parcelize /** * This class describes settings for some security type. @@ -20,6 +19,7 @@ import com.flowcrypt.email.extensions.android.os.readParcelableViaExt * Time: 14:35 * E-mail: DenBond7@gmail.com */ +@Parcelize data class SecurityType constructor( val name: String = "", val opt: Option = Option.SSL_TLS, @@ -27,57 +27,16 @@ data class SecurityType constructor( val defSmtpPort: Int = 465 ) : Parcelable { - constructor(parcel: Parcel) : this( - parcel.readString()!!, - parcel.readParcelableViaExt(Option::class.java)!!, - parcel.readInt(), - parcel.readInt() - ) - override fun toString(): String { return name } - override fun describeContents(): Int { - return 0 - } - - override fun writeToParcel(dest: Parcel, flags: Int) { - dest.writeString(this.name) - dest.writeParcelable(opt, flags) - dest.writeInt(this.defImapPort) - dest.writeInt(this.defSmtpPort) - } - + @Parcelize enum class Option : Parcelable { NONE, SSL_TLS, STARTLS; - - companion object { - @JvmField - @Suppress("unused") - val CREATOR: Parcelable.Creator