2018-08-17 16:09:36 +12:00
|
|
|
|
2018-09-30 20:09:12 +13:00
|
|
|
var helpers = require('./../../helpers');
|
|
|
|
|
var coreActions = require('../core/actions');
|
|
|
|
|
var geniusActions = require('./actions');
|
2018-08-17 16:09:36 +12:00
|
|
|
|
|
|
|
|
const GeniusMiddleware = (function(){
|
|
|
|
|
return store => next => action => {
|
|
|
|
|
var state = store.getState();
|
|
|
|
|
|
|
|
|
|
switch(action.type){
|
|
|
|
|
|
|
|
|
|
case 'GENIUS_ME_LOADED':
|
2018-09-12 21:42:55 +12:00
|
|
|
var me = helpers.formatUser(action.me);
|
|
|
|
|
Object.assign(
|
|
|
|
|
me,
|
|
|
|
|
{
|
|
|
|
|
uri: "genius:user:"+me.id
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
2018-08-17 16:09:36 +12:00
|
|
|
store.dispatch({
|
|
|
|
|
type: 'GENIUS_USER_LOADED',
|
|
|
|
|
user: action.me
|
|
|
|
|
});
|
2018-09-12 21:42:55 +12:00
|
|
|
action.me = me;
|
2018-08-17 16:09:36 +12:00
|
|
|
next(action);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'GENIUS_USER_LOADED':
|
2018-09-12 21:42:55 +12:00
|
|
|
var user = helpers.formatUser(action.user);
|
|
|
|
|
Object.assign(
|
|
|
|
|
user,
|
2018-08-17 16:09:36 +12:00
|
|
|
{
|
2018-09-12 21:42:55 +12:00
|
|
|
uri: "genius:user:"+user.id
|
2018-08-17 16:09:36 +12:00
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
store.dispatch(coreActions.userLoaded(user));
|
2018-09-12 21:42:55 +12:00
|
|
|
action.user = user;
|
2018-08-17 16:09:36 +12:00
|
|
|
next(action);
|
|
|
|
|
break;
|
|
|
|
|
|
2018-09-30 20:09:12 +13:00
|
|
|
case 'GENIUS_IMPORT_AUTHORIZATION':
|
|
|
|
|
|
|
|
|
|
// Wait a few moments before we fetch, allowing the import to complete first
|
|
|
|
|
// TODO: Use callbacks for better code accuracy
|
|
|
|
|
setTimeout(() => {store.dispatch(geniusActions.getMe())}, 100);
|
|
|
|
|
|
|
|
|
|
next(action);
|
|
|
|
|
break;
|
|
|
|
|
|
2018-08-17 16:09:36 +12:00
|
|
|
|
|
|
|
|
// This action is irrelevant to us, pass it on to the next middleware
|
|
|
|
|
default:
|
|
|
|
|
return next(action);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
})();
|
|
|
|
|
|
|
|
|
|
export default GeniusMiddleware
|