I#1750 - Composer: Offer to send without encryption when key is missing

Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/1750
This commit is contained in:
Milan Crha
2023-08-02 12:36:51 +02:00
parent db44ff8b1e
commit e0446fd21d

View File

@ -4914,24 +4914,59 @@ e_msg_composer_prepare_content_hash (EMsgComposer *composer,
g_clear_object (&from);
}
static void
msg_composer_alert_response_cb (EAlert *alert,
gint response_id,
gpointer user_data)
{
if (response_id == GTK_RESPONSE_ACCEPT) {
EMsgComposer *composer = user_data;
GtkAction *action;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
action = ACTION (PGP_ENCRYPT);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
#ifdef ENABLE_SMIME
action = ACTION (SMIME_ENCRYPT);
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), FALSE);
#endif
e_msg_composer_send (composer);
}
}
static gboolean
e_msg_composer_claim_no_build_message_error (EMsgComposer *composer,
EActivity *activity,
const GError *error,
gboolean unref_content_hash_on_error)
gboolean unref_content_hash_on_error,
gboolean is_send_op)
{
g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), FALSE);
if (error) {
if (!e_activity_handle_cancellation (activity, error)) {
EAlertSink *alert_sink;
EAlert *alert;
alert_sink = e_activity_get_alert_sink (activity);
alert = e_alert_new ("mail-composer:no-build-message", error->message, NULL);
e_alert_submit (
alert_sink,
"mail-composer:no-build-message",
error->message, NULL);
if (is_send_op && g_error_matches (error, CAMEL_CIPHER_CONTEXT_ERROR, CAMEL_CIPHER_CONTEXT_ERROR_KEY_NOT_FOUND)) {
GtkAction *action;
action = gtk_action_new ("msg-composer-alert-action-0", _("Send _without encryption"), NULL, NULL);
e_alert_add_action (alert, action, GTK_RESPONSE_ACCEPT, FALSE);
g_object_unref (action);
g_signal_connect_object (alert, "response",
G_CALLBACK (msg_composer_alert_response_cb), composer, 0);
}
e_alert_sink_submit_alert (alert_sink, alert);
g_object_unref (alert);
}
if (e_msg_composer_is_exiting (composer)) {
@ -4960,7 +4995,7 @@ msg_composer_send_cb (EMsgComposer *composer,
message = e_msg_composer_get_message_finish (composer, result, &error);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE, TRUE)) {
g_warn_if_fail (message == NULL);
async_context_free (context);
g_clear_error (&error);
@ -4998,7 +5033,7 @@ e_msg_composer_send_content_hash_ready_cb (EMsgComposer *composer,
g_return_if_fail (context != NULL);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE, FALSE)) {
async_context_free (context);
return;
}
@ -5088,7 +5123,7 @@ msg_composer_save_to_drafts_cb (EMsgComposer *composer,
message = e_msg_composer_get_message_draft_finish (composer, result, &error);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE, FALSE)) {
g_warn_if_fail (message == NULL);
async_context_free (context);
g_clear_error (&error);
@ -5126,7 +5161,7 @@ e_msg_composer_save_to_drafts_content_hash_ready_cb (EMsgComposer *composer,
g_return_if_fail (context != NULL);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE, FALSE)) {
if (e_msg_composer_is_exiting (composer)) {
gtk_window_present (GTK_WINDOW (composer));
composer->priv->application_exiting = FALSE;
@ -5180,7 +5215,7 @@ msg_composer_save_to_outbox_cb (EMsgComposer *composer,
message = e_msg_composer_get_message_finish (composer, result, &error);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE, FALSE)) {
g_warn_if_fail (message == NULL);
async_context_free (context);
g_clear_error (&error);
@ -5213,7 +5248,7 @@ e_msg_composer_save_to_outbox_content_hash_ready_cb (EMsgComposer *composer,
g_return_if_fail (context != NULL);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE, FALSE)) {
async_context_free (context);
return;
}
@ -5278,7 +5313,7 @@ msg_composer_print_cb (EMsgComposer *composer,
message = e_msg_composer_get_message_print_finish (composer, result, &error);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, TRUE, FALSE)) {
g_warn_if_fail (message == NULL);
async_context_free (context);
g_clear_error (&error);
@ -5307,7 +5342,7 @@ e_msg_composer_print_content_hash_ready_cb (EMsgComposer *composer,
g_return_if_fail (context != NULL);
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE)) {
if (e_msg_composer_claim_no_build_message_error (composer, context->activity, error, FALSE, FALSE)) {
async_context_free (context);
return;
}