From 6a198bca6fc4f25318802beaba36746b90695d25 Mon Sep 17 00:00:00 2001 From: okdistribute <633012+okdistribute@users.noreply.github.com> Date: Mon, 12 Oct 2020 15:24:43 -0700 Subject: [PATCH] fix: Improve styling of Error handling & add open log button --- index.js | 26 +++++++++------ src/logger.js | 5 +++ src/renderer/components/dialogs/Error.js | 42 +++++++++++++++++------- 3 files changed, 52 insertions(+), 21 deletions(-) diff --git a/index.js b/index.js index 746ad896a..217f18459 100755 --- a/index.js +++ b/index.js @@ -99,9 +99,22 @@ const main = new Main({ isDev }) +function ipcSend (...args) { + try { + if (win && win.webContents) { + win.webContents.send.apply(win.webContents, args) + return true + } else return false + } catch (e) { + logger.error('exception win.webContents.send', args, e.stack) + return false + } +} + function onError (err) { - logger.info('SHOWING ERROR BOX') - electron.dialog.showErrorBox('Error', err.toString()) + if (!ipcSend('error', err.toString())) { + electron.dialog.showErrorBox('Error', err.toString()) + } } main.on('error', onError) @@ -218,7 +231,7 @@ function initDirectories (done) { chmod(path.join(userDataPath, 'presets'), '0700', (err) => { if (err) logger.error('Failed to execute chmod on presets', err) chmod(path.join(userDataPath, 'styles'), '0700', (err) => { - if (err) logger.error('Failed to execute chmod on styles', err) + if (err && !err.message.includes('asar')) logger.error('Failed to execute chmod on styles', err) done() }) }) @@ -227,13 +240,6 @@ function initDirectories (done) { function createServers (done) { // Set up Electron IPC bridge with frontend in electron-renderer process - function ipcSend (...args) { - try { - if (win && win.webContents) win.webContents.send.apply(win.webContents, args) - } catch (e) { - logger.error('exception win.webContents.send', args, e.stack) - } - } electronIpc(ipcSend) // Start Mapeo HTTP Servers diff --git a/src/logger.js b/src/logger.js index 93c84a9cd..3f654444b 100644 --- a/src/logger.js +++ b/src/logger.js @@ -2,6 +2,7 @@ const winston = require('winston') const path = require('path') const DailyRotateFile = require('winston-daily-rotate-file') const util = require('util') +const { format } = require('date-fns') const store = require('./store') const appVersion = require('../package.json').version @@ -72,6 +73,10 @@ class Logger { if (this._messageQueue.length > 0) this._drainQueue() } + get errorFilename () { + return path.join(this.dirname, format(Date.now(), 'yyyy-MM') + '.error.log') + } + debugging (debug) { this._level(debug ? 'debug' : 'info') store.set('debugging', debug) diff --git a/src/renderer/components/dialogs/Error.js b/src/renderer/components/dialogs/Error.js index 520e5559c..3b8b14f95 100644 --- a/src/renderer/components/dialogs/Error.js +++ b/src/renderer/components/dialogs/Error.js @@ -1,18 +1,38 @@ import React from 'react' +import TextareaAutosize from '@material-ui/core/TextareaAutosize' import Dialog from '@material-ui/core/Dialog' import DialogContent from '@material-ui/core/DialogContent' +import DialogActions from '@material-ui/core/DialogActions' import DialogTitle from '@material-ui/core/DialogTitle' +import Button from '@material-ui/core/Button' -export default class ErrorDialog extends React.Component { - render () { - // TODO: escape this html for displaying newlines - return ( - - Error - -