From 98855de71fc7d2f2bcb1f47087237d840484ae0a Mon Sep 17 00:00:00 2001 From: Michael Teeuw Date: Sat, 31 Dec 2016 21:25:49 +0100 Subject: [PATCH 1/9] Changes in preperation of 2.1.1 --- CHANGELOG.md | 2 ++ package.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9551b79..94fc3495 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,8 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [2.1.1] - Unreleased + ## [2.1.0] - 2016-12-31 **Note:** This update uses new dependencies. Please update using the following command: `git pull && npm install` diff --git a/package.json b/package.json index 118c9837..54c60f92 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "magicmirror", - "version": "2.1.0", + "version": "2.1.1", "description": "A modular interface for smart mirrors.", "main": "js/electron.js", "scripts": { From 3947deb7bdedba7b4e43690c49d00866319ae282 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Wed, 7 Dec 2016 17:19:05 +0100 Subject: [PATCH 2/9] Add async callback to module when loaded --- js/app.js | 54 ++++++++++++++--------- modules/README.md | 15 +++++++ modules/node_modules/node_helper/index.js | 5 +++ 3 files changed, 54 insertions(+), 20 deletions(-) diff --git a/js/app.js b/js/app.js index ba6cd1a9..91149906 100644 --- a/js/app.js +++ b/js/app.js @@ -66,7 +66,7 @@ var App = function() { * * argument module string - The name of the module (including subpath). */ - var loadModule = function(module) { + var loadModule = function(module, callback) { var elements = module.split("/"); var moduleName = elements[elements.length - 1]; @@ -103,6 +103,10 @@ var App = function() { m.setName(moduleName); m.setPath(path.resolve(moduleFolder)); nodeHelpers.push(m); + + m.loaded(callback); + } else { + callback(); } }; @@ -111,14 +115,24 @@ var App = function() { * * argument module string - The name of the module (including subpath). */ - var loadModules = function(modules) { + var loadModules = function(modules, callback) { console.log("Loading module helpers ..."); - for (var m in modules) { - loadModule(modules[m]); - } + var loadNextModule = function() { + if (modules.length > 0) { + var nextModule = modules[0]; + loadModule(nextModule, function() { + modules = modules.slice(1); + loadNextModule(); + }); + } else { + // All modules are loaded + console.log("All module helpers loaded."); + callback(); + } + }; - console.log("All module helpers loaded."); + loadNextModule(); }; /* cmpVersions(a,b) @@ -164,24 +178,24 @@ var App = function() { } } - loadModules(modules); + loadModules(modules, function() { + var server = new Server(config, function(app, io) { + console.log("Server started ..."); - var server = new Server(config, function(app, io) { - console.log("Server started ..."); + for (var h in nodeHelpers) { + var nodeHelper = nodeHelpers[h]; + nodeHelper.setExpressApp(app); + nodeHelper.setSocketIO(io); + nodeHelper.start(); + } - for (var h in nodeHelpers) { - var nodeHelper = nodeHelpers[h]; - nodeHelper.setExpressApp(app); - nodeHelper.setSocketIO(io); - nodeHelper.start(); - } + console.log("Sockets connected & modules started ..."); - console.log("Sockets connected & modules started ..."); - - if (typeof callback === "function") { - callback(config); - } + if (typeof callback === "function") { + callback(config); + } + }); }); }); }; diff --git a/modules/README.md b/modules/README.md index 42a31dfa..03664b15 100644 --- a/modules/README.md +++ b/modules/README.md @@ -96,6 +96,21 @@ requiresVersion: "2.1.0", ####`init()` This method is called when a module gets instantiated. In most cases you do not need to subclass this method. +####`loaded(callback)` + +*Introduced in version: 2.1.1.* + +This method is called when a module is loaded. Subsequent modules in the config are not yet loaded. The `callback` function MUST be called when the module is done loading. In most cases you do not need to subclass this method. + +**Example:** +````javascript +loaded: function(callback) { + this.finishLoading(); + Log.log(this.name + ' is loaded!'); + callback(); +} +```` + ####`start()` This method is called when all modules are loaded an the system is ready to boot up. Keep in mind that the dom object for the module is not yet created. The start method is a perfect place to define any additional module properties: diff --git a/modules/node_modules/node_helper/index.js b/modules/node_modules/node_helper/index.js index dc57ef36..bdeccf8b 100644 --- a/modules/node_modules/node_helper/index.js +++ b/modules/node_modules/node_helper/index.js @@ -14,6 +14,11 @@ NodeHelper = Class.extend({ console.log("Initializing new module helper ..."); }, + loaded: function(callback) { + console.log("Module helper loaded: " + this.name); + callback(); + }, + start: function() { console.log("Staring module helper: " + this.name); }, From a7619771a637e165dc706f56a992e1e6ea6cec46 Mon Sep 17 00:00:00 2001 From: Ben Brosnahan Date: Mon, 2 Jan 2017 21:31:21 +0000 Subject: [PATCH 3/9] Add error handling to newsfeed --- modules/default/newsfeed/fetcher.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/modules/default/newsfeed/fetcher.js b/modules/default/newsfeed/fetcher.js index b7511de9..f4fb44d9 100644 --- a/modules/default/newsfeed/fetcher.js +++ b/modules/default/newsfeed/fetcher.js @@ -85,7 +85,12 @@ var Fetcher = function(url, reloadInterval, encoding) { nodeVersion = Number(process.version.match(/^v(\d+\.\d+)/)[1]); headers = {"User-Agent": "Mozilla/5.0 (Node.js "+ nodeVersion + ") MagicMirror/" + global.version + " (https://github.com/MichMich/MagicMirror/)"} - request({uri: url, encoding: null, headers: headers}).pipe(iconv.decodeStream(encoding)).pipe(parser); + request({uri: url, encoding: null, headers: headers}) + .on("error", function(error) { + fetchFailedCallback(self, error); + scheduleTimer(); + }) + .pipe(iconv.decodeStream(encoding)).pipe(parser); }; From 4882a801d252bfdd8ab46c067eed0e612678f293 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Tue, 3 Jan 2017 17:46:41 +0100 Subject: [PATCH 4/9] Update CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 94fc3495..e4e8687f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [2.1.1] - Unreleased +- Add loaded function to modules, providing an async callback. ## [2.1.0] - 2016-12-31 From 8ac8b666bf435f90dc81c980b170b13e7f63c53a Mon Sep 17 00:00:00 2001 From: Michael Teeuw Date: Wed, 4 Jan 2017 08:59:37 +0100 Subject: [PATCH 5/9] Update CHANGELOG.md --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e4e8687f..6408d1d2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [2.1.1] - Unreleased + +### Added - Add loaded function to modules, providing an async callback. ## [2.1.0] - 2016-12-31 From 6552157894e6047b72dbbdf7339bedd96dea96fe Mon Sep 17 00:00:00 2001 From: Rodrigo Ramez Norambuena Date: Wed, 4 Jan 2017 12:52:21 -0300 Subject: [PATCH 6/9] Remove white flash on boot up When the electron app is started appear a white flash before show the MagicMirror system. This patch remove the white flash on boot up. --- CHANGELOG.md | 3 +++ js/electron.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6408d1d2..cefc49c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added - Add loaded function to modules, providing an async callback. +### Fixed +- Remove white flash on boot up + ## [2.1.0] - 2016-12-31 **Note:** This update uses new dependencies. Please update using the following command: `git pull && npm install` diff --git a/js/electron.js b/js/electron.js index 173abe68..1f16092b 100644 --- a/js/electron.js +++ b/js/electron.js @@ -28,7 +28,8 @@ function createWindow() { webPreferences: { nodeIntegration: false, zoomFactor: config.zoom - } + }, + backgroundColor: "#000000" } // DEPRECATED: "kioskmode" backwards compatibility, to be removed From 396bbd83c8bbee6d92a892cfdb7c5e958427b8cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Ram=C3=ADrez=20Norambuena?= Date: Sun, 1 Jan 2017 19:51:50 -0300 Subject: [PATCH 7/9] modified installer to use config.js.sample for init config. --- CHANGELOG.md | 3 +++ installers/raspberry.sh | 3 +++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6408d1d2..852df9c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ## [2.1.1] - Unreleased +### Changed +- Installer: Use init config.js from config.js.sample. + ### Added - Add loaded function to modules, providing an async callback. diff --git a/installers/raspberry.sh b/installers/raspberry.sh index cd995a1e..b970d02e 100644 --- a/installers/raspberry.sh +++ b/installers/raspberry.sh @@ -113,6 +113,9 @@ else exit; fi +# Use sample config for start MagicMirror +cp config/config.js.sample config/config.js + # Check if plymouth is installed (default with PIXEL desktop environment), then install custom splashscreen. echo -e "\e[96mCheck plymouth installation ...\e[0m" if command_exists plymouth; then From 2e9b6ead2e18be7187f171e4969481529ec26840 Mon Sep 17 00:00:00 2001 From: Chris van Marle Date: Mon, 9 Jan 2017 17:31:01 +0100 Subject: [PATCH 8/9] Fix gitignore to not ignore default modules folder /modules/** makes git ignore all directories and files in /modules, so it's not even looking in /modules/default for changes. !/modules/default/** is therefore never used. By adding the new line !/modules/default, git is told to look in the /modules/default folder for changes and will find all sub files/dirs and match these on !/modules/default/**. --- .gitignore | 1 + CHANGELOG.md | 3 +++ 2 files changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 67feae54..1e17ef8b 100644 --- a/.gitignore +++ b/.gitignore @@ -59,6 +59,7 @@ Temporary Items # Ignore all modules except the default modules. /modules/** +!/modules/default !/modules/default/** !/modules/README.md** diff --git a/CHANGELOG.md b/CHANGELOG.md index 6408d1d2..149b9644 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ This project adheres to [Semantic Versioning](http://semver.org/). ### Added - Add loaded function to modules, providing an async callback. +### Fixed +- Update .gitignore to not ignore default modules folder + ## [2.1.0] - 2016-12-31 **Note:** This update uses new dependencies. Please update using the following command: `git pull && npm install` From 831d8b6d362af7672a0e7f573ee75b11555025ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodrigo=20Ram=C3=ADrez=20Norambuena?= Date: Tue, 10 Jan 2017 15:21:59 -0300 Subject: [PATCH 9/9] update year license for 2017 --- LICENSE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.md b/LICENSE.md index d4765af2..09ac7e6f 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,7 +1,7 @@ The MIT License (MIT) ===================== -Copyright © 2016 Michael Teeuw +Copyright © 2016-2017 Michael Teeuw Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation