Skip to content

Instantly share code, notes, and snippets.

@iamdustan
Created May 26, 2015 12:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iamdustan/98a8039e7fe056f61d88 to your computer and use it in GitHub Desktop.
Save iamdustan/98a8039e7fe056f61d88 to your computer and use it in GitHub Desktop.
/* @flow weak */
var AppDispatcher = require('./Dispatcher');
var Constants = require('./Constants');
var find = require('../utils/find');
var __APP_SERVER__ = 'http://localhost:3500';
var Cache = {};
var Actions = {
getPersona(id: String, fields: Array): Promise {
if (!Cache.personas) {
Cache.personas = [];
console.log('fetching %s', id);
return fetch(`${__APP_SERVER__}/api/${id}`)
.then(n => n.json())
.then(newPersona => {
console.log('return new Persona', newPersona);
Cache.personas = Cache.personas.concat(newPersona);
return newPersona;
});
}
var target = find(Cache.personas, p => p.id === id);
return new Promise((resolve, reject) => resolve(target));
},
getPersonas(count: Number): Promise {
if (!Cache.personas) Cache.personas = [];
if (Cache.personas.length === 0) {
return fetch(`${__APP_SERVER__}/api/`)
.then(n => n.json())
.then(newPersonas => {
Cache.personas = Cache.personas.concat(newPersonas);
Cache.personas.sort((a, b) => {
if (a.id < b.id) return -1;
if (a.id > b.id) return 1;
return 0;
});
AppDispatcher.dispatch({
actionType: Constants.UPDATE_PERSONAS,
data: Cache.personas,
});
return Cache.personas;
});
}
},
};
module.exports = Actions;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment