64 lines
1.6 KiB
JavaScript
64 lines
1.6 KiB
JavaScript
var Action = require('thundercats').Action,
|
|
executeBonfire = require('./executeBonfire'),
|
|
getModel = require('../../utils/getModel'),
|
|
debug = require('debug')('freecc:common:bonfires');
|
|
|
|
var BonfireActions = Action.createActions([
|
|
'setUserCode',
|
|
'testUserCode',
|
|
'setResults',
|
|
'setDisplay',
|
|
'setBonfire',
|
|
'getBonfire',
|
|
'handleBonfireError',
|
|
'openCompletionModal'
|
|
]);
|
|
|
|
BonfireActions
|
|
.getBonfire
|
|
.subscribe(function(params) {
|
|
var Bonfire = getModel('bonfire');
|
|
var bonfireName = params.bonfireName ?
|
|
params.bonfireName.replace(/\-/g, ' ') :
|
|
'meet bonfire';
|
|
debug('getting bonfire for: ', bonfireName);
|
|
var regQuery = { name: { like: bonfireName, options: 'i' } };
|
|
Bonfire.find(
|
|
{ where: regQuery },
|
|
function(err, bonfire) {
|
|
if (err) {
|
|
return debug('bonfire get err', err);
|
|
}
|
|
if (!bonfire || bonfire.length < 1) {
|
|
return debug('404 no bonfire found for ', bonfireName);
|
|
}
|
|
bonfire = bonfire.pop();
|
|
if (bonfire) {
|
|
debug(
|
|
'found bonfire %s for route %s',
|
|
bonfire.name,
|
|
bonfireName
|
|
);
|
|
}
|
|
BonfireActions.setBonfire(bonfire);
|
|
}
|
|
);
|
|
});
|
|
|
|
|
|
BonfireActions
|
|
.testUserCode
|
|
.subscribe(function({ userCode, tests }) {
|
|
debug('test bonfire');
|
|
executeBonfire(userCode, tests, function(err, { output, results }) {
|
|
if (err) {
|
|
debug('error running tests', err);
|
|
return BonfireActions.setDisplay(err);
|
|
}
|
|
BonfireActions.setDisplay(output);
|
|
BonfireActions.setResults(results);
|
|
});
|
|
});
|
|
|
|
module.exports = BonfireActions;
|