v1.0.46: clear stale running-timer state even when stopTimer fails in Notion
The onKeyDown stop/switch paths only cleared memRunningActionId/EntryId after a successful stopTimer call. If the tracked Notion entry was already gone (archived/deleted/edited outside the plugin), stopTimer threw and the stale ID was never cleared -- every subsequent keypress retried the same doomed stop call, showed a warning triangle, and the deck got permanently stuck (unable to unselect the stuck button or start any new timer). checkElapsed already handled this correctly by clearing state unconditionally; onKeyDown now does the same: stopTimer failures are logged but non-fatal, and local state clears regardless.
This commit is contained in:
@@ -6438,7 +6438,7 @@ async function stopTimer(token, entryId) {
|
||||
}
|
||||
|
||||
// src/plugin.ts
|
||||
var CURRENT_VERSION = "1.0.45";
|
||||
var CURRENT_VERSION = "1.0.46";
|
||||
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=
|
||||
@@ -6677,13 +6677,21 @@ var TimerToggle = class extends SingletonAction {
|
||||
}
|
||||
try {
|
||||
if (isRunning) {
|
||||
await stopTimer(global.notionToken, memRunningEntryId);
|
||||
try {
|
||||
await stopTimer(global.notionToken, memRunningEntryId);
|
||||
} catch (err) {
|
||||
plugin_default.logger.error("Failed to stop timer in Notion (clearing local state anyway):", err);
|
||||
}
|
||||
setRunningEntry(null, null);
|
||||
this.clearElapsedCheck();
|
||||
await Promise.all([ev.action.setState(0), ev.action.setTitle(title)]);
|
||||
} else {
|
||||
if (memRunningEntryId) {
|
||||
await stopTimer(global.notionToken, memRunningEntryId);
|
||||
try {
|
||||
await stopTimer(global.notionToken, memRunningEntryId);
|
||||
} catch (err) {
|
||||
plugin_default.logger.error("Failed to stop previous timer in Notion (clearing local state anyway):", err);
|
||||
}
|
||||
setRunningEntry(null, null);
|
||||
this.clearElapsedCheck();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user