mirror of
https://github.com/mickael-kerjean/filestash
synced 2025-12-06 08:22:24 +01:00
fix (caching): retrocompatibility over previous release
This commit is contained in:
parent
2f8b615e6e
commit
4f26bb265a
6 changed files with 24 additions and 38 deletions
|
|
@ -1,4 +1,3 @@
|
||||||
import { init as initCSS } from "../helpers/loader.js";
|
|
||||||
import { report } from "../helpers/log.js";
|
import { report } from "../helpers/log.js";
|
||||||
import { $error } from "./common.js";
|
import { $error } from "./common.js";
|
||||||
|
|
||||||
|
|
@ -8,7 +7,6 @@ export default async function main() {
|
||||||
setup_device(),
|
setup_device(),
|
||||||
setup_blue_death_screen(),
|
setup_blue_death_screen(),
|
||||||
setup_history(),
|
setup_history(),
|
||||||
setup_css(),
|
|
||||||
]);
|
]);
|
||||||
window.dispatchEvent(new window.Event("pagechange"));
|
window.dispatchEvent(new window.Event("pagechange"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
@ -35,7 +33,3 @@ async function setup_blue_death_screen() {
|
||||||
async function setup_history() {
|
async function setup_history() {
|
||||||
window.history.replaceState({}, "");
|
window.history.replaceState({}, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setup_css() {
|
|
||||||
return initCSS();
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { toHref } from "../lib/skeleton/router.js";
|
import { toHref } from "../lib/skeleton/router.js";
|
||||||
import { init as setup_loader, loadJS } from "../helpers/loader.js";
|
import { loadJS } from "../helpers/loader.js";
|
||||||
import { init as setup_translation } from "../locales/index.js";
|
import { init as setup_translation } from "../locales/index.js";
|
||||||
import { init as setup_config } from "../model/config.js";
|
import { init as setup_config } from "../model/config.js";
|
||||||
import { init as setup_chromecast } from "../model/chromecast.js";
|
import { init as setup_chromecast } from "../model/chromecast.js";
|
||||||
|
|
@ -14,7 +14,6 @@ export default async function main() {
|
||||||
setup_device(),
|
setup_device(),
|
||||||
// setup_sw(), // TODO
|
// setup_sw(), // TODO
|
||||||
setup_blue_death_screen(),
|
setup_blue_death_screen(),
|
||||||
setup_loader(),
|
|
||||||
setup_history(),
|
setup_history(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
@ -69,7 +68,7 @@ async function setup_device() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async function setup_sw() {
|
async function setup_sw() { // eslint-disable-line no-unused-vars
|
||||||
if (!("serviceWorker" in window.navigator)) return;
|
if (!("serviceWorker" in window.navigator)) return;
|
||||||
|
|
||||||
if (window.navigator.userAgent.indexOf("Mozilla/") !== -1 &&
|
if (window.navigator.userAgent.indexOf("Mozilla/") !== -1 &&
|
||||||
|
|
@ -93,7 +92,7 @@ async function setup_blue_death_screen() {
|
||||||
if ("serviceWorker" in navigator) navigator.serviceWorker
|
if ("serviceWorker" in navigator) navigator.serviceWorker
|
||||||
.getRegistrations()
|
.getRegistrations()
|
||||||
.then((registrations) => {
|
.then((registrations) => {
|
||||||
for (let registration of registrations) {
|
for (const registration of registrations) {
|
||||||
registration.unregister();
|
registration.unregister();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
import { get as getRelease } from "../pages/adminpage/model_release.js";
|
|
||||||
|
|
||||||
let version = null;
|
|
||||||
|
|
||||||
export async function loadJS(baseURL, path, opts = {}) {
|
export async function loadJS(baseURL, path, opts = {}) {
|
||||||
const $script = document.createElement("script");
|
const $script = document.createElement("script");
|
||||||
const link = new URL(path, baseURL) + (version ? "?version=" + version : "");
|
const link = new URL(path, baseURL);
|
||||||
$script.setAttribute("src", link.toString());
|
$script.setAttribute("src", link.toString());
|
||||||
for (const key in opts) {
|
for (const key in opts) {
|
||||||
$script.setAttribute(key, opts[key]);
|
$script.setAttribute(key, opts[key]);
|
||||||
|
|
@ -19,7 +15,7 @@ export async function loadJS(baseURL, path, opts = {}) {
|
||||||
|
|
||||||
export async function loadCSS(baseURL, path) {
|
export async function loadCSS(baseURL, path) {
|
||||||
const $style = document.createElement("link");
|
const $style = document.createElement("link");
|
||||||
const link = new URL(path, baseURL) + "?version=" + version;
|
const link = new URL(path, baseURL);
|
||||||
$style.setAttribute("href", link.toString());
|
$style.setAttribute("href", link.toString());
|
||||||
$style.setAttribute("rel", "stylesheet");
|
$style.setAttribute("rel", "stylesheet");
|
||||||
if (document.head.querySelector(`[href="${link.toString()}"]`)) return Promise.resolve();
|
if (document.head.querySelector(`[href="${link.toString()}"]`)) return Promise.resolve();
|
||||||
|
|
@ -31,7 +27,7 @@ export async function loadCSS(baseURL, path) {
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function loadCSSInline(baseURL, filename) {
|
export async function loadCSSInline(baseURL, filename) {
|
||||||
const res = await fetch(new URL(filename, baseURL).pathname + `?version=${version}`, {
|
const res = await fetch(new URL(filename, baseURL).pathname, {
|
||||||
cache: "force-cache",
|
cache: "force-cache",
|
||||||
});
|
});
|
||||||
if (res.status !== 200) return `/* ERROR: ${res.status} */`;
|
if (res.status !== 200) return `/* ERROR: ${res.status} */`;
|
||||||
|
|
@ -43,8 +39,3 @@ export async function CSS(baseURL, ...arrayOfFilenames) {
|
||||||
const sheets = await Promise.all(arrayOfFilenames.map((filename) => loadCSSInline(baseURL, filename)));
|
const sheets = await Promise.all(arrayOfFilenames.map((filename) => loadCSSInline(baseURL, filename)));
|
||||||
return sheets.join("\n\n");
|
return sheets.join("\n\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function init() {
|
|
||||||
const info = await getRelease().toPromise();
|
|
||||||
version = info.version;
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -5,12 +5,12 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="stylesheet" href="admin/assets/css/designsystem.css">
|
<link rel="stylesheet" href="./admin/assets/css/designsystem.css">
|
||||||
<link rel="icon" href="favicon.ico">
|
<link rel="icon" href="favicon.ico">
|
||||||
<title>Admin Console</title>
|
<title>Admin Console</title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script type="module" src="admin/assets/{{ .version }}/components/loader.js"></script>
|
<script type="module" src="./admin/assets/{{ .version }}/components/loader.js"></script>
|
||||||
<div role="main" id="app">
|
<div role="main" id="app">
|
||||||
<component-loader delay="500"></component-loader>
|
<component-loader delay="500"></component-loader>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -20,13 +20,13 @@
|
||||||
import routes from "./admin/assets/{{ .version }}/boot/router_backoffice.js";
|
import routes from "./admin/assets/{{ .version }}/boot/router_backoffice.js";
|
||||||
main(document.getElementById("app"), routes, {
|
main(document.getElementById("app"), routes, {
|
||||||
spinner: `<component-loader></component-loader>`,
|
spinner: `<component-loader></component-loader>`,
|
||||||
beforeStart: import("./admin/assets/{{ .version }}/boot/ctrl_boot_backoffice.js"),
|
beforeStart: import("{{ .base }}admin/assets/{{ .version }}/boot/ctrl_boot_backoffice.js"),
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script type="module" src="admin/assets/{{ .version }}/components/modal.js"></script>
|
<script type="module" src="./admin/assets/{{ .version }}/components/modal.js"></script>
|
||||||
<component-modal></component-modal>
|
<component-modal></component-modal>
|
||||||
<script type="module" src="admin/assets/{{ .version }}/components/notification.js"></script>
|
<script type="module" src="./admin/assets/{{ .version }}/components/notification.js"></script>
|
||||||
<component-notification></component-notification>
|
<component-notification></component-notification>
|
||||||
|
|
||||||
<noscript>
|
<noscript>
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,13 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
|
||||||
<link rel="stylesheet" href="assets/{{ .version }}/css/designsystem.css">
|
<link rel="stylesheet" href="./assets/{{ .version }}/css/designsystem.css">
|
||||||
<link rel="stylesheet" href="custom.css">
|
<link rel="stylesheet" href="custom.css">
|
||||||
<link rel="icon" href="assets/{{ .version}}/logo/favicon.svg">
|
{{ if eq .license "agpl" }}<link rel="icon" href="./assets/{{ .version}}/logo/favicon.svg">{{ else }}<link rel="icon" href="favicon.ico">{{ end }}
|
||||||
<title></title>
|
<title></title>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<script type="module" src="assets/{{ .version }}/components/loader.js"></script>
|
<script type="module" src="./assets/{{ .version }}/components/loader.js"></script>
|
||||||
<div role="main" id="app">
|
<div role="main" id="app">
|
||||||
<component-loader delay="500"></component-loader>
|
<component-loader delay="500"></component-loader>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -20,7 +20,7 @@
|
||||||
import routes from "./assets/{{ .version }}/boot/router_frontoffice.js";
|
import routes from "./assets/{{ .version }}/boot/router_frontoffice.js";
|
||||||
main(document.getElementById("app"), routes, {
|
main(document.getElementById("app"), routes, {
|
||||||
spinner: `<component-loader></component-loader>`,
|
spinner: `<component-loader></component-loader>`,
|
||||||
beforeStart: import("./assets/{{ .version }}/boot/ctrl_boot_frontoffice.js"),
|
beforeStart: import("{{ .base }}assets/{{ .version }}/boot/ctrl_boot_frontoffice.js"),
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ func ServeBackofficeHandler(ctx *App, res http.ResponseWriter, req *http.Request
|
||||||
head.Add(
|
head.Add(
|
||||||
"Link",
|
"Link",
|
||||||
fmt.Sprintf(`<%s>; rel="preload"; as="script"; crossorigin="anonymous";`, WithBase(
|
fmt.Sprintf(`<%s>; rel="preload"; as="script"; crossorigin="anonymous";`, WithBase(
|
||||||
strings.Replace(href, "/assets/", "/assets/"+APP_VERSION+"/", 1),
|
strings.Replace(href, "/assets/", "/assets/"+version()+"/", 1),
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -289,7 +289,7 @@ func ServeFrontofficeHandler(ctx *App, res http.ResponseWriter, req *http.Reques
|
||||||
head.Add(
|
head.Add(
|
||||||
"Link",
|
"Link",
|
||||||
fmt.Sprintf(`<%s>; rel="preload"; as="script"; crossorigin="anonymous";`, WithBase(
|
fmt.Sprintf(`<%s>; rel="preload"; as="script"; crossorigin="anonymous";`, WithBase(
|
||||||
strings.Replace(href, "/assets/", "/assets/"+APP_VERSION+"/", 1),
|
strings.Replace(href, "/assets/", "/assets/"+version()+"/", 1),
|
||||||
)),
|
)),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -431,7 +431,7 @@ func ServeFile(chroot string) func(*App, http.ResponseWriter, *http.Request) {
|
||||||
chroot,
|
chroot,
|
||||||
strings.Replace(
|
strings.Replace(
|
||||||
TrimBase(req.URL.Path),
|
TrimBase(req.URL.Path),
|
||||||
"assets/"+APP_VERSION+"/",
|
"assets/"+version()+"/",
|
||||||
"assets/",
|
"assets/",
|
||||||
1,
|
1,
|
||||||
),
|
),
|
||||||
|
|
@ -515,9 +515,6 @@ func ServeFile(chroot string) func(*App, http.ResponseWriter, *http.Request) {
|
||||||
if cfg.ContentType != "" {
|
if cfg.ContentType != "" {
|
||||||
head.Set("Content-Encoding", cfg.ContentType)
|
head.Set("Content-Encoding", cfg.ContentType)
|
||||||
}
|
}
|
||||||
head.Set("Cache-Control", "no-cache")
|
|
||||||
head.Set("Pragma", "no-cache")
|
|
||||||
head.Set("Expires", "0")
|
|
||||||
res.WriteHeader(http.StatusOK)
|
res.WriteHeader(http.StatusOK)
|
||||||
io.Copy(res, file)
|
io.Copy(res, file)
|
||||||
file.Close()
|
file.Close()
|
||||||
|
|
@ -549,7 +546,8 @@ func ServeIndex(indexPath string) func(*App, http.ResponseWriter, *http.Request)
|
||||||
res.WriteHeader(http.StatusOK)
|
res.WriteHeader(http.StatusOK)
|
||||||
template.Must(template.New(indexPath).Parse(string(b))).Execute(res, map[string]any{
|
template.Must(template.New(indexPath).Parse(string(b))).Execute(res, map[string]any{
|
||||||
"base": WithBase("/"),
|
"base": WithBase("/"),
|
||||||
"version": APP_VERSION,
|
"version": version(),
|
||||||
|
"license": LICENSE,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -584,3 +582,7 @@ func InitPluginList(code []byte) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func version() string {
|
||||||
|
return BUILD_REF[:7]
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue