You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-08-13 22:12:50 +02:00
Mobile: Fixed issue that could slow down app when displaying large list of notes
This commit is contained in:
@@ -100,13 +100,13 @@ class NotesScreenComponent extends BaseScreenComponent {
|
|||||||
AppState.removeEventListener('change', this.onAppStateChange_);
|
AppState.removeEventListener('change', this.onAppStateChange_);
|
||||||
}
|
}
|
||||||
|
|
||||||
async UNSAFE_componentWillReceiveProps(newProps) {
|
async componentDidUpdate(prevProps) {
|
||||||
if (newProps.notesOrder !== this.props.notesOrder ||
|
if (prevProps.notesOrder !== this.props.notesOrder ||
|
||||||
newProps.selectedFolderId != this.props.selectedFolderId ||
|
prevProps.selectedFolderId != this.props.selectedFolderId ||
|
||||||
newProps.selectedTagId != this.props.selectedTagId ||
|
prevProps.selectedTagId != this.props.selectedTagId ||
|
||||||
newProps.selectedSmartFilterId != this.props.selectedSmartFilterId ||
|
prevProps.selectedSmartFilterId != this.props.selectedSmartFilterId ||
|
||||||
newProps.notesParentType != this.props.notesParentType) {
|
prevProps.notesParentType != this.props.notesParentType) {
|
||||||
await this.refreshNotes(newProps);
|
await this.refreshNotes(this.props);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,6 +144,8 @@ class NotesScreenComponent extends BaseScreenComponent {
|
|||||||
notes: notes,
|
notes: notes,
|
||||||
notesSource: source,
|
notesSource: source,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
console.info('Done', Date.now() - startTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteFolder_onPress(folderId) {
|
deleteFolder_onPress(folderId) {
|
||||||
|
@@ -53,18 +53,30 @@ const defaultState = {
|
|||||||
|
|
||||||
const stateUtils = {};
|
const stateUtils = {};
|
||||||
|
|
||||||
|
const derivedStateCache_ = {};
|
||||||
|
|
||||||
|
// Allows, for a given state, to return the same derived
|
||||||
|
// objects, to prevent unecessary updates on calling components.
|
||||||
|
const cacheEnabledOutput = (key, output) => {
|
||||||
|
key = key + '_' + JSON.stringify(output);
|
||||||
|
if (derivedStateCache_[key]) return derivedStateCache_[key];
|
||||||
|
|
||||||
|
derivedStateCache_[key] = output;
|
||||||
|
return derivedStateCache_[key];
|
||||||
|
}
|
||||||
|
|
||||||
stateUtils.notesOrder = function(stateSettings) {
|
stateUtils.notesOrder = function(stateSettings) {
|
||||||
return [{
|
return cacheEnabledOutput('notesOrder', [{
|
||||||
by: stateSettings['notes.sortOrder.field'],
|
by: stateSettings['notes.sortOrder.field'],
|
||||||
dir: stateSettings['notes.sortOrder.reverse'] ? 'DESC' : 'ASC',
|
dir: stateSettings['notes.sortOrder.reverse'] ? 'DESC' : 'ASC',
|
||||||
}];
|
}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
stateUtils.foldersOrder = function(stateSettings) {
|
stateUtils.foldersOrder = function(stateSettings) {
|
||||||
return [{
|
return cacheEnabledOutput('foldersOrder', [{
|
||||||
by: stateSettings['folders.sortOrder.field'],
|
by: stateSettings['folders.sortOrder.field'],
|
||||||
dir: stateSettings['folders.sortOrder.reverse'] ? 'DESC' : 'ASC',
|
dir: stateSettings['folders.sortOrder.reverse'] ? 'DESC' : 'ASC',
|
||||||
}];
|
}]);
|
||||||
}
|
}
|
||||||
|
|
||||||
stateUtils.parentItem = function(state) {
|
stateUtils.parentItem = function(state) {
|
||||||
|
Reference in New Issue
Block a user