mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-03 21:43:21 +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