Commit 32c7310f4a2ba8b408f0dd0cc17eba9b92159817
1 parent
5b1984ce
Exists in
spb-stable
and in
3 other branches
Clear refresh interval for notes. Fixes duplicate note rendering
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Showing
1 changed file
with
19 additions
and
9 deletions
Show diff stats
app/assets/javascripts/notes.js.coffee
1 | class Notes | 1 | class Notes |
2 | + @interval: null | ||
3 | + | ||
2 | constructor: (notes_url, note_ids) -> | 4 | constructor: (notes_url, note_ids) -> |
3 | @notes_url = notes_url | 5 | @notes_url = notes_url |
4 | @notes_url = gon.relative_url_root + @notes_url if gon.relative_url_root? | 6 | @notes_url = gon.relative_url_root + @notes_url if gon.relative_url_root? |
@@ -60,7 +62,8 @@ class Notes | @@ -60,7 +62,8 @@ class Notes | ||
60 | 62 | ||
61 | 63 | ||
62 | initRefresh: -> | 64 | initRefresh: -> |
63 | - setInterval => | 65 | + clearInterval(Notes.interval) |
66 | + Notes.interval = setInterval => | ||
64 | @refresh() | 67 | @refresh() |
65 | , 15000 | 68 | , 15000 |
66 | 69 | ||
@@ -74,11 +77,7 @@ class Notes | @@ -74,11 +77,7 @@ class Notes | ||
74 | success: (data) => | 77 | success: (data) => |
75 | notes = data.notes | 78 | notes = data.notes |
76 | $.each notes, (i, note) => | 79 | $.each notes, (i, note) => |
77 | - # render note if it not present in loaded list | ||
78 | - # or skip if rendered | ||
79 | - if $.inArray(note.id, @note_ids) == -1 | ||
80 | - @note_ids.push(note.id) | ||
81 | - @renderNote(note) | 80 | + @renderNote(note) |
82 | 81 | ||
83 | 82 | ||
84 | ### | 83 | ### |
@@ -87,7 +86,19 @@ class Notes | @@ -87,7 +86,19 @@ class Notes | ||
87 | Note: for rendering inline notes use renderDiscussionNote | 86 | Note: for rendering inline notes use renderDiscussionNote |
88 | ### | 87 | ### |
89 | renderNote: (note) -> | 88 | renderNote: (note) -> |
90 | - $('ul.main-notes-list').append(note.html) | 89 | + # render note if it not present in loaded list |
90 | + # or skip if rendered | ||
91 | + if @isNewNote(note) | ||
92 | + @note_ids.push(note.id) | ||
93 | + $('ul.main-notes-list').append(note.html) | ||
94 | + | ||
95 | + | ||
96 | + ### | ||
97 | + Check if note does not exists on page | ||
98 | + ### | ||
99 | + isNewNote: (note) -> | ||
100 | + $.inArray(note.id, @note_ids) == -1 | ||
101 | + | ||
91 | 102 | ||
92 | ### | 103 | ### |
93 | Render note in discussion area. | 104 | Render note in discussion area. |
@@ -95,6 +106,7 @@ class Notes | @@ -95,6 +106,7 @@ class Notes | ||
95 | Note: for rendering inline notes use renderDiscussionNote | 106 | Note: for rendering inline notes use renderDiscussionNote |
96 | ### | 107 | ### |
97 | renderDiscussionNote: (note) -> | 108 | renderDiscussionNote: (note) -> |
109 | + @note_ids.push(note.id) | ||
98 | form = $("form[rel='" + note.discussion_id + "']") | 110 | form = $("form[rel='" + note.discussion_id + "']") |
99 | row = form.closest("tr") | 111 | row = form.closest("tr") |
100 | 112 | ||
@@ -219,7 +231,6 @@ class Notes | @@ -219,7 +231,6 @@ class Notes | ||
219 | Adds new note to list. | 231 | Adds new note to list. |
220 | ### | 232 | ### |
221 | addNote: (xhr, note, status) => | 233 | addNote: (xhr, note, status) => |
222 | - @note_ids.push(note.id) | ||
223 | @renderNote(note) | 234 | @renderNote(note) |
224 | 235 | ||
225 | ### | 236 | ### |
@@ -228,7 +239,6 @@ class Notes | @@ -228,7 +239,6 @@ class Notes | ||
228 | Adds new note to list. | 239 | Adds new note to list. |
229 | ### | 240 | ### |
230 | addDiscussionNote: (xhr, note, status) => | 241 | addDiscussionNote: (xhr, note, status) => |
231 | - @note_ids.push(note.id) | ||
232 | @renderDiscussionNote(note) | 242 | @renderDiscussionNote(note) |
233 | 243 | ||
234 | ### | 244 | ### |