fix(pwa): handle orientation.lock() promise rejection silently

screen.orientation.lock() returns a Promise; the old try/catch only
caught synchronous errors, leaving the rejection unhandled and triggering
the auto-reporter (issue #8). Added .catch(()=>{}) to suppress it.
Also fixed CI: add sleep+retry around gh release create to avoid 502
race condition after delete.

Closes #8
This commit is contained in:
dadaloop82
2026-05-04 15:46:17 +00:00
parent 3649be848a
commit e68d11a7fc
2 changed files with 14 additions and 8 deletions
+8 -2
View File
@@ -50,14 +50,20 @@ jobs:
- name: Delete existing kiosk release - name: Delete existing kiosk release
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: gh release delete kiosk-latest --yes || true run: |
gh release delete kiosk-latest --yes || true
sleep 5
- name: Create GitHub Release and upload APK - name: Create GitHub Release and upload APK
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: | run: |
for i in 1 2 3; do
gh release create kiosk-latest \ gh release create kiosk-latest \
--title "EverShelf Kiosk v${{ steps.version.outputs.name }}" \ --title "EverShelf Kiosk v${{ steps.version.outputs.name }}" \
--notes "Kiosk mode app with embedded BLE scale gateway. Install on your Android device (7.0+)." \ --notes "Kiosk mode app with embedded BLE scale gateway. Install on your Android device (7.0+)." \
--prerelease \ --prerelease \
artifacts/evershelf-kiosk.apk artifacts/evershelf-kiosk.apk && break
echo "Attempt $i failed, retrying in 10s..."
sleep 10
done
+2 -2
View File
@@ -10147,7 +10147,7 @@ function startCookingMode() {
document.getElementById('cooking-tts-btn').textContent = '🔊'; document.getElementById('cooking-tts-btn').textContent = '🔊';
document.getElementById('cooking-overlay').style.display = 'flex'; document.getElementById('cooking-overlay').style.display = 'flex';
document.body.classList.add('cooking-mode-active'); document.body.classList.add('cooking-mode-active');
try { screen.orientation?.lock('portrait'); } catch (_) { /* ignore */ } try { screen.orientation?.lock('portrait').catch(() => {}); } catch (_) { /* ignore */ }
renderCookingStep(); renderCookingStep();
if (_cookingTTS) { if (_cookingTTS) {
const text = ((_cookingRecipe.steps || [])[_cookingStep] || '').replace(/^Passo\s*\d+\s*[:.]\s*/i, ''); const text = ((_cookingRecipe.steps || [])[_cookingStep] || '').replace(/^Passo\s*\d+\s*[:.]\s*/i, '');
@@ -10159,7 +10159,7 @@ function closeCookingMode() {
document.body.classList.remove('cooking-mode-active'); document.body.classList.remove('cooking-mode-active');
// NOTE: intentionally keep _cookingRecipe, _cookingStep, _cookingVisited // NOTE: intentionally keep _cookingRecipe, _cookingStep, _cookingVisited
// so the user can resume from the same step when they reopen // so the user can resume from the same step when they reopen
try { screen.orientation?.unlock(); } catch (_) { /* ignore */ } try { screen.orientation?.unlock().catch(() => {}); } catch (_) { /* ignore */ }
} }
function restartCookingMode() { function restartCookingMode() {