summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2016-12-25 11:54:01 -0700
committermo khan <mo@mokhan.ca>2016-12-25 11:54:01 -0700
commit85b522c0d6a3dcdcf9e8ae9de52056f62cadfbcc (patch)
treecf2d3534e7b38875d5f4eed1debcf23b7757585c
parent305fd69a76991bfc9011878efa54cfb001f2613e (diff)
load new workout json.
-rw-r--r--app/screens/new-workout-screen.js16
-rw-r--r--app/services/queries/fetch-new-workout.js23
-rw-r--r--app/services/queries/index.js2
3 files changed, 39 insertions, 2 deletions
diff --git a/app/screens/new-workout-screen.js b/app/screens/new-workout-screen.js
index 5c87bfc..0958603 100644
--- a/app/screens/new-workout-screen.js
+++ b/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 });
+ }
+ }
}
diff --git a/app/services/queries/fetch-new-workout.js b/app/services/queries/fetch-new-workout.js
new file mode 100644
index 0000000..e0203ea
--- /dev/null
+++ b/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
+ });
+ }
+}
diff --git a/app/services/queries/index.js b/app/services/queries/index.js
index 30087f6..03b649c 100644
--- a/app/services/queries/index.js
+++ b/app/services/queries/index.js
@@ -1,5 +1,7 @@
import FetchWorkouts from './fetch-workouts';
+import FetchNewWorkout from './fetch-new-workout';
export {
+ FetchNewWorkout,
FetchWorkouts,
};