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()
]