mattermost/webapp/platform/eslint-plugin/rules/no-dispatch-getstate.js
Harrison Healey ff929e4a15
Move the shared ESLint plugin/config into the monorepo (#24670)
* Move the shared ESLint plugin/config into the monorepo

* Add peer dependencies to ESLint plugin
2023-10-05 14:47:51 -04:00

49 lines
1.7 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
module.exports = {
meta: {
type: 'problem',
fixable: 'code',
messages: {
unexpected: 'Unexpected second argument passed to dispatch. getState does not need to be passed into dispatch.',
},
},
create(context) {
function checkDispatch(node) {
const args = node.arguments;
if (args.length === 2) {
context.report({
node,
messageId: 'unexpected',
fix(fixer) {
const sourceCode = context.getSourceCode();
const before = sourceCode.getTokenBefore(args[1]);
const after = sourceCode.getTokenAfter(args[1]);
// Remove the getState argument and the preceding comma
const fixes = [
fixer.remove(before),
fixer.remove(args[1]),
];
// And remove the trailing comma if one exists
if (after.type === 'Punctuator' && after.value === ',') {
fixes.push(fixer.remove(after));
}
// Note that this sometimes mangles the whitespace slightly
return fixes;
},
});
}
}
return {
"CallExpression[callee.name='dispatch']": checkDispatch,
"CallExpression[callee.name='doDispatch']": checkDispatch,
};
},
};