mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
compose: Remove draft older than 30 days.
This removes drafts older than 30 days as they become irrelevant for the user. Those drafts are removed before populating them. Fixes: #7602.
This commit is contained in:
committed by
Tim Abbott
parent
40958e0824
commit
7aeae688e7
@@ -145,3 +145,29 @@ var draft_2 = {
|
||||
|
||||
drafts.initialize();
|
||||
}());
|
||||
|
||||
(function test_remove_old_drafts() {
|
||||
var draft_3 = {
|
||||
stream: "stream",
|
||||
subject: "topic",
|
||||
type: "stream",
|
||||
content: "Test Stream Message",
|
||||
updatedAt: Date.now(),
|
||||
};
|
||||
var draft_4 = {
|
||||
private_message_recipient: "aaron@zulip.com",
|
||||
reply_to: "aaron@zulip.com",
|
||||
type: "private",
|
||||
content: "Test Private Message",
|
||||
updatedAt: new Date().setDate(-30),
|
||||
};
|
||||
var draft_model = drafts.draft_model;
|
||||
var ls = localstorage();
|
||||
localStorage.clear();
|
||||
var data = {id3: draft_3, id4: draft_4};
|
||||
ls.set("drafts", data);
|
||||
assert.deepEqual(draft_model.get(), data);
|
||||
|
||||
drafts.remove_old_drafts();
|
||||
assert.deepEqual(draft_model.get(), {id3: draft_3});
|
||||
}());
|
||||
|
||||
@@ -160,6 +160,20 @@ exports.restore_draft = function (draft_id) {
|
||||
$("#compose-textarea").data("draft-id", draft_id);
|
||||
};
|
||||
|
||||
var DRAFT_LIFETIME = 30;
|
||||
|
||||
function remove_old_drafts() {
|
||||
var old_date = new Date().setDate(new Date().getDate() - DRAFT_LIFETIME);
|
||||
var drafts = draft_model.get();
|
||||
_.each(drafts, function (draft, id) {
|
||||
if (draft.updatedAt < old_date) {
|
||||
draft_model.deleteDraft(id);
|
||||
}
|
||||
});
|
||||
}
|
||||
// Exporting for testing purpose
|
||||
exports.remove_old_drafts = remove_old_drafts;
|
||||
|
||||
exports.setup_page = function (callback) {
|
||||
function setup_event_handlers() {
|
||||
$(".restore-draft").on("click", function (e) {
|
||||
@@ -262,7 +276,10 @@ exports.setup_page = function (callback) {
|
||||
function _populate_and_fill() {
|
||||
$('#drafts_table').empty();
|
||||
var drafts = format_drafts(draft_model.get());
|
||||
var rendered = templates.render('draft_table_body', { drafts: drafts });
|
||||
var rendered = templates.render('draft_table_body',{
|
||||
drafts: drafts,
|
||||
draft_lifetime: DRAFT_LIFETIME,
|
||||
});
|
||||
$('#drafts_table').append(rendered);
|
||||
if ($("#drafts_table .draft-row").length > 0) {
|
||||
$('#drafts_table .no-drafts').hide();
|
||||
@@ -280,6 +297,8 @@ exports.setup_page = function (callback) {
|
||||
_populate_and_fill();
|
||||
});
|
||||
}
|
||||
|
||||
remove_old_drafts();
|
||||
populate_and_fill();
|
||||
};
|
||||
|
||||
|
||||
@@ -61,6 +61,15 @@
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.drafts-list .removed-drafts {
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-size: 1em;
|
||||
color: hsl(0, 0%, 66%);
|
||||
pointer-events: none;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.draft-row {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="drafts-list">
|
||||
<div class="removed-drafts">
|
||||
{{#tr this}} Drafts older than <strong>__draft_lifetime__</strong> days are automatically removed {{/tr}}
|
||||
</div>
|
||||
<div class="no-drafts">
|
||||
{{t 'No drafts.'}}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user