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 | ### |