diff --git a/components/FileList/view.js b/components/FileList/view.js
index 122b408..4d4b3b1 100644
--- a/components/FileList/view.js
+++ b/components/FileList/view.js
@@ -1,7 +1,6 @@
import React, {
Component,
View,
- ListView,
Text,
StatusBar,
StyleSheet,
@@ -11,8 +10,12 @@ import React, {
Platform
} from 'react-native';
import NavBar, { NavButton, NavTitle, NavGroup } from 'react-native-nav'
+import { ListView } from 'realm/react-native';
+import Prompt from 'react-native-prompt';
+
import TouchableFeedback from '../TouchableFeedback';
import NavBarStyle from '../navbarstyle';
+import Realm from '../models';
var styles = StyleSheet.create({
row: {
@@ -35,28 +38,36 @@ var styles = StyleSheet.create({
});
export default class FileList extends Component {
- constructor(){
- super();
+ state = {
+ addFile: false,
+ };
- let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
- let rows = [];
+ componentWillMount(){
+ this.onRealmUpdate();
+ }
- for(let i = 1; i <= 100; i++){
- rows.push(`File ${i}`);
- }
+ componentDidMount(){
+ Realm.addListener('change', this.onRealmUpdate);
+ }
- this.state = {
- dataSource: ds.cloneWithRows(rows),
- };
+ componentWillUnmount(){
+ Realm.removeListener('change', this.onRealmUpdate);
}
+ onRealmUpdate = () => {
+ let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
+ this.setState({
+ dataSource: ds.cloneWithRows(Realm.objects('Document'))
+ });
+ };
+
render(){
return (
Koan Deck
-
+ this.setState({addFile: true})}>
}
renderSeparator={(sectionID, rowID) => } />
+ this.setState({addFile: false})}
+ onSubmit={(value) => this.addSlide(value)}/>
);
}
@@ -73,7 +90,7 @@ export default class FileList extends Component {
return (
- {rowData}
+ {rowData.name}
);
@@ -84,4 +101,33 @@ export default class FileList extends Component {
this.props.navigator.push({name: 'Editor', index: this.props.index + 1, file: data});
};
};
-}
\ No newline at end of file
+
+ addSlide(name){
+ if(!name){
+ return;
+ }
+
+ Realm.write(() => {
+ let ids = Realm.objects('Document').sorted('id');
+ let lastId = -1;
+
+ if(ids.length > 0){
+ lastId = ids[ids.length-1].id;
+ }
+
+ Realm.create('Document', {
+ id: lastId + 1,
+ name: name,
+ slides: [{
+ text1: '',
+ text2: '',
+ image: '',
+ }],
+ });
+ });
+
+ this.setState({
+ addFile: false,
+ });
+ }
+}
diff --git a/components/models.js b/components/models.js
index 5407e54..e036a8b 100644
--- a/components/models.js
+++ b/components/models.js
@@ -4,7 +4,9 @@ export default new Realm({
schema: [
{
name: 'Document',
+ primaryKey: 'id',
properties: {
+ id: 'int',
name: 'string',
slides: {type: 'list', objectType: 'Slide'},
}
@@ -12,12 +14,13 @@ export default new Realm({
{
name: 'Slide',
properties: {
- text1: 'string',
- text2: 'string',
- text1Color: 'string',
- text2Color: 'string',
- image: 'string',
- layout: 'int',
+ text1: {type: 'string', optional: true},
+ text2: {type: 'string', optional: true},
+ text1Color: {type: 'string', default: '#000000'},
+ text2Color: {type: 'string', default: '#000000'},
+ image: {type: 'string', optional: true},
+ backgroundColor: {type: 'string', default: '#ffffff'},
+ layout: {type: 'int', default: 4},
}
}
]
diff --git a/package.json b/package.json
index adc3be8..07eea26 100644
--- a/package.json
+++ b/package.json
@@ -12,6 +12,7 @@
"react-native-nav": "^1.0.9",
"react-native-orientation": "^1.16.0",
"react-native-page-swiper": "^0.1.0",
+ "react-native-prompt": "^0.18.3",
"realm": "^0.11.1"
}
}