X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;ds=sidebyside;f=ui%2Fweb%2Fsrc%2Fcomposables%2FUtils.ts;h=8cb957abba2c2e10a0edfc20d7daeb29b0a0b69f;hb=2eb6954d7bc5bb0e88a3b20aa62db7b8b08395d1;hp=8ce3b6eca5b37c27dca29faf6a970ea8a0f9a980;hpb=01ff4231d1a1640acdf12c0f2819f0c49456b218;p=e-mobility-charging-stations-simulator.git diff --git a/ui/web/src/composables/Utils.ts b/ui/web/src/composables/Utils.ts index 8ce3b6ec..8cb957ab 100644 --- a/ui/web/src/composables/Utils.ts +++ b/ui/web/src/composables/Utils.ts @@ -1,3 +1,5 @@ +import util from 'node:util'; + export default class Utils { // STATE public static isUndefined(value: unknown): boolean { @@ -20,6 +22,10 @@ export default class Utils { // if (this.isIterable(obj) === false) cb(); // } + public static isPromisePending(promise: Promise): boolean { + return util.inspect(promise).includes('pending'); + } + public static async promiseWithTimeout( promise: Promise, timeoutMs: number, @@ -31,7 +37,10 @@ export default class Utils { // Create a timeout promise that rejects in timeout milliseconds const timeoutPromise = new Promise((_, reject) => { setTimeout(() => { - timeoutCallback(); + if (Utils.isPromisePending(promise)) { + timeoutCallback(); + // FIXME: The original promise shall be canceled + } reject(timeoutError); }, timeoutMs); });