You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-09-16 08:56:40 +02:00
Cache note list
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import React, { Component } from 'react';
|
||||
import { connect } from 'react-redux'
|
||||
import { NotesScreen } from 'lib/components/screens/notes.js';
|
||||
import { View } from 'react-native';
|
||||
import { _ } from 'lib/locale.js';
|
||||
|
||||
@@ -9,11 +10,19 @@ class AppNavComponent extends Component {
|
||||
if (!this.props.route) throw new Error('Route must not be null');
|
||||
|
||||
let route = this.props.route;
|
||||
let Screen = this.props.screens[route.routeName].screen;
|
||||
let Screen = null;
|
||||
let notesScreenVisible = false;
|
||||
|
||||
if (route.routeName == 'Notes') {
|
||||
notesScreenVisible = true;
|
||||
} else {
|
||||
Screen = this.props.screens[route.routeName].screen;
|
||||
}
|
||||
|
||||
return (
|
||||
<View style={{ flex: 1 }}>
|
||||
<Screen navigation={{ state: route }} />
|
||||
<NotesScreen visible={notesScreenVisible} navigation={{ state: route }} />
|
||||
{ !notesScreenVisible && <Screen navigation={{ state: route }} /> }
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
@@ -2,12 +2,14 @@ import React, { Component } from 'react';
|
||||
import { StyleSheet } from 'react-native';
|
||||
import { globalStyle } from 'lib/components/global-style.js';
|
||||
|
||||
const styles_ = StyleSheet.create({
|
||||
const styleObject_ = {
|
||||
screen: {
|
||||
flex: 1,
|
||||
backgroundColor: globalStyle.backgroundColor,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
const styles_ = StyleSheet.create(styleObject_);
|
||||
|
||||
class BaseScreenComponent extends React.Component {
|
||||
|
||||
@@ -15,6 +17,10 @@ class BaseScreenComponent extends React.Component {
|
||||
return styles_;
|
||||
}
|
||||
|
||||
styleObject() {
|
||||
return styleObject_;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
export { BaseScreenComponent };
|
@@ -43,6 +43,7 @@ class NotesScreenComponent extends BaseScreenComponent {
|
||||
};
|
||||
|
||||
const parent = this.parentItem(props);
|
||||
if (!parent) return;
|
||||
|
||||
const source = JSON.stringify({
|
||||
options: options,
|
||||
@@ -110,6 +111,7 @@ class NotesScreenComponent extends BaseScreenComponent {
|
||||
} else if (props.notesParentType == 'Tag') {
|
||||
output = Tag.byId(props.tags, props.selectedTagId);
|
||||
} else {
|
||||
return null;
|
||||
throw new Error('Invalid parent type: ' + props.notesParentType);
|
||||
}
|
||||
return output;
|
||||
@@ -129,9 +131,14 @@ class NotesScreenComponent extends BaseScreenComponent {
|
||||
let title = parent ? parent.title : null;
|
||||
const addFolderNoteButtons = this.props.selectedFolderId && this.props.selectedFolderId != Folder.conflictFolderId();
|
||||
|
||||
let rootStyle = Object.assign({}, this.styleObject().screen);
|
||||
if (!this.props.visible) {
|
||||
rootStyle.flex = 0.001; // This is a bit of a hack but it seems to work fine - it makes the component invisible but without unmounting it
|
||||
}
|
||||
|
||||
const { navigate } = this.props.navigation;
|
||||
return (
|
||||
<View style={this.styles().screen}>
|
||||
<View style={rootStyle}>
|
||||
<ScreenHeader title={title} menuOptions={this.menuOptions()} />
|
||||
<NoteList style={{flex: 1}}/>
|
||||
<ActionButton addFolderNoteButtons={addFolderNoteButtons} parentFolderId={this.props.selectedFolderId}></ActionButton>
|
||||
|
Reference in New Issue
Block a user