From c438106732539d37fcb524abfe4b78e177f81691 Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Thu, 10 Aug 2017 12:25:59 +0100 Subject: [PATCH] [ci skip] Improve performance of getting last note --- app/assets/javascripts/notes/stores/getters.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/app/assets/javascripts/notes/stores/getters.js b/app/assets/javascripts/notes/stores/getters.js index 386e5e2050d..18308d338c0 100644 --- a/app/assets/javascripts/notes/stores/getters.js +++ b/app/assets/javascripts/notes/stores/getters.js @@ -1,3 +1,5 @@ +import _ from 'underscore'; + export const notes = state => state.notes; export const targetNoteHash = state => state.targetNoteHash; @@ -16,15 +18,11 @@ export const notesById = state => state.notes.reduce((acc, note) => { }, {}); const reverseNotes = array => array.slice(0).reverse(); -const isLastNote = (note, userId) => !note.system && note.author.id === userId; +const isLastNote = (note, state) => !note.system && note.author.id === state.userData.id; -export const getCurrentUserLastNote = state => userId => reverseNotes(state.notes) - .reduce((acc, note) => { - acc.push(reverseNotes(note.notes).find(el => isLastNote(el, userId))); - return acc; - }, []).filter(el => el !== undefined)[0]; - -// eslint-disable-next-line no-unused-vars -export const getDiscussionLastNote = state => (discussion, userId) => reverseNotes(discussion.notes) - .find(el => isLastNote(el, userId)); +export const getCurrentUserLastNote = state => _.flatten(reverseNotes(state.notes) + .map(note => note.notes)) + .find(el => isLastNote(el, state)); +export const getDiscussionLastNote = state => discussion => reverseNotes(discussion.notes) + .find(el => isLastNote(el, state));