aboutsummaryrefslogtreecommitdiffstats
path: root/src/client/Buttons.hx
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/Buttons.hx')
-rw-r--r--src/client/Buttons.hx71
1 files changed, 3 insertions, 68 deletions
diff --git a/src/client/Buttons.hx b/src/client/Buttons.hx
index 78b1c5a..56f28d5 100644
--- a/src/client/Buttons.hx
+++ b/src/client/Buttons.hx
@@ -1,20 +1,15 @@
package client;
-import Types.UploadResponse;
import client.Main.getEl;
-import haxe.Json;
import haxe.Timer;
import js.Browser.document;
import js.Browser.window;
-import js.html.Blob;
import js.html.Element;
import js.html.ImageElement;
import js.html.InputElement;
import js.html.KeyboardEvent;
-import js.html.ProgressEvent;
import js.html.TransitionEvent;
import js.html.VisualViewport;
-import js.html.XMLHttpRequest;
class Buttons {
static var split:Split;
@@ -263,69 +258,9 @@ class Buttons {
}
getEl("#mediaurl-upload").onclick = e -> {
- Utils.browseFile((buffer, name) -> {
- name ??= "";
- name = ~/[?#%\/\\]/g.replace(name, "").trim();
- if (name.length == 0) name = "video";
- name = (window : Dynamic).encodeURIComponent(name);
-
- // send last chunk separately to allow server file streaming while uploading
- final chunkSize = 1024 * 1024 * 5; // 5 MB
- final bufferOffset = (buffer.byteLength - chunkSize).limitMin(0);
- final lastChunk = buffer.slice(bufferOffset);
- final chunkReq = window.fetch("/upload-last-chunk", {
- method: "POST",
- headers: {
- "content-name": name,
- },
- body: lastChunk,
- });
- chunkReq.then(e -> {
- e.json().then((data:UploadResponse) -> {
- if (data.errorId != null) {
- main.serverMessage(data.info, true, false);
- return;
- }
- final input:InputElement = getEl("#mediaurl");
- input.value = data.url;
- });
- });
-
- final request = new XMLHttpRequest();
- request.open("POST", "/upload", true);
- request.setRequestHeader("content-name", name);
-
- request.upload.onprogress = (event:ProgressEvent) -> {
- var ratio = 0.0;
- if (event.lengthComputable) {
- ratio = (event.loaded / event.total).clamp(0, 1);
- }
- main.onProgressEvent({
- type: Progress,
- progress: {
- type: Uploading,
- ratio: ratio
- }
- });
- }
-
- request.onload = (e:ProgressEvent) -> {
- final data:UploadResponse = try {
- Json.parse(request.responseText);
- } catch (e) {
- trace(e);
- return;
- }
- if (data.errorId == null) return;
- main.serverMessage(data.info, true, false);
- }
- request.onloadend = () -> {
- Timer.delay(() -> {
- main.hideDynamicChin();
- }, 500);
- }
-
- request.send(new Blob([buffer]));
+ Utils.browseJsFile(file -> {
+ final uploader = new FileUploader(main);
+ uploader.uploadFile(file);
});
}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage