From 2be2f926cf028be978b6b036d9a691e245d3d099 Mon Sep 17 00:00:00 2001 From: segran2 Date: Sun, 4 Oct 2026 00:59:00 +0200 Subject: [PATCH 1/2] fix(ui): start MyUplink OAuth from connection test --- web/settings/tabs/devices.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/web/settings/tabs/devices.js b/web/settings/tabs/devices.js index d08ca6ba8..303386b36 100644 --- a/web/settings/tabs/devices.js +++ b/web/settings/tabs/devices.js @@ -2240,6 +2240,26 @@ ctx.captureCurrentTab(); var driver = config.drivers && config.drivers[dIdx]; if (!driver) return; + + // Authorization-code drivers such as MyUplink cannot be probed until + // the one-time OAuth consent has produced a refresh token. Treat + // "Test connection" as the next setup action instead of running a + // probe that is guaranteed to fail: start the existing Connect flow. + var oauthConnectBtn = bodyEl.querySelector('.myuplink-connect-btn[data-driver-idx="' + dIdx + '"]'); + var refreshToken = driver.config && driver.config.refresh_token; + if (oauthConnectBtn && (typeof refreshToken !== "string" || refreshToken === "")) { + if (statusEl) { + statusEl.textContent = "Authorization required"; + statusEl.className = "driver-test-status"; + } + if (outputEl) { + outputEl.hidden = false; + outputEl.innerHTML = '
Connect to MyUplink and sign in before the connection can be tested.
'; + } + oauthConnectBtn.click(); + return; + } + if (statusEl) { statusEl.textContent = "Testing..."; statusEl.className = "driver-test-status"; From 8d0e0901bf4c37bcc4ea6fb48a7ef2d86eee4c41 Mon Sep 17 00:00:00 2001 From: segran2 Date: Sun, 4 Oct 2026 01:00:56 +0200 Subject: [PATCH 2/2] chore: add MyUplink connection test changeset --- .changeset/fix-myuplink-test-oauth.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-myuplink-test-oauth.md diff --git a/.changeset/fix-myuplink-test-oauth.md b/.changeset/fix-myuplink-test-oauth.md new file mode 100644 index 000000000..283cf0f59 --- /dev/null +++ b/.changeset/fix-myuplink-test-oauth.md @@ -0,0 +1,5 @@ +--- +"ftw": patch +--- + +Start the MyUplink OAuth connection flow when Test connection is used before authorization, instead of running a probe that cannot succeed without a refresh token.