From 85b522c0d6a3dcdcf9e8ae9de52056f62cadfbcc Mon Sep 17 00:00:00 2001 From: mo khan Date: Sun, 25 Dec 2016 11:54:01 -0700 Subject: load new workout json. --- app/screens/new-workout-screen.js | 16 ++++++++++++++-- app/services/queries/fetch-new-workout.js | 23 +++++++++++++++++++++++ app/services/queries/index.js | 2 ++ 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 app/services/queries/fetch-new-workout.js 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 { ); } else { + console.log("loading new workout..."); return ( @@ -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, }; -- cgit v1.2.3