Commit 85b522c
Changed files (3)
app
screens
services
queries
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,
};