aboutsummaryrefslogtreecommitdiff
path: root/client-web/source
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2023-05-27 13:47:56 +0200
committermetamuffin <metamuffin@disroot.org>2023-05-27 13:47:56 +0200
commitab1c3b39a1077b3f4bad75c6a0722c850d06d409 (patch)
treebddfff3e47c8f5559c60d0346492f1917c9b9f25 /client-web/source
parentadb6d2425997841b51d9989e0a5a268810742e71 (diff)
downloadkeks-meet-ab1c3b39a1077b3f4bad75c6a0722c850d06d409.tar
keks-meet-ab1c3b39a1077b3f4bad75c6a0722c850d06d409.tar.bz2
keks-meet-ab1c3b39a1077b3f4bad75c6a0722c850d06d409.tar.zst
handle dc on_message ArrayBuffer as well to work in chromium
Diffstat (limited to 'client-web/source')
-rw-r--r--client-web/source/download_stream.ts14
-rw-r--r--client-web/source/resource/file.ts15
2 files changed, 16 insertions, 13 deletions
diff --git a/client-web/source/download_stream.ts b/client-web/source/download_stream.ts
index 5aafde1..3de8e70 100644
--- a/client-web/source/download_stream.ts
+++ b/client-web/source/download_stream.ts
@@ -71,15 +71,11 @@ export function StreamDownload({ size, filename, cancel, progress }: {
abort() {
port1.postMessage("abort")
},
- write(chunk: Blob) {
- const reader = new FileReader();
- reader.onload = function (event) {
- const arr = new Uint8Array(event.target!.result as ArrayBuffer);
- port1.postMessage(arr)
- position += arr.length
- if (progress) progress(position)
- };
- reader.readAsArrayBuffer(chunk);
+ write(chunk: ArrayBuffer) {
+ const arr = new Uint8Array(chunk);
+ port1.postMessage(arr)
+ position += arr.length
+ if (progress) progress(position)
}
}
}
diff --git a/client-web/source/resource/file.ts b/client-web/source/resource/file.ts
index f577580..738473a 100644
--- a/client-web/source/resource/file.ts
+++ b/client-web/source/resource/file.ts
@@ -77,13 +77,21 @@ export const resource_file: ResourceHandlerDecl = {
reset()
}
channel.onmessage = ev => {
- const data: Blob | string = ev.data
+ const data: Blob | ArrayBuffer | string = ev.data
+ console.log(data);
if (typeof data == "string") {
if (data == "end") {
finished = true
+ channel.close()
}
- } else {
- download.write(data as Blob)
+ } else if (data instanceof Blob) {
+ const reader = new FileReader();
+ reader.onload = function (event) {
+ download.write(event.target!.result as ArrayBuffer)
+ };
+ reader.readAsArrayBuffer(data);
+ } else if (data instanceof ArrayBuffer) {
+ download.write(data)
}
}
}
@@ -135,7 +143,6 @@ function file_res_inner(file: File): LocalResource {
await sleep(10)
}
display.status = "Waiting for the channel to close…"
- channel.close()
}
const feed = async () => {
const { value: chunk, done }: { value?: Uint8Array, done: boolean } = await reader.read()