diff --git a/common/app/routes/Jobs/components/Jobs.jsx b/common/app/routes/Jobs/components/Jobs.jsx index 4e96e483ba..3da2522037 100644 --- a/common/app/routes/Jobs/components/Jobs.jsx +++ b/common/app/routes/Jobs/components/Jobs.jsx @@ -5,7 +5,7 @@ import { Grid, Row } from 'react-bootstrap'; export default contain( { store: 'jobsStore', - actions: 'jobActions' + fetchAction: 'jobActions.getJobs' }, React.createClass({ displayName: 'Jobs', diff --git a/common/app/routes/Jobs/flux/Actions.js b/common/app/routes/Jobs/flux/Actions.js index 479b2fdbf5..68d5eeae57 100644 --- a/common/app/routes/Jobs/flux/Actions.js +++ b/common/app/routes/Jobs/flux/Actions.js @@ -1,6 +1,10 @@ import { Actions } from 'thundercats'; +import debugFactory from 'debug'; + +const debug = debugFactory('freecc:jobs:actions'); export default Actions({ + setJobs: null, getJob(id) { return { id }; }, @@ -8,4 +12,16 @@ export default Actions({ return { params }; } }) - .refs({ displayName: 'JobsActions' }); + .refs({ displayName: 'JobActions' }) + .init(({ instance: jobActions, args: [services] }) => { + jobActions.getJobs.subscribe(() => { + services.read('job', null, null, (err, jobs) => { + if (err) { + debug('job services experienced an issue', err); + jobActions.setJobs({ jobs: [] }); + } + jobActions.setJobs({ jobs }); + }); + }); + return jobActions; + }); diff --git a/common/app/routes/Jobs/flux/Store.js b/common/app/routes/Jobs/flux/Store.js index fc1856613b..803bc7b0bd 100644 --- a/common/app/routes/Jobs/flux/Store.js +++ b/common/app/routes/Jobs/flux/Store.js @@ -1,8 +1,10 @@ import { Store } from 'thundercats'; +const { setter } = Store; + export default Store() .refs({ displayName: 'JobsStore' }) .init(({ instance: jobsStore, args: [cat] }) => { - let jobsActions = cat.getActions('JobsActions'); - jobsStore.register(jobsActions.getJob); + let jobActions = cat.getActions('JobActions'); + jobsStore.register(setter(jobActions.setJobs)); }); diff --git a/server/boot/a-services.js b/server/boot/a-services.js index a93cc217c9..9c2607c7b9 100644 --- a/server/boot/a-services.js +++ b/server/boot/a-services.js @@ -1,11 +1,15 @@ import Fetchr from 'fetchr'; import getHikesService from '../services/hikes'; +import getJobServices from '../services/job'; import getUserServices from '../services/user'; export default function bootServices(app) { const hikesService = getHikesService(app); + const jobServices = getJobServices(app); const userServices = getUserServices(app); + Fetchr.registerFetcher(hikesService); + Fetchr.registerFetcher(jobServices); Fetchr.registerFetcher(userServices); app.use('/services', Fetchr.middleware()); } diff --git a/server/services/job.js b/server/services/job.js new file mode 100644 index 0000000000..8c38a3661a --- /dev/null +++ b/server/services/job.js @@ -0,0 +1,12 @@ +export default function getJobServices(app) { + const { Job } = app.models; + + return { + name: 'job', + read: (req, resource, params, config, cb) => { + Job.find({}, (err, jobs) => { + cb(err, jobs); + }); + } + }; +}