Files
talk/plugins/talk-plugin-toxic-comments/server/hooks.js
T
2017-09-18 22:39:30 +07:00

48 lines
1.1 KiB
JavaScript

const {getScores, isToxic} = require('./perspective');
const {ErrToxic} = require('./errors');
// We don't add the hooks during _test_ as the perspective API is not available.
if (process.env.NODE_ENV === 'test') {
return null;
}
module.exports = {
RootMutation: {
createComment: {
async pre(_, {input}, _context, _info) {
// Try getting scores.
let scores;
try {
scores = await getScores(input.body);
} catch(err) {
// Warn and let mutation pass.
console.trace(err);
return;
}
// Attach scores to metadata.
input.metadata = Object.assign({}, input.metadata, {
perspective: scores,
});
if (isToxic(scores)) {
if (input.checkToxicity) {
throw ErrToxic;
}
input.status = 'SYSTEM_WITHHELD';
input.actions = input.actions && input.actions.length >= 0 ? input.actions : [];
input.actions.push({
action_type: 'FLAG',
user_id: null,
group_id: 'TOXIC_COMMENT',
metadata: {}
});
}
},
},
},
};