From 6d711adc4cf3cef1a3ba6a751b049484447778e4 Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Wed, 21 Aug 2013 23:26:28 +0200 Subject: [PATCH 1/2] fixed deleting messages broken when deleting too fast --- public/javascripts/application.coffee | 16 ++++++++-------- public/javascripts/application.js | 20 ++++++++++---------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/public/javascripts/application.coffee b/public/javascripts/application.coffee index ff42833b..0012525d 100644 --- a/public/javascripts/application.coffee +++ b/public/javascripts/application.coffee @@ -89,19 +89,19 @@ class MailCatcher key 'backspace, delete', => id = @selectedMessage() if id? + messageRow = $("#messages tbody tr[data-message-id='#{id}']") + switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id') + if switchTo + @loadMessage switchTo + else + @unselectMessage() $.ajax url: '/messages/' + id type: 'DELETE' success: => - messageRow = $("#messages tbody tr[data-message-id='#{id}']") - switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id') messageRow.remove() - if switchTo - @loadMessage switchTo - else - @unselectMessage() - - error: -> + error: => + @loadMessage id alert 'Error while removing message.' false diff --git a/public/javascripts/application.js b/public/javascripts/application.js index ba66c466..1be92d62 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -127,24 +127,24 @@ return false; }); key('backspace, delete', function() { - var id; + var id, messageRow, switchTo; id = _this.selectedMessage(); if (id != null) { + messageRow = $("#messages tbody tr[data-message-id='" + id + "']"); + switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id'); + if (switchTo) { + _this.loadMessage(switchTo); + } else { + _this.unselectMessage(); + } $.ajax({ url: '/messages/' + id, type: 'DELETE', success: function() { - var messageRow, switchTo; - messageRow = $("#messages tbody tr[data-message-id='" + id + "']"); - switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id'); - messageRow.remove(); - if (switchTo) { - return _this.loadMessage(switchTo); - } else { - return _this.unselectMessage(); - } + return messageRow.remove(); }, error: function() { + _this.loadMessage(id); return alert('Error while removing message.'); } }); From 85b3b3201df0632d82c386801584a2c2a0ab39ab Mon Sep 17 00:00:00 2001 From: Ivan Kuchin Date: Thu, 22 Aug 2013 00:16:34 +0200 Subject: [PATCH 2/2] deleting message removes row right away to prevent second time deleting conflict --- public/javascripts/application.coffee | 4 +--- public/javascripts/application.js | 5 +---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/public/javascripts/application.coffee b/public/javascripts/application.coffee index 0012525d..51b28f9f 100644 --- a/public/javascripts/application.coffee +++ b/public/javascripts/application.coffee @@ -91,6 +91,7 @@ class MailCatcher if id? messageRow = $("#messages tbody tr[data-message-id='#{id}']") switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id') + messageRow.remove() if switchTo @loadMessage switchTo else @@ -98,10 +99,7 @@ class MailCatcher $.ajax url: '/messages/' + id type: 'DELETE' - success: => - messageRow.remove() error: => - @loadMessage id alert 'Error while removing message.' false diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 1be92d62..0c7f88da 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -132,6 +132,7 @@ if (id != null) { messageRow = $("#messages tbody tr[data-message-id='" + id + "']"); switchTo = messageRow.next().data('message-id') || messageRow.prev().data('message-id'); + messageRow.remove(); if (switchTo) { _this.loadMessage(switchTo); } else { @@ -140,11 +141,7 @@ $.ajax({ url: '/messages/' + id, type: 'DELETE', - success: function() { - return messageRow.remove(); - }, error: function() { - _this.loadMessage(id); return alert('Error while removing message.'); } });