From 2631cc3747cd0ee7ef942acea8398041a70c2b96 Mon Sep 17 00:00:00 2001 From: Shammasov Max Date: Mon, 11 Jun 2018 03:46:39 +0300 Subject: [PATCH 1/2] Fix file list blinking on search --- browser/main/NoteList/index.js | 15 ++++++++++++--- package.json | 1 + yarn.lock | 7 +++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index d6b7f846..3c32dc11 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -2,6 +2,7 @@ import PropTypes from 'prop-types' import React from 'react' import CSSModules from 'browser/lib/CSSModules' +import debounceRender from 'react-debounce-render' import styles from './NoteList.styl' import moment from 'moment' import _ from 'lodash' @@ -947,16 +948,24 @@ class NoteList extends React.Component { }) const viewType = this.getViewType() + + const autoSelectFirst = notes.length === 1 + || selectedNoteKeys.length === 0 + || notes.every( note => !selectedNoteKeys.includes(note.key)) const noteList = notes - .map(note => { + .map( (note, index) => { if (note == null) { return null } const isDefault = config.listStyle === 'DEFAULT' const uniqueKey = getNoteKey(note) - const isActive = selectedNoteKeys.includes(uniqueKey) + + const isActive = + selectedNoteKeys.includes(uniqueKey) + || notes.length === 1 + || (autoSelectFirst && index === 0) const dateDisplay = moment( config.sortBy === 'CREATED_AT' ? note.createdAt : note.updatedAt @@ -1058,4 +1067,4 @@ NoteList.propTypes = { }) } -export default CSSModules(NoteList, styles) +export default debounceRender(CSSModules(NoteList, styles)) diff --git a/package.json b/package.json index 0617900b..187f8603 100644 --- a/package.json +++ b/package.json @@ -89,6 +89,7 @@ "raphael": "^2.2.7", "react": "^15.5.4", "react-codemirror": "^0.3.0", + "react-debounce-render": "^4.0.1", "react-dom": "^15.0.2", "react-redux": "^4.4.5", "react-sortable-hoc": "^0.6.7", diff --git a/yarn.lock b/yarn.lock index 6659d9ac..23ba4c45 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,6 +1,7 @@ # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. # yarn lockfile v1 + "@ava/babel-plugin-throws-helper@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@ava/babel-plugin-throws-helper/-/babel-plugin-throws-helper-2.0.0.tgz#2fc1fe3c211a71071a4eca7b8f7af5842cd1ae7c" @@ -6891,6 +6892,12 @@ react-css-modules@^3.7.6: lodash "^4.6.1" object-unfreeze "^1.0.2" +react-debounce-render@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/react-debounce-render/-/react-debounce-render-4.0.1.tgz#3a1814f67eca17e91d3101799805a7a4e2128a84" + dependencies: + lodash "^4.17.4" + react-deep-force-update@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/react-deep-force-update/-/react-deep-force-update-1.1.1.tgz#bcd31478027b64b3339f108921ab520b4313dc2c" From 9522a4d5d9a0771899e818495d404a9df6ba3ef0 Mon Sep 17 00:00:00 2001 From: Sosuke Suzuki Date: Tue, 12 Jun 2018 19:33:54 +0900 Subject: [PATCH 2/2] fix from eslint --- browser/main/NoteList/index.js | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index 3c32dc11..3626130d 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -948,13 +948,14 @@ class NoteList extends React.Component { }) const viewType = this.getViewType() - - const autoSelectFirst = notes.length === 1 - || selectedNoteKeys.length === 0 - || notes.every( note => !selectedNoteKeys.includes(note.key)) + + const autoSelectFirst = + notes.length === 1 || + selectedNoteKeys.length === 0 || + notes.every(note => !selectedNoteKeys.includes(note.key)) const noteList = notes - .map( (note, index) => { + .map((note, index) => { if (note == null) { return null } @@ -962,10 +963,10 @@ class NoteList extends React.Component { const isDefault = config.listStyle === 'DEFAULT' const uniqueKey = getNoteKey(note) - const isActive = - selectedNoteKeys.includes(uniqueKey) - || notes.length === 1 - || (autoSelectFirst && index === 0) + const isActive = + selectedNoteKeys.includes(uniqueKey) || + notes.length === 1 || + (autoSelectFirst && index === 0) const dateDisplay = moment( config.sortBy === 'CREATED_AT' ? note.createdAt : note.updatedAt