From 5a63244721d21b1ad3a0ae83420723a2f0379e8b Mon Sep 17 00:00:00 2001 From: Cotes Chung <11371340+cotes2020@users.noreply.github.com> Date: Wed, 18 Sep 2024 22:32:26 +0800 Subject: [PATCH] fix(pwa): site baseurl not passed to `app.js` (#1955) --- _includes/js-selector.html | 5 ++++- _javascript/pwa/app.js | 12 ++++++++---- _javascript/pwa/sw.js | 4 +--- package.json | 1 - rollup.config.js | 4 +--- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/_includes/js-selector.html b/_includes/js-selector.html index 9965107..4d77d06 100644 --- a/_includes/js-selector.html +++ b/_includes/js-selector.html @@ -92,7 +92,10 @@ {% if jekyll.environment == 'production' %} {% if site.pwa.enabled %} - + {% endif %} diff --git a/_javascript/pwa/app.js b/_javascript/pwa/app.js index c71036a..3c0ded2 100644 --- a/_javascript/pwa/app.js +++ b/_javascript/pwa/app.js @@ -1,15 +1,19 @@ -import { pwa, baseurl } from '../../_config.yml'; import Toast from 'bootstrap/js/src/toast'; if ('serviceWorker' in navigator) { - if (pwa.enabled) { - const swUrl = `${baseurl}/sw.min.js`; + // Get Jekyll config from URL parameters + const src = new URL(document.currentScript.src); + const register = src.searchParams.get('register'); + const baseUrl = src.searchParams.get('baseurl'); + + if (register) { + const swUrl = `${baseUrl}/sw.min.js`; const notification = document.getElementById('notification'); const btnRefresh = notification.querySelector('.toast-body>button'); const popupWindow = Toast.getOrCreateInstance(notification); navigator.serviceWorker.register(swUrl).then((registration) => { - // In case the user ignores the notification + // Restore the update window that was last manually closed by the user if (registration.waiting) { popupWindow.show(); } diff --git a/_javascript/pwa/sw.js b/_javascript/pwa/sw.js index 94b64bf..ff9125d 100644 --- a/_javascript/pwa/sw.js +++ b/_javascript/pwa/sw.js @@ -1,6 +1,4 @@ -import { baseurl } from '../../_config.yml'; - -importScripts(`${baseurl}/assets/js/data/swconf.js`); +importScripts('./assets/js/data/swconf.js'); const purge = swconf.purge; const interceptor = swconf.interceptor; diff --git a/package.json b/package.json index 0dbc382..bab1a2f 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,6 @@ "@rollup/plugin-babel": "^6.0.4", "@rollup/plugin-node-resolve": "^15.2.3", "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-yaml": "^4.1.2", "@semantic-release/changelog": "^6.0.3", "@semantic-release/exec": "^6.0.3", "@semantic-release/git": "^10.0.1", diff --git a/rollup.config.js b/rollup.config.js index 22016b0..19ba4da 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -1,7 +1,6 @@ import babel from '@rollup/plugin-babel'; import terser from '@rollup/plugin-terser'; import { nodeResolve } from '@rollup/plugin-node-resolve'; -import yaml from '@rollup/plugin-yaml'; import fs from 'fs'; import pkg from './package.json'; @@ -43,7 +42,7 @@ function build(filename, { src = SRC_DEFAULT, jekyll = false } = {}) { format: 'iife', name: 'Chirpy', banner, - sourcemap: !isProd + sourcemap: !isProd && !jekyll }, watch: { include: `${src}/**` @@ -55,7 +54,6 @@ function build(filename, { src = SRC_DEFAULT, jekyll = false } = {}) { plugins: ['@babel/plugin-transform-class-properties'] }), nodeResolve(), - yaml(), isProd && terser(), jekyll && insertFrontmatter() ]