diff --git a/extension/action_popup.html b/extension/action_popup.html --- a/extension/action_popup.html +++ b/extension/action_popup.html @@ -33,6 +33,8 @@

I18N

+ + I18N diff --git a/extension/action_popup.js b/extension/action_popup.js --- a/extension/action_popup.js +++ b/extension/action_popup.js @@ -159,11 +159,20 @@ document.getElementById("unsupported_os_error").classList.remove("hidden"); break; - case "STARTUP_FAILED": + case "STARTUP_FAILED": { document.getElementById("startup_error").classList.remove("hidden"); + + const errorText = status.portLastErrorMessage; + // Don't show generic error on startup failure. There's already an explanation. + if (errorText && errorText !== "UNKNOWN") { + const errorTextItem = document.getElementById("startup_error_text"); + errorTextItem.innerText = errorText; + errorTextItem.classList.remove("hidden"); + } break; + } - default: + default: { document.getElementById("main").classList.remove("hidden"); let errorText = status.portLastErrorMessage; @@ -181,6 +190,7 @@ break; } + } // HACK so the extension can tell we closed, see "browserAction" "ready" callback in extension.js chrome.runtime.onConnect.addListener((port) => { diff --git a/extension/extension.js b/extension/extension.js --- a/extension/extension.js +++ b/extension/extension.js @@ -97,7 +97,7 @@ }); } - if (portLastErrorMessage) { + if (portLastErrorMessage && receivedMessageOnce) { chrome.browserAction.setBadgeText({ text: "!" }); chrome.browserAction.setBadgeBackgroundColor({ color: "#da4453" }); // breeze "negative" color } else { @@ -180,14 +180,13 @@ } kdeConnectDevices = {}; + portLastErrorMessage = error && error.message || "UNKNOWN"; if (receivedMessageOnce) { - portLastErrorMessage = error && error.message || "UNKNOWN"; portStatus = "DISCONNECTED"; console.log("Auto-restarting it"); connectHost(); } else { - portLastErrorMessage = ""; portStatus = "STARTUP_FAILED"; console.warn("Not auto-restarting host as we haven't received any message from it before. Check that it's working/installed correctly"); @@ -242,7 +241,10 @@ // disabling the browser action immediately when opening it // causes opening to fail on Firefox, so clear the error only when it's being closed. - portLastErrorMessage = ""; - updateBrowserAction(); + // Only clear error when it was a transient error, not a startup failure + if (receivedMessageOnce) { + portLastErrorMessage = ""; + updateBrowserAction(); + } }); });