Adding ability to send error object to notify() (#2955)

This commit is contained in:
Sonny 2018-05-02 01:10:44 -07:00 committed by CHaBou
parent 9232875b2b
commit f64e3e0204
6 changed files with 39 additions and 35 deletions

View file

@ -15,9 +15,7 @@ const _syntaxValidation = function(cfg) {
try {
return new vm.Script(cfg, {filename: '.hyper.js', displayErrors: true});
} catch (err) {
notify('Error loading config:', `${err.name}, see DevTools for more info`);
//eslint-disable-next-line no-console
console.error('Error loading config:', err);
notify('Error loading config:', `${err.name}, see DevTools for more info`, {error: err});
}
};

View file

@ -27,9 +27,13 @@ app.on('ready', () => {
});
});
function notify(title, body) {
function notify(title, body, details = {}) {
//eslint-disable-next-line no-console
console.log(`[Notification] ${title}: ${body}`);
if (details.error) {
//eslint-disable-next-line no-console
console.error(details.error);
}
if (win) {
win.webContents.send('notification', {title, body});
} else {

View file

@ -66,7 +66,7 @@ function updatePlugins({force = false} = {}) {
if (err) {
//eslint-disable-next-line no-console
notify('Error updating plugins.', err);
notify('Error updating plugins.', err, {error: err});
} else {
// flag successful plugin update
cache.set('hyper.plugins', id_);
@ -257,9 +257,7 @@ function requirePlugins() {
//eslint-disable-next-line no-console
console.warn(`Plugin "${basename(path_)}" not found: ${path_}`);
} else {
//eslint-disable-next-line no-console
console.error(err);
notify('Plugin error!', `Plugin "${basename(path_)}" failed to load (${err.message})`);
notify('Plugin error!', `Plugin "${basename(path_)}" failed to load (${err.message})`, {error: err});
}
}
};
@ -276,7 +274,9 @@ exports.onApp = app_ => {
try {
plugin.onApp(app_);
} catch (e) {
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`);
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`, {
error: e
});
}
}
});
@ -288,7 +288,9 @@ exports.onWindow = win => {
try {
plugin.onWindow(win);
} catch (e) {
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`);
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`, {
error: e
});
}
}
});
@ -304,7 +306,7 @@ function decorateObject(base, key) {
try {
res = plugin[key](decorated);
} catch (e) {
notify('Plugin error!', `"${plugin._name}" when decorating ${key}`);
notify('Plugin error!', `"${plugin._name}" when decorating ${key}`, {error: e});
return;
}
if (res && typeof res === 'object') {
@ -330,7 +332,9 @@ exports.getDeprecatedConfig = () => {
try {
configTmp = plugin.decorateConfig(JSON.parse(JSON.stringify(baseConfig)));
} catch (e) {
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`);
notify('Plugin error!', `"${plugin._name}" has encountered an error. Check Developer Tools for details.`, {
error: e
});
return;
}
const pluginCSSDeprecated = config.getDeprecatedCSS(configTmp);

View file

@ -258,9 +258,7 @@ export function openFile(path) {
effect() {
stat(path, (err, stats) => {
if (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify('Unable to open path', `"${path}" doesn't exist.`);
notify('Unable to open path', `"${path}" doesn't exist.`, {error: err});
} else {
let command = escapeShellCmd(path).replace(/ /g, '\\ ');
if (stats.isDirectory()) {

View file

@ -1,7 +1,11 @@
/* global Notification */
/* eslint no-new:0 */
export default function notify(title, body) {
export default function notify(title, body, details = {}) {
//eslint-disable-next-line no-console
console.log(`[Notification] ${title}: ${body}`);
if (details.error) {
//eslint-disable-next-line no-console
console.error(details.error);
}
new Notification(title, {body});
}

View file

@ -137,11 +137,10 @@ const loadModules = () => {
try {
mod = window.require(path);
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify(
'Plugin load error',
`"${pluginName}" failed to load in the renderer process. Check Developer Tools for details.`
`"${pluginName}" failed to load in the renderer process. Check Developer Tools for details.`,
{error: err}
);
return undefined;
}
@ -276,9 +275,9 @@ function getProps(name, props, ...fnArgs) {
try {
ret_ = fn(...fnArgs, props_);
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify('Plugin error', `${fn._pluginName}: Error occurred in \`${name}\`. Check Developer Tools for details.`);
notify('Plugin error', `${fn._pluginName}: Error occurred in \`${name}\`. Check Developer Tools for details.`, {
error: err
});
return;
}
@ -323,11 +322,10 @@ export function connect(stateFn, dispatchFn, c, d = {}) {
try {
ret_ = fn(state, ret);
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify(
'Plugin error',
`${fn._pluginName}: Error occurred in \`map${name}State\`. Check Developer Tools for details.`
`${fn._pluginName}: Error occurred in \`map${name}State\`. Check Developer Tools for details.`,
{error: err}
);
return;
}
@ -349,11 +347,10 @@ export function connect(stateFn, dispatchFn, c, d = {}) {
try {
ret_ = fn(dispatch, ret);
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify(
'Plugin error',
`${fn._pluginName}: Error occurred in \`map${name}Dispatch\`. Check Developer Tools for details.`
`${fn._pluginName}: Error occurred in \`map${name}Dispatch\`. Check Developer Tools for details.`,
{error: err}
);
return;
}
@ -387,9 +384,9 @@ function decorateReducer(name, fn) {
try {
state__ = pluginReducer(state_, action);
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify('Plugin error', `${fn._pluginName}: Error occurred in \`${name}\`. Check Developer Tools for details.`);
notify('Plugin error', `${fn._pluginName}: Error occurred in \`${name}\`. Check Developer Tools for details.`, {
error: err
});
return;
}
@ -436,7 +433,7 @@ function exposeDecorated(Component_) {
try {
this.props.onDecorated(decorated_);
} catch (e) {
notify('Plugin error', `Error occurred. Check Developer Tools for details`);
notify('Plugin error', `Error occurred. Check Developer Tools for details`, {error: e});
}
}
}
@ -462,11 +459,10 @@ function getDecorated(parent, name) {
class__ = fn(class_, {React, PureComponent, Notification, notify});
class__.displayName = `${fn._pluginName}(${name})`;
} catch (err) {
//eslint-disable-next-line no-console
console.error(err.stack);
notify(
'Plugin error',
`${fn._pluginName}: Error occurred in \`${method}\`. Check Developer Tools for details`
`${fn._pluginName}: Error occurred in \`${method}\`. Check Developer Tools for details`,
{error: err}
);
return;
}