mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-06-27 19:53:36 +00:00
Convert module-start to async (#3049)
Similar to the node_helper async start PR... --------- Co-authored-by: veeck <michael@veeck.de>
This commit is contained in:
parent
fe0b915a5d
commit
498b440174
@ -37,6 +37,7 @@ _This release is scheduled to be released on 2023-04-01._
|
|||||||
- Update dates in Calendar widgets every minute
|
- Update dates in Calendar widgets every minute
|
||||||
- Cleanup jest coverage for patches
|
- Cleanup jest coverage for patches
|
||||||
- Update `stylelint` dependencies, switch to `stylelint-config-standard` and handle `stylelint` issues
|
- 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 translator callbacks to async/await
|
||||||
- Convert app-start/-stop callbacks to async/awaits
|
- Convert app-start/-stop callbacks to async/awaits
|
||||||
|
|
||||||
|
37
js/loader.js
37
js/loader.js
@ -47,20 +47,35 @@ const Loader = (function () {
|
|||||||
* Loops thru all modules and requests start for every module.
|
* Loops thru all modules and requests start for every module.
|
||||||
*/
|
*/
|
||||||
const startModules = function () {
|
const startModules = function () {
|
||||||
|
const modulePromises = [];
|
||||||
for (const module of moduleObjects) {
|
for (const module of moduleObjects) {
|
||||||
module.start();
|
try {
|
||||||
}
|
modulePromises.push(module.start());
|
||||||
|
} catch (error) {
|
||||||
// Notify core of loaded modules.
|
Log.error(`Error when starting node_helper for module ${module.name}:`);
|
||||||
MM.modulesStarted(moduleObjects);
|
Log.error(error);
|
||||||
|
|
||||||
// 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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -40,7 +40,7 @@ const Module = Class.extend({
|
|||||||
/**
|
/**
|
||||||
* Called when the module is started.
|
* Called when the module is started.
|
||||||
*/
|
*/
|
||||||
start: function () {
|
start: async function () {
|
||||||
Log.info("Starting module: " + this.name);
|
Log.info("Starting module: " + this.name);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ Module.register("alert", {
|
|||||||
return `templates/${type}.njk`;
|
return `templates/${type}.njk`;
|
||||||
},
|
},
|
||||||
|
|
||||||
start() {
|
async start() {
|
||||||
Log.info(`Starting module: ${this.name}`);
|
Log.info(`Starting module: ${this.name}`);
|
||||||
|
|
||||||
if (this.config.effect === "slide") {
|
if (this.config.effect === "slide") {
|
||||||
@ -53,7 +53,7 @@ Module.register("alert", {
|
|||||||
|
|
||||||
if (this.config.welcome_message) {
|
if (this.config.welcome_message) {
|
||||||
const message = this.config.welcome_message === true ? this.translate("welcome") : 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 });
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -33,16 +33,15 @@ Module.register("compliments", {
|
|||||||
},
|
},
|
||||||
|
|
||||||
// Define start sequence.
|
// Define start sequence.
|
||||||
start: function () {
|
start: async function () {
|
||||||
Log.info("Starting module: " + this.name);
|
Log.info("Starting module: " + this.name);
|
||||||
|
|
||||||
this.lastComplimentIndex = -1;
|
this.lastComplimentIndex = -1;
|
||||||
|
|
||||||
if (this.config.remoteFile !== null) {
|
if (this.config.remoteFile !== null) {
|
||||||
this.loadComplimentFile().then((response) => {
|
const response = await this.loadComplimentFile();
|
||||||
this.config.compliments = JSON.parse(response);
|
this.config.compliments = JSON.parse(response);
|
||||||
this.updateDom();
|
this.updateDom();
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Schedule update timer.
|
// Schedule update timer.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user