ManageIQ/manageiq-ui-classic

View on GitHub
app/javascript/components/miq_debug/index.jsx

Summary

Maintainability
A
35 mins
Test Coverage
import React from 'react';
import ReactDOM from 'react-dom';
 
import { ToastWrapper } from './toast-wrapper.jsx';
 
const state = {
items: [],
keyCounter: 0,
 
add: (item) => {
state.items = [...state.items, item];
state.render();
},
clear: () => {
state.items = [];
state.render();
},
disable: () => {
sessionStorage.setItem('disableDebugToasts', true);
state.clear();
},
remove: (item) => {
Unexpected parentheses around single function argument having a body with no curly braces.
state.items = state.items.filter((i) => i !== item);
state.render();
},
 
render: () => null,
};
 
// render once, and set state.render
export const renderToastWrapper = (element) => {
Expected a line break before this closing brace.
Expected a line break after this opening brace.
const render = ({ items, clear, remove, disable }) => {
ReactDOM.render(<ToastWrapper items={items} clear={clear} remove={remove} disable={disable} />, element);
};
state.render = () => render(state);
 
state.render();
};
 
Expected to return a value at the end of function.
Identifier 'debug_toast' is not in camel case.
const debug_toast = function(type, data) {
// Don't display debug toasts if the user doesn't want it
if (sessionStorage.getItem('disableDebugToasts')) {
return false;
}
 
if (type === 'warn') {
type = 'warning';
}
 
// to make sure user can see the whole error even if we show incomplete toast
console.debug('debug_toast', type, data);
 
state.add({
data,
type,
Unary operator '++' used.
key: state.keyCounter++,
});
};
 
export const setupErrorHandlers = () => {
const orig = {
error: window.console.error,
warn: window.console.warn,
};
 
Unexpected function expression.
Object.keys(orig).forEach(function(key) {
window.console[key] = function() {
Use the rest parameters instead of 'arguments'.
orig[key].apply(window.console, arguments);
Use the rest parameters instead of 'arguments'.
debug_toast(key, Array.from(arguments));
};
});
 
Function `onerror` has 5 arguments (exceeds 4 allowed). Consider refactoring.
window.onerror = function(msg, url, lineNo, columnNo, error) {
debug_toast('error', {
message: msg,
Expected property shorthand.
url: url,
Expected property shorthand.
lineNo: lineNo,
Expected property shorthand.
columnNo: columnNo,
Expected property shorthand.
error: error,
});
};
 
Unexpected function expression.
window.addEventListener('error', function(ev) {
debug_toast('error', ev);
}, true);
};