From c1132daeab22fa100ad1a388b2b8404851163acc Mon Sep 17 00:00:00 2001 From: phosit Date: Sat, 24 Aug 2024 17:21:16 +0200 Subject: [PATCH] Make progressDialog return a promise This way the continuation hasn't to be passed as argument. --- binaries/data/mods/mod/gui/modio/modio.js | 41 +++++++++++++---------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/binaries/data/mods/mod/gui/modio/modio.js b/binaries/data/mods/mod/gui/modio/modio.js index 3fb2ad17bb..d598d5629e 100644 --- a/binaries/data/mods/mod/gui/modio/modio.js +++ b/binaries/data/mods/mod/gui/modio/modio.js @@ -131,17 +131,19 @@ var g_ModIOState = { } }; -function init(data) +async function init(data) { - progressDialog( + const promise = progressDialog( translate("Initializing mod.io interface."), translate("Initializing"), false, - translate("Cancel"), - closePage); + translate("Cancel")); g_Failure = false; Engine.ModIoStartGetGameId(); + + await promise; + closePage(); } function onTick() @@ -242,44 +244,48 @@ function cancelModListUpdate() Engine.GetGUIObjectByName('refreshButton').enabled = true; } -function updateModList() +async function updateModList() { clearModList(); Engine.GetGUIObjectByName("refreshButton").enabled = false; - progressDialog( + const promise = progressDialog( translate("Fetching and updating list of available mods."), translate("Updating"), false, - translate("Cancel Update"), - cancelModListUpdate); + translate("Cancel Update")); g_Failure = false; g_RequestCancelled = false; Engine.ModIoStartListMods(); + + await promise; + cancelModListUpdate(); } -function downloadMod() +async function downloadMod() { let selected = selectedModIndex(); if (isSelectedModInvalid(selected)) return; - progressDialog( + const promise = progressDialog( sprintf(translate("Downloading ā€œ%(modname)sā€"), { "modname": g_ModsAvailableOnline[selected].name }), translate("Downloading"), true, - translate("Cancel Download"), - () => { Engine.GetGUIObjectByName("downloadButton").enabled = true; }); + translate("Cancel Download")); Engine.GetGUIObjectByName("downloadButton").enabled = false; g_Failure = false; g_RequestCancelled = false; Engine.ModIoStartDownloadMod(selected); + + await promise; + Engine.GetGUIObjectByName("downloadButton").enabled = true; } function cancelRequest() @@ -304,7 +310,7 @@ function showErrorMessageBox(caption, title, buttonCaptions) return messageBox(500, 250, caption, title, buttonCaptions); } -function progressDialog(dialogCaption, dialogTitle, showProgressBar, buttonCaption, buttonAction) +async function progressDialog(dialogCaption, dialogTitle, showProgressBar, buttonCaption) { Engine.GetGUIObjectByName("downloadDialog_title").caption = dialogTitle; @@ -318,13 +324,14 @@ function progressDialog(dialogCaption, dialogTitle, showProgressBar, buttonCapti Engine.GetGUIObjectByName("downloadDialog_progress").hidden = !showProgressBar; Engine.GetGUIObjectByName("downloadDialog_status").hidden = !showProgressBar; - let downloadDialog_button = Engine.GetGUIObjectByName("downloadDialog_button"); - downloadDialog_button.caption = buttonCaption; - downloadDialog_button.onPress = () => { cancelRequest(); buttonAction(); }; - Engine.GetGUIObjectByName("downloadDialog").hidden = false; g_RequestStartTime = Date.now(); + + const downloadDialog_button = Engine.GetGUIObjectByName("downloadDialog_button"); + downloadDialog_button.caption = buttonCaption; + await new Promise(resolve => {downloadDialog_button.onPress = resolve;}); + cancelRequest(); } /*