Commit 25ea2c3

mo khan <mo@mokhan.ca>
2016-11-26 06:04:35
implement logout.
1 parent 9446bbe
app/domain/application-storage.js
@@ -6,6 +6,7 @@ export default class ApplicationStorage {
     console.log(`found ${key} ${value}`);
     return value;
   }
+
   async save(key, value) {
     try {
       console.log(`storing ${key} ${value}`);
@@ -14,4 +15,12 @@ export default class ApplicationStorage {
       console.error(error.message);
     }
   }
+
+  async delete(key) {
+    try {
+      await AsyncStorage.removeItem(key);
+    } catch (error) {
+      console.error(error.message);
+    }
+  }
 }
app/screens/dashboard-screen.js
@@ -1,5 +1,6 @@
 import React, { Component } from 'react';
-import { View, Text, TouchableHighlight, AsyncStorage } from 'react-native';
+import { View, Text, Button } from 'react-native';
+import ApplicationStorage from '../domain/application-storage';
 
 export default class DashboardScreen extends Component {
   render() {
@@ -7,7 +8,26 @@ export default class DashboardScreen extends Component {
     return (
       <View>
         <Text>Welcome back !</Text>
+        <Button onPress={this.onHistory.bind(this)} title="History" />
+        <Button onPress={this.onStartWorkout.bind(this)} title="Start Workout" />
+        <Button onPress={this.onLogout.bind(this)} title="Logout" />
       </View>
     );
   }
+
+  onHistory() {
+    console.log("load previous workouts");
+  }
+
+  onStartWorkout() {
+    console.log("load previous workouts");
+  }
+
+  onLogout() {
+    console.log("logout");
+    let storage = new ApplicationStorage();
+    storage.delete('authentication_token');
+    storage.delete('username');
+    this.props.navigator.pop();
+  }
 }
app/screens/login-screen.js
@@ -17,13 +17,8 @@ export default class LoginScreen extends Component {
 
   componentDidMount() {
     let token = this.storage.fetch('authentication_token');
-    let username = this.storage.fetch('username');
-
-    console.log(username);
-    if (token) {
-      this.props.navigator.push({
-        component: DashboardScreen, params: { username: username }
-      });
+    if (token != null) {
+      this.openDashboard(this.storage.fetch('username'))
     }
   }
 
@@ -51,7 +46,14 @@ export default class LoginScreen extends Component {
         console.log(json);
         that.storage.save("authentication_token", json.token);
         that.storage.save("username", value.username);
+        that.openDashboard(value.username);
       });
     }
   }
+
+  openDashboard(username) {
+    this.props.navigator.push({
+      component: DashboardScreen, params: { username: username }
+    });
+  }
 }