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 (
-
- )
+import { shell } from 'electron'
+import logger from '../../../logger'
+
+import { defineMessages, useIntl } from 'react-intl'
+
+const m = defineMessages({
+ openLog: 'Open log...',
+ close: 'Close'
+})
+
+export default ({ onClose, open, message }) => {
+ const { formatMessage: t } = useIntl()
+
+ const handleDownload = event => {
+ shell.openPath(logger.errorFilename)
}
+
+ return (
+
+ )
}