From 90dc9b15125b60c000e10006a6b95ad72952ae9e Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Mon, 27 Jan 2014 11:44:46 -0500
Subject: [PATCH] Compare message IDs before suggesting to restore compose messages on reply

---
 program/steps/mail/compose.inc |    3 +++
 program/js/app.js              |   11 ++++++++++-
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/program/js/app.js b/program/js/app.js
index f83caeb..f4a41e7 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3141,6 +3141,10 @@
         if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) {
           continue;
         }
+        // skip records on reply
+        if (this.env.reply_msgid && formdata.reply_msgid != this.env.reply_msgid) {
+          continue;
+        }
         // show dialog asking to restore the message
         if (formdata.changed && formdata.session != this.env.session_id) {
           this.show_popup_dialog(
@@ -3616,8 +3620,10 @@
       this.env.draft_id = id;
       $("input[name='_draft_saveid']").val(id);
 
-      this.remove_compose_data(this.env.compose_id);
     }
+
+    // always remove local copy upon saving as draft
+    this.remove_compose_data(this.env.compose_id);
   };
 
   this.auto_save_start = function()
@@ -3681,6 +3687,9 @@
     if (this.env.draft_id) {
       formdata.draft_id = this.env.draft_id;
     }
+    if (this.env.reply_msgid) {
+      formdata.reply_msgid = this.env.reply_msgid;
+    }
 
     $('input, select, textarea', this.gui_objects.messageform).each(function(i, elem) {
       switch (elem.tagName.toLowerCase()) {
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index db001d5..6e478c6 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -271,6 +271,9 @@
     }
 }
 
+if (!empty($COMPOSE['reply_msgid']))
+  $OUTPUT->set_env('reply_msgid', $COMPOSE['reply_msgid']);
+
 $MESSAGE->compose = array();
 
 // get user's identities

--
Gitblit v1.9.1