Commit e6b408f

mo khan <mo@mokhan.ca>
2016-11-26 05:17:15
extract application storage.
1 parent 5101c6c
Changed files (2)
app/domain/application-storage.js
@@ -0,0 +1,13 @@
+import { View, Text, TouchableHighlight, AsyncStorage } from 'react-native';
+
+export default class ApplicationStorage {
+  fetch(key) {
+    const value = await AsyncStorage.getItem(key);
+    console.log(`found ${key} ${value}`);
+    return value;
+  }
+  save(key, value) {
+    console.log(`storing ${key} ${value}`);
+    AsyncStorage.setItem(key, value);
+  }
+}
app/screens/login-screen.js
@@ -1,8 +1,9 @@
 import React, { Component } from 'react';
 import { View, Text, TouchableHighlight, AsyncStorage } from 'react-native';
-import Movies from '../components/movies';
 import Account from '../domain/account'
 import Api from '../services/api'
+import ApplicationStorage from '../domain/application-storage'
+import Movies from '../components/movies';
 
 var t = require('tcomb-form-native');
 var Form = t.form.Form;
@@ -11,6 +12,18 @@ export default class LoginScreen extends Component {
   static get defaultProps() {
     return { title: 'LoginScreen' };
   }
+  constructor(props) {
+    super(props)
+    this.storage = new ApplicationStorage();
+  }
+
+  componentDidMount() {
+    debugger
+    let token = this.storage.fetch('authentication_token');
+    if (token) {
+      this.props.navigator.push({component: Movies, params: {}});
+    }
+  }
 
   render() {
     return (
@@ -50,12 +63,8 @@ export default class LoginScreen extends Component {
       let that = this;
       new Api('/api/sessions').post(body, (json) => {
         console.log(json);
-        that.storeToken("authentication_token", json.token)
+        that.storage.save("authentication_token", json.token);
       });
     }
   }
-
-  storeToken(key, value) {
-    AsyncStorage.setItem(key, value);
-  }
 }