diff options
| author | mo khan <mo@mokhan.ca> | 2016-12-25 11:54:01 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2016-12-25 11:54:01 -0700 |
| commit | 85b522c0d6a3dcdcf9e8ae9de52056f62cadfbcc (patch) | |
| tree | cf2d3534e7b38875d5f4eed1debcf23b7757585c /app | |
| parent | 305fd69a76991bfc9011878efa54cfb001f2613e (diff) | |
load new workout json.
Diffstat (limited to 'app')
| -rw-r--r-- | app/screens/new-workout-screen.js | 16 | ||||
| -rw-r--r-- | app/services/queries/fetch-new-workout.js | 23 | ||||
| -rw-r--r-- | app/services/queries/index.js | 2 |
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, }; |
