feat: implement client filesystem utilities

master
Katja Lutz 2 years ago
parent c669e7fd0c
commit 8bf1f7fff6

@ -0,0 +1,49 @@
export const uploadFile = (file: File, type: "dataUrl" | "text" = "text") => {
return new Promise<string>((resolve, reject) => {
const reader = new FileReader();
reader.addEventListener("load", () => {
if (reader.error) {
return reject(reader.error);
}
if (reader.result == null) {
return reject(new Error("Result was empty"));
}
resolve(reader.result.toString());
});
if (type === "dataUrl") {
reader.readAsDataURL(file);
}
if (type === "text") {
reader.readAsText(file);
}
});
};
export const saveFile = (name: string, type: string, content: string) => {
const a = document.createElement("a");
const blob = new Blob([content], {
type,
});
const url = URL.createObjectURL(blob);
a.setAttribute("href", url);
a.setAttribute("download", name);
a.click();
};
export const selectLocalFiles = (type: string[]) => {
return new Promise<FileList>((resolve, reject) => {
const fileInput = document.createElement("input");
fileInput.type = "file";
fileInput.accept = type.join(",");
fileInput.oninput = (evt) => {
const files: FileList | undefined = (evt.currentTarget as any).files;
if (!files) {
return resolve(new FileList());
}
resolve(files);
};
fileInput.click();
});
};
Loading…
Cancel
Save