Fix SW scope to intercept page navigations for offline support
The SW was served from /static/sw.js with default scope /static/, so it only intercepted static asset requests. Page navigations to /capture, /queue, /browser were not handled by the SW at all — Safari showed its native offline error. Fix: serve SW from /sw.js route with Service-Worker-Allowed: / header and register with scope: /. Now the SW intercepts all navigations and serves the offline fallback page when the network is unavailable. Also remove auth-protected page routes from precache (they would cache the login redirect). Pages are cached via network-first on visit instead. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,19 @@
|
||||
from flask import Blueprint, render_template, redirect, url_for, session, jsonify
|
||||
from flask import Blueprint, render_template, redirect, url_for, session, jsonify, send_from_directory, current_app
|
||||
|
||||
bp = Blueprint('views', __name__)
|
||||
|
||||
|
||||
@bp.route('/sw.js')
|
||||
def service_worker():
|
||||
"""Serve service worker from root scope."""
|
||||
response = send_from_directory(
|
||||
current_app.static_folder, 'sw.js',
|
||||
mimetype='application/javascript'
|
||||
)
|
||||
response.headers['Service-Worker-Allowed'] = '/'
|
||||
response.headers['Cache-Control'] = 'no-cache'
|
||||
return response
|
||||
|
||||
@bp.route('/')
|
||||
def index():
|
||||
"""Root route - redirect to capture if logged in, otherwise show login."""
|
||||
|
||||
Reference in New Issue
Block a user