avoid 404 on icon for spa navigations with anchors
This commit is contained in:
		
							parent
							
								
									dd47be1bc6
								
							
						
					
					
						commit
						78f4cdbe10
					
				
					 2 changed files with 5 additions and 3 deletions
				
			
		| 
						 | 
					@ -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 (
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue