refactored HEAD fetch
This commit is contained in:
		
							parent
							
								
									2ae7923efc
								
							
						
					
					
						commit
						c1b4225b34
					
				@ -1,18 +1,18 @@
 | 
			
		||||
<script lang="ts">
 | 
			
		||||
	import { onMount } from "svelte";
 | 
			
		||||
	import getComponentForShare from "./contentType";
 | 
			
		||||
 | 
			
		||||
	const regex = /filename="(.*)"/gm;
 | 
			
		||||
	const slug = window.location.pathname.split("/").pop();
 | 
			
		||||
 | 
			
		||||
	let component = null;
 | 
			
		||||
	let contentType: string;
 | 
			
		||||
	let filename: string;
 | 
			
		||||
 | 
			
		||||
	onMount(async () => {
 | 
			
		||||
		const regex = /filename="(.*)"/gm;
 | 
			
		||||
	async function getFileHeadAndComponent() {
 | 
			
		||||
		const res = await fetch(`/s/${slug}`,{method:"HEAD"});
 | 
			
		||||
 | 
			
		||||
		contentType = res.headers.get("Content-Type");
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		let match;
 | 
			
		||||
		while ((match = regex.exec(res.headers.get("Content-Disposition"))) !== null) {
 | 
			
		||||
			// This is necessary to avoid infinite loops with zero-width matches
 | 
			
		||||
@ -21,26 +21,20 @@
 | 
			
		||||
			}
 | 
			
		||||
			filename = match[1];
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		document.title = filename;
 | 
			
		||||
 | 
			
		||||
		component = getComponentForShare(contentType,filename);
 | 
			
		||||
	});
 | 
			
		||||
		
 | 
			
		||||
		return getComponentForShare(contentType,filename);
 | 
			
		||||
	}
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<div class="dl">
 | 
			
		||||
	<a href="/s/{slug}">Download</a>
 | 
			
		||||
</div>
 | 
			
		||||
<main>
 | 
			
		||||
	{#if component === null}
 | 
			
		||||
	{#await getFileHeadAndComponent()}
 | 
			
		||||
		Loading data...
 | 
			
		||||
	{:else}
 | 
			
		||||
		{#await component}
 | 
			
		||||
			Loading data...
 | 
			
		||||
		{:then v } 
 | 
			
		||||
			<svelte:component this={v.default} slug={slug} contentType={contentType} filename={filename} />
 | 
			
		||||
		{/await}
 | 
			
		||||
	{/if}
 | 
			
		||||
	{:then v } 
 | 
			
		||||
		<svelte:component this={v.default} slug={slug} contentType={contentType} filename={filename} />
 | 
			
		||||
	{/await}
 | 
			
		||||
</main>
 | 
			
		||||
 | 
			
		||||
<style>
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user