1
Fork 0
mirror of https://github.com/glassflame/glassflame.github.io.git synced 2024-10-16 14:37:33 +00:00

Various improvements related to the fetch module

This commit is contained in:
Steffo 2023-10-18 19:51:44 +02:00
parent 64feb5e036
commit ce268ff557
Signed by: steffo
GPG key ID: 2A24051445686895

View file

@ -1,19 +1,19 @@
/** /**
* No valid kind was determined during the execution of {@link kindFromName}. * No valid kind was determined during the execution of {@link kindFromExtension}.
*/ */
export class UnknownFileKindError extends Error {} export class UnknownFileKindError extends Error {}
/** /**
* Try to determine the {@link VaultFile.kind} from a file's name. * Try to determine the {@link VaultFile.kind} from a file's extension.
* *
* @param name {string} The file name to use. * @param extension {string} The file's extension, with no leading colon.
* @returns {"card"|"canvas"} The successfully determined file type. * @returns {"card"|"canvas"} The successfully determined file type.
*/ */
function kindFromName(name) { function kindFromExtension(extension) {
if(name.endsWith(".md")) return "card" if(extension === "md") return "card"
else if(name.endsWith(".canvas")) return "canvas" else if(extension === ".canvas") return "canvas"
throw UnknownFileKindError("No file type matched the given file name.") throw UnknownFileKindError("No file type matched the given file extension.")
} }
/** /**
@ -77,8 +77,8 @@ async function fetchVaultFile(fileURL) {
if(!response.ok) throw new VaultFetchError(response, "Fetch response is not ok") if(!response.ok) throw new VaultFetchError(response, "Fetch response is not ok")
const contents = await response.text() const contents = await response.text()
const name = fileURL.pathname.split("/").at(-1) const kind = kindFromExtension(fileURL.pathname.split(".").at(-1))
const kind = kindFromName(name) const name = decodeURIComponent(fileURL.pathname.split("/").at(-1).split(".").slice(0, -1).join("."))
return new VaultFile({kind, name, contents}) return new VaultFile({kind, name, contents})
} }
@ -101,7 +101,7 @@ export async function getVaultFile(fileURL) {
if(cached !== undefined) return cached if(cached !== undefined) return cached
const vaultFile = fetchVaultFile(fileURL) const vaultFile = await fetchVaultFile(fileURL)
VAULT_CACHE[fileURL] = vaultFile VAULT_CACHE[fileURL] = vaultFile
return vaultFile return vaultFile
} }