Skip to content

Commit

Permalink
Convert module-start to async (MagicMirrorOrg#3049)
Browse files Browse the repository at this point in the history
Similar to the node_helper async start PR...

---------

Co-authored-by: veeck <michael@veeck.de>
  • Loading branch information
rejas and veeck authored Feb 22, 2023
1 parent fe0b915 commit 498b440
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 17 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ _This release is scheduled to be released on 2023-04-01._
- Update dates in Calendar widgets every minute
- Cleanup jest coverage for patches
- Update `stylelint` dependencies, switch to `stylelint-config-standard` and handle `stylelint` issues
- Convert module start to async/await
- Convert translator callbacks to async/await
- Convert app-start/-stop callbacks to async/awaits

Expand Down
33 changes: 24 additions & 9 deletions js/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,20 +47,35 @@ const Loader = (function () {
* Loops thru all modules and requests start for every module.
*/
const startModules = function () {
const modulePromises = [];
for (const module of moduleObjects) {
module.start();
try {
modulePromises.push(module.start());
} catch (error) {
Log.error(`Error when starting node_helper for module ${module.name}:`);
Log.error(error);
}
}

// Notify core of loaded modules.
MM.modulesStarted(moduleObjects);
Promise.allSettled(modulePromises).then((results) => {
// Log errors that happened during async node_helper startup
results.forEach((result) => {
if (result.status === "rejected") {
Log.error(result.reason);
}
});

// Notify core of loaded modules.
MM.modulesStarted(moduleObjects);

// Starting modules also hides any modules that have requested to be initially hidden
for (const thisModule of moduleObjects) {
if (thisModule.data.hiddenOnStartup) {
Log.info("Initially hiding " + thisModule.name);
thisModule.hide();
// Starting modules also hides any modules that have requested to be initially hidden
for (const thisModule of moduleObjects) {
if (thisModule.data.hiddenOnStartup) {
Log.info("Initially hiding " + thisModule.name);
thisModule.hide();
}
}
}
});
};

/**
Expand Down
2 changes: 1 addition & 1 deletion js/module.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ const Module = Class.extend({
/**
* Called when the module is started.
*/
start: function () {
start: async function () {
Log.info("Starting module: " + this.name);
},

Expand Down
4 changes: 2 additions & 2 deletions modules/default/alert/alert.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Module.register("alert", {
return `templates/${type}.njk`;
},

start() {
async start() {
Log.info(`Starting module: ${this.name}`);

if (this.config.effect === "slide") {
Expand All @@ -53,7 +53,7 @@ Module.register("alert", {

if (this.config.welcome_message) {
const message = this.config.welcome_message === true ? this.translate("welcome") : this.config.welcome_message;
this.showNotification({ title: this.translate("sysTitle"), message });
await this.showNotification({ title: this.translate("sysTitle"), message });
}
},

Expand Down
9 changes: 4 additions & 5 deletions modules/default/compliments/compliments.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,15 @@ Module.register("compliments", {
},

// Define start sequence.
start: function () {
start: async function () {
Log.info("Starting module: " + this.name);

this.lastComplimentIndex = -1;

if (this.config.remoteFile !== null) {
this.loadComplimentFile().then((response) => {
this.config.compliments = JSON.parse(response);
this.updateDom();
});
const response = await this.loadComplimentFile();
this.config.compliments = JSON.parse(response);
this.updateDom();
}

// Schedule update timer.
Expand Down

0 comments on commit 498b440

Please sign in to comment.