delete individual messages

This commit is contained in:
Ivan Kuchin 2012-10-25 00:45:26 +02:00
parent a161dedf0a
commit 09312ffb6e
4 changed files with 52 additions and 0 deletions

View File

@ -150,4 +150,11 @@ module MailCatcher::Mail extend self
@delete_messages_query.execute and
@delete_message_parts_query.execute
end
def delete_message!(message_id)
@delete_messages_query ||= db.prepare 'DELETE FROM message WHERE id = ?'
@delete_message_parts_query ||= db.prepare 'DELETE FROM message_part WHERE message_id = ?'
@delete_messages_query.execute(message_id) and
@delete_message_parts_query.execute(message_id)
end
end

View File

@ -132,6 +132,16 @@ class MailCatcher::Web < Sinatra::Base
end
end
delete '/messages/:id' do
id = params[:id].to_i
if message = MailCatcher::Mail.message(id)
MailCatcher::Mail.delete_message!(id)
status 204
else
not_found
end
end
not_found do
"<html><body><h1>No Dice</h1><p>The message you were looking for does not exist, or doesn't have content of this type.</p></body></html>"
end

View File

@ -86,6 +86,21 @@ class MailCatcher
@openTab @nextTab()
false
key 'backspace, delete', =>
id = @selectedMessage()
if id?
$.ajax
url: '/messages/' + id
type: 'DELETE'
success: ->
$('#messages tbody tr[data-message-id="'+id+'"]').remove()
$('#message .metadata dd').empty()
$('#message .metadata .attachments').hide()
$('#message iframe').attr 'src', 'about:blank'
error: ->
alert 'Error while removing message.'
false
@refresh()
@subscribe()

View File

@ -116,6 +116,26 @@
_this.openTab(_this.nextTab());
return false;
});
key('backspace, delete', function() {
var id;
id = _this.selectedMessage();
if (id != null) {
$.ajax({
url: '/messages/' + id,
type: 'DELETE',
success: function() {
$('#messages tbody tr[data-message-id="' + id + '"]').remove();
$('#message .metadata dd').empty();
$('#message .metadata .attachments').hide();
return $('#message iframe').attr('src', 'about:blank');
},
error: function() {
return alert('Error while removing message.');
}
});
}
return false;
});
this.refresh();
this.subscribe();
}