mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 13:33:24 +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();
|
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);
|
$("#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) {
|
exports.setup_page = function (callback) {
|
||||||
function setup_event_handlers() {
|
function setup_event_handlers() {
|
||||||
$(".restore-draft").on("click", function (e) {
|
$(".restore-draft").on("click", function (e) {
|
||||||
@@ -262,7 +276,10 @@ exports.setup_page = function (callback) {
|
|||||||
function _populate_and_fill() {
|
function _populate_and_fill() {
|
||||||
$('#drafts_table').empty();
|
$('#drafts_table').empty();
|
||||||
var drafts = format_drafts(draft_model.get());
|
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);
|
$('#drafts_table').append(rendered);
|
||||||
if ($("#drafts_table .draft-row").length > 0) {
|
if ($("#drafts_table .draft-row").length > 0) {
|
||||||
$('#drafts_table .no-drafts').hide();
|
$('#drafts_table .no-drafts').hide();
|
||||||
@@ -280,6 +297,8 @@ exports.setup_page = function (callback) {
|
|||||||
_populate_and_fill();
|
_populate_and_fill();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remove_old_drafts();
|
||||||
populate_and_fill();
|
populate_and_fill();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,15 @@
|
|||||||
-webkit-font-smoothing: antialiased;
|
-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 {
|
.draft-row {
|
||||||
padding: 5px 10px;
|
padding: 5px 10px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="drafts-list">
|
<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">
|
<div class="no-drafts">
|
||||||
{{t 'No drafts.'}}
|
{{t 'No drafts.'}}
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user