From ccc6d905786194e53da1e3d658e8a163e8d1cec5 Mon Sep 17 00:00:00 2001 From: pdmarf <135653545+pdmarf@users.noreply.github.com> Date: Fri, 24 Apr 2026 08:53:15 +0100 Subject: [PATCH] v1.0.29: fix userId not restoring due to race condition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit onSendToPropertyInspector (users list) arrives before onDidReceiveGlobalSettings (saved userId) in most cases, leaving globalUserId empty when populateUsers runs. Now cachedUsers stores the list, and onDidReceiveGlobalSettings re-populates if users already arrived — handles both orderings. Co-Authored-By: Claude Sonnet 4.6 --- com.pdma.notion-timer.sdPlugin/bin/plugin.js | 2 +- .../bin/plugin.js.sig | 3 +-- com.pdma.notion-timer.sdPlugin/manifest.json | 2 +- .../ui/property-inspector.html | 15 +++++++-------- notion-timer.streamDeckPlugin | Bin 98867 -> 98866 bytes src/plugin.ts | 2 +- version.json | 2 +- 7 files changed, 12 insertions(+), 14 deletions(-) diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js b/com.pdma.notion-timer.sdPlugin/bin/plugin.js index 1cb3255..2c24e22 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js @@ -6438,7 +6438,7 @@ async function stopTimer(token, entryId) { } // src/plugin.ts -var CURRENT_VERSION = "1.0.28"; +var CURRENT_VERSION = "1.0.29"; var GITEA_BASE = "https://gitea.pdmarf.co.uk/pdm/stream_deck_notion_timer/raw/branch/stable-rebuild"; var SIGNING_PUBLIC_KEY = `-----BEGIN PUBLIC KEY----- MCowBQYDK2VwAyEAN7ko8TUpuPzPAJuKAZCRjV0c4ZSlou5d9pUAF6o12b4= diff --git a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig index c594fd6..8af79b6 100644 --- a/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig +++ b/com.pdma.notion-timer.sdPlugin/bin/plugin.js.sig @@ -1,2 +1 @@ -$q Pܯ -NFw|}c("*ur_6JL`(A \ No newline at end of file +JﳋU(ą8MJvHXJOzCC/6 \ No newline at end of file diff --git a/com.pdma.notion-timer.sdPlugin/manifest.json b/com.pdma.notion-timer.sdPlugin/manifest.json index 9676b64..e251193 100644 --- a/com.pdma.notion-timer.sdPlugin/manifest.json +++ b/com.pdma.notion-timer.sdPlugin/manifest.json @@ -2,7 +2,7 @@ "Author": "Pete Marfleet", "Description": "Toggle Notion time tracking for a project with a single button press.", "Name": "Notion Timer", - "Version": "1.0.28", + "Version": "1.0.29", "SDKVersion": 2, "Software": { "MinimumVersion": "5.0" }, "OS": [{ "Platform": "mac", "MinimumVersion": "10.11" }], diff --git a/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html b/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html index 3ce944c..1e28e8f 100644 --- a/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html +++ b/com.pdma.notion-timer.sdPlugin/ui/property-inspector.html @@ -162,6 +162,7 @@ var credSaveTimer = null; var credConfigured = false; var globalUserId = ""; + var cachedUsers = []; function setStatus(msg, cls) { var el = document.getElementById("statusText"); @@ -201,15 +202,15 @@ } } - function populateUsers(users, savedUserId) { + function populateUsers(users, userId) { + cachedUsers = users; var sel = document.getElementById("userId"); - var current = savedUserId || sel.value; sel.innerHTML = ''; users.forEach(function(u) { var opt = document.createElement("option"); opt.value = u.id; opt.textContent = u.name; - if (u.id === current) opt.selected = true; + if (u.id === userId) opt.selected = true; sel.appendChild(opt); }); } @@ -266,11 +267,9 @@ var s = jsn.payload.settings || {}; document.getElementById("notionToken").value = s.notionToken || ""; globalUserId = s.userId || ""; - if (globalUserId) { - var sel = document.getElementById("userId"); - if (sel.querySelector('option[value="' + globalUserId + '"]')) { - sel.value = globalUserId; - } + if (globalUserId && cachedUsers.length > 0) { + // Users already loaded — re-populate with correct selection + populateUsers(cachedUsers, globalUserId); } credConfigured = !!(s.notionToken && s.userId); diff --git a/notion-timer.streamDeckPlugin b/notion-timer.streamDeckPlugin index 88049f7e20e937d75eddc04ea2ad31c5ddb3bf87..abcf72f9ee990547673bc3aa3593825dc5c04594 100644 GIT binary patch delta 5551 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 F{{zrbhr$2= delta 5536 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