You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +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