Commit 85b522c

mo khan <mo@mokhan.ca>
2016-12-25 18:54:01
load new workout json.
1 parent 305fd69
Changed files (3)
app/screens/new-workout-screen.js
@@ -14,8 +14,7 @@ export default class NewWorkoutScreen extends Screen {
 
   componentDidMount() {
     super.componentDidMount();
-    this.publish(events.FETCH_NEW_WORKOUT);
-    this.setState({ isLoading: true });
+    this.onLoadWorkout()
   }
 
   render() {
@@ -27,6 +26,7 @@ export default class NewWorkoutScreen extends Screen {
         </Container>
       );
     } else {
+      console.log("loading new workout...");
       return (
         <Container>
           <Content>
@@ -36,4 +36,16 @@ export default class NewWorkoutScreen extends Screen {
       );
     }
   }
+
+  onLoadWorkout() {
+    this.setState({ isLoading: true });
+    this.publish({ event: events.FETCH_NEW_WORKOUT });
+  }
+
+  notify(event) {
+    switch(event.event) {
+      case events.FETCH_NEW_WORKOUT:
+        this.setState({ isLoading: false, ...event });
+    }
+  }
 }
app/services/queries/fetch-new-workout.js
@@ -0,0 +1,23 @@
+import * as events from '../events';
+
+export default class FetchNewWorkout {
+  constructor(eventAggregator, api) {
+    this.eventAggregator = eventAggregator;
+    this.api = api;
+  }
+
+  subscribeTo(eventAggregator) {
+    eventAggregator.subscribe(events.FETCH_NEW_WORKOUT, this);
+  }
+
+  notify(event) {
+    this.api.get('/workouts/new', this.onResponse.bind(this));
+  }
+
+  onResponse(json) {
+    this.eventAggregator.publish({
+      event: events.FETCHED_NEW_WORKOUT,
+      ...json
+    });
+  }
+}
app/services/queries/index.js
@@ -1,5 +1,7 @@
 import FetchWorkouts from './fetch-workouts';
+import FetchNewWorkout from './fetch-new-workout';
 
 export {
+  FetchNewWorkout,
   FetchWorkouts,
 };