2021-11-04 11:13:24 +00:00
|
|
|
/*
|
2022-02-28 15:15:59 +00:00
|
|
|
* Copyright (c) 2022 Proton AG
|
2021-11-04 11:13:24 +00:00
|
|
|
*
|
2022-02-28 15:15:59 +00:00
|
|
|
* This file is part of Proton Mail.
|
2021-11-04 11:13:24 +00:00
|
|
|
*
|
2022-02-28 15:15:59 +00:00
|
|
|
* Proton Mail is free software: you can redistribute it and/or modify
|
2021-11-04 11:13:24 +00:00
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
2022-02-28 15:15:59 +00:00
|
|
|
* Proton Mail is distributed in the hope that it will be useful,
|
2021-11-04 11:13:24 +00:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2022-02-28 15:15:59 +00:00
|
|
|
* along with Proton Mail. If not, see https://www.gnu.org/licenses/.
|
2021-11-04 11:13:24 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
package ch.protonmail.android.activities
|
|
|
|
|
|
|
|
import android.app.Activity
|
|
|
|
import android.content.Context
|
|
|
|
import android.content.Intent
|
|
|
|
import androidx.activity.result.contract.ActivityResultContract
|
2021-11-08 12:24:31 +00:00
|
|
|
import ch.protonmail.android.activities.composeMessage.ComposeMessageActivity
|
2022-04-08 08:05:18 +00:00
|
|
|
import ch.protonmail.android.activities.messageDetails.IntentExtrasData
|
2021-11-08 12:24:31 +00:00
|
|
|
import ch.protonmail.android.activities.settings.EXTRA_CURRENT_MAILBOX_LABEL_ID
|
|
|
|
import ch.protonmail.android.activities.settings.EXTRA_CURRENT_MAILBOX_LOCATION
|
2022-04-08 08:05:18 +00:00
|
|
|
import ch.protonmail.android.api.models.MessageRecipient
|
2021-11-08 12:24:31 +00:00
|
|
|
import ch.protonmail.android.contacts.ContactsActivity
|
2021-11-04 11:13:24 +00:00
|
|
|
import ch.protonmail.android.core.Constants
|
|
|
|
import ch.protonmail.android.utils.AppUtil
|
2022-04-08 08:05:18 +00:00
|
|
|
import ch.protonmail.android.utils.MessageUtils
|
|
|
|
import java.io.Serializable
|
2021-11-04 11:13:24 +00:00
|
|
|
|
2021-11-08 12:24:31 +00:00
|
|
|
class StartSettings : ActivityResultContract<StartSettings.Input, Unit?>() {
|
|
|
|
|
|
|
|
override fun createIntent(context: Context, input: Input): Intent =
|
|
|
|
AppUtil.decorInAppIntent(Intent(context, SettingsActivity::class.java)).apply {
|
|
|
|
putExtra(EXTRA_CURRENT_MAILBOX_LOCATION, input.locationType.messageLocationTypeValue)
|
|
|
|
putExtra(EXTRA_CURRENT_MAILBOX_LABEL_ID, input.labelId)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun parseResult(resultCode: Int, result: Intent?): Unit? {
|
|
|
|
if (resultCode != Activity.RESULT_OK) return null
|
|
|
|
return Unit
|
|
|
|
}
|
2021-11-04 11:13:24 +00:00
|
|
|
|
|
|
|
data class Input(
|
|
|
|
val locationType: Constants.MessageLocationType,
|
|
|
|
val labelId: String?,
|
|
|
|
)
|
2021-11-08 12:24:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class StartContacts : ActivityResultContract<Unit, Unit?>() {
|
|
|
|
|
|
|
|
override fun createIntent(context: Context, input: Unit): Intent =
|
|
|
|
AppUtil.decorInAppIntent(Intent(context, ContactsActivity::class.java))
|
|
|
|
|
|
|
|
override fun parseResult(resultCode: Int, result: Intent?): Unit? {
|
|
|
|
if (resultCode != Activity.RESULT_OK) return null
|
|
|
|
return Unit
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-04-07 16:07:10 +00:00
|
|
|
class StartCompose : ActivityResultContract<StartCompose.Input, String?>() {
|
2021-11-08 12:24:31 +00:00
|
|
|
|
|
|
|
override fun createIntent(context: Context, input: Input): Intent =
|
|
|
|
AppUtil.decorInAppIntent(Intent(context, ComposeMessageActivity::class.java)).apply {
|
|
|
|
input.messageId?.let { putExtra(ComposeMessageActivity.EXTRA_MESSAGE_ID, it) }
|
|
|
|
input.isInline?.let { putExtra(ComposeMessageActivity.EXTRA_MESSAGE_RESPONSE_INLINE, it) }
|
|
|
|
input.addressId?.let { putExtra(ComposeMessageActivity.EXTRA_MESSAGE_ADDRESS_ID, it) }
|
2022-04-08 08:05:18 +00:00
|
|
|
input.toRecipients?.let { putExtra(ComposeMessageActivity.EXTRA_TO_RECIPIENTS, it.toTypedArray()) }
|
|
|
|
input.toRecipientGroups?.let {
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_TO_RECIPIENT_GROUPS, it as Serializable)
|
|
|
|
}
|
|
|
|
input.intentExtrasData?.let { intentExtrasData ->
|
|
|
|
MessageUtils.addRecipientsToIntent(
|
|
|
|
this,
|
|
|
|
ComposeMessageActivity.EXTRA_TO_RECIPIENTS,
|
|
|
|
intentExtrasData.toRecipientListString,
|
|
|
|
intentExtrasData.messageAction,
|
|
|
|
intentExtrasData.userAddresses
|
|
|
|
)
|
|
|
|
if (intentExtrasData.includeCCList) {
|
|
|
|
MessageUtils.addRecipientsToIntent(
|
|
|
|
this,
|
|
|
|
ComposeMessageActivity.EXTRA_CC_RECIPIENTS,
|
|
|
|
intentExtrasData.messageCcList,
|
|
|
|
intentExtrasData.messageAction,
|
|
|
|
intentExtrasData.userAddresses
|
|
|
|
)
|
|
|
|
}
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_LOAD_IMAGES, intentExtrasData.imagesDisplayed)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_LOAD_REMOTE_CONTENT, intentExtrasData.remoteContentDisplayed)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_SENDER_NAME, intentExtrasData.messageSenderName)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_SENDER_ADDRESS, intentExtrasData.senderEmailAddress)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_PGP_MIME, intentExtrasData.isPGPMime)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_TITLE, intentExtrasData.newMessageTitle)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_BODY_LARGE, intentExtrasData.largeMessageBody)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_BODY, intentExtrasData.body)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_TIMESTAMP, intentExtrasData.timeMs)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_PARENT_ID, intentExtrasData.messageId)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_ACTION_ID, intentExtrasData.messageAction)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_ADDRESS_ID, intentExtrasData.addressID)
|
|
|
|
putExtra(ComposeMessageActivity.EXTRA_MESSAGE_ADDRESS_EMAIL_ALIAS, intentExtrasData.addressEmailAlias)
|
|
|
|
if (intentExtrasData.embeddedImagesAttachmentsExist) {
|
|
|
|
putParcelableArrayListExtra(
|
|
|
|
ComposeMessageActivity.EXTRA_MESSAGE_EMBEDDED_ATTACHMENTS,
|
|
|
|
intentExtrasData.attachments
|
|
|
|
)
|
|
|
|
}
|
|
|
|
val attachments = intentExtrasData.attachments
|
|
|
|
if (attachments.size > 0) {
|
|
|
|
if (!intentExtrasData.isPGPMime) {
|
|
|
|
attachments.map { it.doSaveInDB = false }
|
|
|
|
}
|
|
|
|
putParcelableArrayListExtra(
|
|
|
|
ComposeMessageActivity.EXTRA_MESSAGE_ATTACHMENTS,
|
|
|
|
attachments
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
2021-11-08 12:24:31 +00:00
|
|
|
}
|
|
|
|
|
2022-04-07 16:07:10 +00:00
|
|
|
override fun parseResult(resultCode: Int, result: Intent?): String? {
|
|
|
|
return if (resultCode == Activity.RESULT_OK) {
|
|
|
|
result?.getStringExtra(ComposeMessageActivity.EXTRA_MESSAGE_ID)
|
|
|
|
} else {
|
|
|
|
null
|
|
|
|
}
|
2021-11-08 12:24:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
data class Input(
|
|
|
|
val messageId: String? = null,
|
|
|
|
val isInline: Boolean? = null,
|
|
|
|
val addressId: String? = null,
|
2022-04-08 08:05:18 +00:00
|
|
|
val toRecipients: List<String>? = null,
|
|
|
|
val toRecipientGroups: List<MessageRecipient>? = null,
|
|
|
|
val intentExtrasData: IntentExtrasData? = null
|
2021-11-08 12:24:31 +00:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
class StartSearch : ActivityResultContract<Unit, Unit?>() {
|
|
|
|
|
|
|
|
override fun createIntent(context: Context, input: Unit): Intent =
|
|
|
|
AppUtil.decorInAppIntent(Intent(context, SearchActivity::class.java))
|
|
|
|
|
|
|
|
override fun parseResult(resultCode: Int, result: Intent?): Unit? {
|
|
|
|
if (resultCode != Activity.RESULT_OK) return null
|
|
|
|
return Unit
|
|
|
|
}
|
2021-11-04 11:13:24 +00:00
|
|
|
}
|