avoid 404 on icon for spa navigations with anchors

This commit is contained in:
Jacky Zhao 2023-08-19 16:40:02 -07:00
parent f7c2fc36f3
commit 9e2fbabc20
2 changed files with 5 additions and 3 deletions

View File

@ -1,4 +1,4 @@
import { pathToRoot } from "../util/path" import { joinSegments, pathToRoot } from "../util/path"
import { JSResourceToScriptElement } from "../util/resources" import { JSResourceToScriptElement } from "../util/resources"
import { QuartzComponentConstructor, QuartzComponentProps } from "./types" import { QuartzComponentConstructor, QuartzComponentProps } from "./types"
@ -8,7 +8,7 @@ export default (() => {
const description = fileData.description?.trim() ?? "No description provided" const description = fileData.description?.trim() ?? "No description provided"
const { css, js } = externalResources const { css, js } = externalResources
const baseDir = pathToRoot(fileData.slug!) const baseDir = pathToRoot(fileData.slug!)
const iconPath = baseDir + "/static/icon.png" const iconPath = joinSegments(baseDir, "static/icon.png")
const ogImagePath = `https://${cfg.baseUrl}/static/og-image.png` const ogImagePath = `https://${cfg.baseUrl}/static/og-image.png`
return ( return (

View File

@ -66,7 +66,6 @@ async function navigate(url: URL, isBack: boolean = false) {
// scroll into place and add history // scroll into place and add history
if (!isBack) { if (!isBack) {
history.pushState({}, "", url)
if (url.hash) { if (url.hash) {
const el = document.getElementById(url.hash.substring(1)) const el = document.getElementById(url.hash.substring(1))
el?.scrollIntoView() el?.scrollIntoView()
@ -81,6 +80,9 @@ async function navigate(url: URL, isBack: boolean = false) {
const elementsToAdd = html.head.querySelectorAll(":not([spa-preserve])") const elementsToAdd = html.head.querySelectorAll(":not([spa-preserve])")
elementsToAdd.forEach((el) => document.head.appendChild(el)) elementsToAdd.forEach((el) => document.head.appendChild(el))
// delay setting the url until now
// at this point everything is loaded so changing the url should resolve to the correct addresses
history.pushState({}, "", url)
notifyNav(getFullSlug(window)) notifyNav(getFullSlug(window))
delete announcer.dataset.persist delete announcer.dataset.persist
} }