diff --git a/content/content.js b/content/content.js index 84c96a9..3fd80dc 100644 --- a/content/content.js +++ b/content/content.js @@ -18,7 +18,7 @@ UI.onStop(function () { queue.length = 0; if (UI) UI.log('stopped'); }); UI.onSaveToken(function (v) { chrome.storage.local.set({ 'dshmem-bridge-token': v }, function () { if (UI) UI.log('token saved, reload page'); }); }); } - if (UI) { UI.onStart(function () { if (!canStart) return; started = true; markExistingAsProcessed(); obs.observe(document.documentElement, { childList: true, subtree: true, characterData: true }); UI.setPhase('idle'); UI.setConnected(true); UI.log('started'); }); } + if (UI) { UI.onStart(function () { if (!canStart) { if (UI.setStartEnabled) UI.setStartEnabled(true); return; } started = true; markExistingAsProcessed(); obs.observe(document.documentElement, { childList: true, subtree: true, characterData: true }); UI.setPhase('idle'); UI.setConnected(true); UI.log('started'); }); } if (!SEL) return; if (!BRIDGE) return; if (typeof extractCalls !== "function") return; diff --git a/content/panel.js b/content/panel.js index c1cd25b..b996748 100644 --- a/content/panel.js +++ b/content/panel.js @@ -32,13 +32,10 @@ el.body = mk('div', 'dshmem-body'); root.appendChild(head); root.appendChild(el.body); var row1 = mk('div', 'dshmem-row'); - el.start = mk('button', 'dshmem-btn primary', 'Start'); el.reset = mk('button', 'dshmem-btn', 'Reset loops'); + el.start = mk('button', 'dshmem-btn primary', 'Start'); el.reset = mk('button', 'dshmem-btn', 'Reset queue'); el.stop = mk('button', 'dshmem-btn danger', 'Stop'); row1.appendChild(el.start); row1.appendChild(el.reset); row1.appendChild(el.stop); el.body.appendChild(row1); - el.loops = mk('div', 'dshmem-label', 'loops: 0/0'); - el.daily = mk('div', 'dshmem-label', 'daily: 0/0'); - el.body.appendChild(el.loops); el.body.appendChild(el.daily); var set = mk('div', 'dshmem-settings'); var lbl = mk('div', 'dshmem-label', 'Token (save, then reload page)'); el.token = mk('input', 'dshmem-input'); @@ -65,8 +62,8 @@ el.toggle.addEventListener('click', function () { el.body.style.display = el.body.style.display === 'none' ? '' : 'none'; }); - el.reset.addEventListener('click', function () { state.resetCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); - el.stop.addEventListener('click', function () { state.stopCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); el.start.addEventListener('click', function () { el.start.disabled = true; state.startCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); + el.reset.addEventListener('click', function () { el.start.disabled = false; state.resetCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); + el.stop.addEventListener('click', function () { el.start.disabled = false; state.stopCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); el.start.addEventListener('click', function () { el.start.disabled = true; state.startCbs.forEach(function (cb) { try { cb(); } catch (e) {} }); }); el.save.addEventListener('click', function () { var v = el.token.value || ''; state.saveCbs.forEach(function (cb) { try { cb(v); } catch (e) {} }); }); el.health.addEventListener('click', function () { try { globalThis.DSH_BRIDGE.health().then(function (r) { @@ -78,6 +75,7 @@ var API = { setPhase: function (p) { state.phase = p; if (el.phase) el.phase.textContent = p; }, setConnected: function (b) { state.connected = !!b; if (el.dot) el.dot.className = 'dshmem-dot ' + (b ? 'ok' : 'err'); }, + setStartEnabled: function (b) { if (el.start) el.start.disabled = !b; }, log: function (m) { if (!el.log) return; var t = new Date().toLocaleTimeString(); @@ -85,8 +83,6 @@ var txt = (line + String.fromCharCode(10) + (el.log.textContent || '')).split(String.fromCharCode(10)).slice(0, LOG_CAP).join(String.fromCharCode(10)); el.log.textContent = txt; }, - setLoops: function (left, max) { state.loopsLeft = left; state.loopsMax = max; if (el.loops) el.loops.textContent = 'loops: ' + left + '/' + max; }, - setDaily: function (c, m) { state.dailyCount = c; state.dailyMax = m; if (el.daily) el.daily.textContent = 'daily: ' + c + '/' + m; }, onResetLoops: function (cb) { state.resetCbs.push(cb); }, onStop: function (cb) { state.stopCbs.push(cb); }, onStart: function (cb) { state.startCbs.push(cb); }, onSaveToken: function (cb) { state.saveCbs.push(cb); },