diff --git a/circle.yml b/circle.yml index 5a5b2462..08b563b8 100644 --- a/circle.yml +++ b/circle.yml @@ -10,9 +10,12 @@ machine: - docker dependencies: + cache_directories: + - "~/.electron" + - "src/node_modules" post: - - docker build -t yuya-oc/em-builder docker - - docker run --rm -it -v `pwd`:/home/xclient/electron-mattermost yuya-oc/em-builder ./electron-mattermost/docker/package_in_docker.sh + - mkdir -p ~/.electron + - docker run --rm -it -v `pwd`:/home/xclient/electron-mattermost -v ~/.electron:/home/xclient/.electron yuyaoc/em-builder:dev ./electron-mattermost/docker/package_in_docker.sh - mv release/electron-mattermost-win32-ia32 release/electron-mattermost-win32 - mv release/electron-mattermost-win32-x64 release/electron-mattermost-win64 - mv release/electron-mattermost-darwin-x64 release/electron-mattermost-osx diff --git a/gulpfile.js b/gulpfile.js index ffd8b459..4042483e 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -13,7 +13,7 @@ var electron = require('electron-connect').server.create({ }); var packager = require('electron-packager'); -var sources = ['**/*.js', '**/*.css', '**/*.html', '!**/node_modules/**', '!**/build/**', '!release/**']; +var sources = ['**/*.js', '**/*.css', '**/*.html', '!**/node_modules/**', '!dist/**', '!release/**']; gulp.task('prettify', ['prettify:sources', 'prettify:jsx']); diff --git a/package.json b/package.json index c81512be..50b9969c 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "del": "^2.2.0", "electron-connect": "^0.3.3", "electron-packager": "^5.1.0", - "electron-prebuilt": "0.36.3", + "electron-prebuilt": "0.36.7", "esformatter": "^0.8.1", "esformatter-jsx": "^4.0.6", "gulp": "^3.9.0", diff --git a/src/browser/index.jsx b/src/browser/index.jsx index dc3324b3..a1097c75 100644 --- a/src/browser/index.jsx +++ b/src/browser/index.jsx @@ -142,7 +142,7 @@ var MainPage = React.createClass({ var handleNotificationClick = function() { thisObj.handleSelect(index); } - return () }); var views_row = ( @@ -268,12 +268,26 @@ var MattermostView = React.createClass({ case 'onNotificationClick': thisObj.props.onNotificationClick(); break; - case 'console': - console.log(event.args[0]); - break; } }); + webview.addEventListener('console-message', (e) => { + const message = `[${this.props.name}] ${e.message}`; + switch (e.level) { + case 0: + console.log(message); + break; + case 1: + console.warn(message); + break; + case 2: + console.error(message); + break; + default: + console.log(message); + break; + } + }); }, render: function() { // 'disablewebsecurity' is necessary to display external images. diff --git a/src/browser/webview/mattermost.js b/src/browser/webview/mattermost.js index 6f1c2c98..6e6f8bf5 100644 --- a/src/browser/webview/mattermost.js +++ b/src/browser/webview/mattermost.js @@ -42,13 +42,18 @@ var unreadCountTimer = setInterval(function() { // find active post-list. var postLists = document.querySelectorAll('div.post-list__content'); - var post; + if (postLists.length === 0) { + return; + } + var post = null; for (var i = 0; i < postLists.length; i++) { if (isElementVisible(postLists[i])) { post = postLists[i].children[0]; } } - + if (post === null) { + return; + } // find latest post and save. while (post = post.nextSibling) { if (post.nextSibling === null) { diff --git a/src/main.js b/src/main.js index 8df87f72..c071f3fe 100644 --- a/src/main.js +++ b/src/main.js @@ -111,10 +111,10 @@ app.on('ready', function() { } // Create the browser window. - var bounds_info_path = app.getPath("userData") + "/bounds-info.json"; + var bounds_info_path = path.resolve(app.getPath("userData"), "bounds-info.json"); var window_options; try { - window_options = require(bounds_info_path); + window_options = JSON.parse(fs.readFileSync(bounds_info_path, 'utf-8')); } catch (e) { // follow Electron's defaults