Fix auto downloading of remote images when printing according to the user settings.

Affected: Printing of messages

Ticket: MAILAND-977
This commit is contained in:
Dimitar Solev 2020-10-29 07:51:34 +01:00
parent 4e12383cdf
commit fddd310cb6
3 changed files with 24 additions and 10 deletions

View File

@ -410,13 +410,7 @@ internal class MessageDetailsActivity :
}
}
R.id.action_report_phishing -> showReportPhishingDialog(message)
R.id.action_print -> {
MessagePrinter(
primaryBaseActivity,
primaryBaseActivity.resources,
primaryBaseActivity.getSystemService(Context.PRINT_SERVICE) as PrintManager
).printMessage(message!!, viewModel.bodyString ?: "")
}
R.id.action_print -> viewModel.printMessage(primaryBaseActivity)
}
if (job != null) {
mJobManager.addJobInBackground(job)

View File

@ -29,6 +29,7 @@ import android.webkit.WebViewClient
import androidx.annotation.RequiresApi
import androidx.annotation.StringRes
import ch.protonmail.android.R
import ch.protonmail.android.activities.BaseActivity
import ch.protonmail.android.api.models.MessageRecipient
import ch.protonmail.android.api.models.room.messages.Message
import ch.protonmail.android.utils.DateUtil
@ -38,9 +39,12 @@ import ch.protonmail.android.utils.extensions.showToast
/**
* Created by Kamil Rajtar on 09.08.18.
*/
internal class MessagePrinter(private val context: Context,
private val resources: Resources,
private val printManager: PrintManager) {
internal class MessagePrinter(
private val context: Context,
private val resources: Resources,
private val printManager: PrintManager,
private val loadRemoteImages: Boolean
) {
private fun StringBuilder.appendRecipientsList(recipients: List<MessageRecipient>, @StringRes header: Int) {
if (recipients.isEmpty()) {
@ -58,6 +62,7 @@ internal class MessagePrinter(private val context: Context,
fun printMessage(message: Message, bodyString: String) {
val webView = WebView(context)
webView.webViewClient = PrinterWebViewClient(message)
webView.settings.blockNetworkImage = !loadRemoteImages
val messageString = StringBuilder("<p>")
val imagePath = "file:///android_asset/logo_print.png"
messageString.append("<img src=\"$imagePath\" height=\"42\"")

View File

@ -19,6 +19,8 @@
package ch.protonmail.android.activities.messageDetails.viewmodel
import android.content.Context
import android.content.res.Resources
import android.print.PrintManager
import android.util.Pair
import androidx.hilt.Assisted
import androidx.hilt.lifecycle.ViewModelInject
@ -31,6 +33,7 @@ import androidx.lifecycle.distinctUntilChanged
import androidx.lifecycle.viewModelScope
import ch.protonmail.android.activities.messageDetails.IntentExtrasData
import ch.protonmail.android.activities.messageDetails.MessageDetailsActivity
import ch.protonmail.android.activities.messageDetails.MessagePrinter
import ch.protonmail.android.activities.messageDetails.MessageRenderer
import ch.protonmail.android.activities.messageDetails.RegisterReloadTask
import ch.protonmail.android.activities.messageDetails.repository.MessageDetailsRepository
@ -582,4 +585,16 @@ internal class MessageDetailsViewModel @ViewModelInject constructor(
deleteMessageUseCase(listOf(messageId))
}
}
fun printMessage(context: Context) {
val message = message.value
message?.let {
MessagePrinter(
context,
context.resources,
context.getSystemService(Context.PRINT_SERVICE) as PrintManager,
remoteContentDisplayed
).printMessage(it, this.bodyString ?: "")
}
}
}