51 lines
1.1 KiB
TypeScript
Raw Normal View History

2018-03-02 16:18:29 +00:00
import { AnimeNotifier } from "../AnimeNotifier"
// Select file
export function selectFile(arn: AnimeNotifier, button: HTMLButtonElement) {
let input = document.createElement("input")
let preview = document.getElementById(button.dataset.previewImageId) as HTMLImageElement
input.setAttribute("type", "file")
input.onchange = () => {
2018-03-02 20:42:34 +00:00
let file = input.files[0]
previewImage(file, preview)
2018-03-02 23:20:10 +00:00
uploadFile(file, "/api/upload/avatar")
2018-03-02 16:18:29 +00:00
}
input.click()
}
// Preview image
2018-03-02 20:42:34 +00:00
function previewImage(file: File, preview: HTMLImageElement) {
2018-03-02 16:18:29 +00:00
let reader = new FileReader()
reader.onloadend = () => {
preview.classList.remove("hidden")
preview.src = reader.result
}
if(file) {
reader.readAsDataURL(file)
} else {
2018-03-02 20:42:34 +00:00
preview.classList.add("hidden")
2018-03-02 16:18:29 +00:00
}
}
2018-03-02 23:20:10 +00:00
// Upload file
function uploadFile(file: File, endpoint: string) {
2018-03-02 20:42:34 +00:00
let reader = new FileReader()
reader.onloadend = async () => {
2018-03-02 23:20:10 +00:00
await fetch(endpoint, {
2018-03-02 20:42:34 +00:00
method: "POST",
credentials: "include",
headers: {
"Content-Type": "application/octet-stream"
},
body: reader.result
})
}
2018-03-02 16:18:29 +00:00
2018-03-02 23:04:54 +00:00
reader.readAsArrayBuffer(file)
2018-03-02 16:18:29 +00:00
}