Extension: per-machine default tablet, skip asking unless busy
- Options page gains a 'Default tablet for this machine' picker, populated from the device list once base URL + terminal key are configured, auto-saved on change (small enough setting not to warrant its own Save button). - Popup pre-selects the default in its device dropdown but still shows the full picker — opening the popup is already a deliberate action, so staff can still override it there. - Injected buttons (row + banner) skip the dropdown entirely when a default is configured — one click pushes straight to it. Only falls back to the full picker if that specific push comes back busy (409), with a note explaining why it's asking despite a default being set. background.js's pushBooking() now returns the HTTP status alongside ok/error so this can be detected reliably rather than string-matching the error message. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
67def8ac19
commit
a37654cdc4
5 changed files with 139 additions and 21 deletions
|
|
@ -20,7 +20,7 @@ async function main() {
|
|||
nbStatusEl.className = `nb-status ${ok ? 'ok' : 'no'}`;
|
||||
});
|
||||
|
||||
const { baseUrl, apiKey } = await chrome.storage.local.get(['baseUrl', 'apiKey']);
|
||||
const { baseUrl, apiKey, defaultDeviceId } = await chrome.storage.local.get(['baseUrl', 'apiKey', 'defaultDeviceId']);
|
||||
if (!baseUrl || !apiKey) {
|
||||
contentEl.innerHTML = `
|
||||
<p class="muted">Not set up yet — add the tablet-checkin URL and a terminal API key first.</p>
|
||||
|
|
@ -72,6 +72,12 @@ async function main() {
|
|||
${escapeHtml(d.name)}${d.status === 'busy' ? ' (busy)' : ''}
|
||||
</option>`
|
||||
).join('');
|
||||
// Pre-select this machine's configured default tablet — still just a
|
||||
// starting point, staff can pick a different one from the dropdown.
|
||||
// Setting .value to a disabled (busy) option is a no-op in every browser
|
||||
// that matters here, so a busy default just falls through to whatever the
|
||||
// browser's own first-enabled-option default would have been anyway.
|
||||
if (defaultDeviceId) deviceSelect.value = defaultDeviceId;
|
||||
sendBtn.disabled = false;
|
||||
|
||||
sendBtn.addEventListener('click', async () => {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue