drafts: Refactor code used to remove drafts.

Adds a `remove_draft` function which deletes the draft and updates the ui
by removing it from the list of drafts.
Also adds comments to increase readability.
This commit is contained in:
Vaibhav
2019-01-29 23:29:18 +05:30
committed by Tim Abbott
parent 8a4aa0e49a
commit 69424e4f2f

View File

@@ -265,6 +265,19 @@ exports.format_draft = function (draft) {
return formatted;
};
function remove_draft(draft_row) {
// Deletes the draft and removes it from the list
var draft_id = draft_row.data("draft-id");
drafts.draft_model.deleteDraft(draft_id);
draft_row.remove();
if ($("#drafts_table .draft-row").length === 0) {
$('#drafts_table .no-drafts').show();
}
}
// Exporting for testing purpose
exports.remove_old_drafts = remove_old_drafts;
@@ -308,14 +321,8 @@ exports.launch = function () {
$(".draft_controls .delete-draft").on("click", function () {
var draft_row = $(this).closest(".draft-row");
var draft_id = draft_row.data("draft-id");
exports.draft_model.deleteDraft(draft_id);
draft_row.remove();
if ($("#drafts_table .draft-row").length === 0) {
$('#drafts_table .no-drafts').show();
}
remove_draft(draft_row);
});
}
@@ -419,23 +426,25 @@ exports.drafts_handle_events = function (e, event_key) {
if (event_key === "backspace" || event_key === "delete") {
if (elt.parentElement.hasAttribute("data-draft-id")) {
var focus_draft_back_row = $(elt)[0].parentElement;
var backnext_focus_draft_row = $(focus_draft_back_row).next();
var backprev_focus_draft_row = $(focus_draft_back_row).prev();
var draft_row = $(focus_draft_back_row);
var backnext_focus_draft_row = draft_row.next();
var backprev_focus_draft_row = draft_row.prev();
var delete_id;
// Try to get the next draft in the list and 'focus' it
// Use previous draft as a fallback
if (backnext_focus_draft_row[0] !== undefined) {
delete_id = backnext_focus_draft_row[0].getAttribute("data-draft-id");
} else if (backprev_focus_draft_row[0] !== undefined) {
delete_id = backprev_focus_draft_row[0].getAttribute("data-draft-id");
}
drafts.draft_model.deleteDraft(focused_draft);
document.activeElement.parentElement.remove();
var new_focus_element = document.querySelectorAll('[data-draft-id="' + delete_id + '"]');
if (new_focus_element[0] !== undefined) {
activate_element(new_focus_element[0].children[0]);
}
if ($("#drafts_table .draft-row").length === 0) {
$('#drafts_table .no-drafts').show();
}
remove_draft(draft_row);
}
}