Parcourir la source

Proposed amendment

dom111 il y a 2 ans
Parent
commit
d6af800abe
4 fichiers modifiés avec 58 ajouts et 10 suppressions
  1. 4 0
      src/components/Item.ts
  2. 54 10
      src/lib/HTTP.ts
  3. 0 0
      src/webdav-min.js
  4. 0 0
      src/webdav.js.map

+ 4 - 0
src/components/Item.ts

@@ -113,6 +113,10 @@ export default class Item extends Element {
 
   private bindEvents(): void {
     this.on('click', (event: MouseEvent): void => {
+      if (this.#entry.placeholder) {
+        return;
+      }
+
       if (event.ctrlKey || event.button === 1) {
         window.open(this.#entry.fullPath);
 

+ 54 - 10
src/lib/HTTP.ts

@@ -51,6 +51,47 @@ const method = async (
   return response;
 };
 
+const methodXHR = async (
+  method: string,
+  url: RequestInfo,
+  body: Document | XMLHttpRequestBodyInit | null = null,
+  parameters: RequestInit = {},
+  onProgress: (loaded: number) => void = () => {}
+): Promise<Response> => {
+  return new Promise<Response>(async (resolve, reject) => {
+    const request = new Request(url, {
+      ...(defaultParams[method] || {}),
+      ...parameters,
+      method,
+    });
+
+    const xhr = new XMLHttpRequest();
+
+    xhr.open(request.method, request.url, true);
+    request.headers.forEach((value, key) => xhr.setRequestHeader(key, value));
+    xhr.upload.addEventListener('progress', (e) => onProgress(e.loaded), false);
+    xhr.addEventListener('loadend', () => {
+      const response = new Response(xhr.response, {
+        headers: xhr
+          .getAllResponseHeaders()
+          .trim()
+          .split('\r\n')
+          .map((line) => line.split(': ', 2) as [string, string]),
+        status: xhr.status,
+        statusText: xhr.statusText,
+      });
+
+      if (!response.ok) {
+        reject(new RequestFailure(request, response));
+      }
+
+      resolve(response);
+    });
+
+    xhr.send(body);
+  });
+};
+
 export class HTTP {
   GET(url: string, parameters: RequestInit = {}): Promise<Response> {
     return method('GET', url, parameters);
@@ -63,16 +104,19 @@ export class HTTP {
   PUT(
     url: string,
     file: File,
-    onProgress: (uploadedBytes: number) => void
-  ): Promise<XMLHttpRequest> {
-    return new Promise((resolve) => {
-      const xhr = new XMLHttpRequest();
-      xhr.open('PUT', url, true);
-      xhr.setRequestHeader('Content-Type', file.type);
-      xhr.upload.onprogress = (e) => onProgress(e.loaded);
-      xhr.onloadend = () => resolve(xhr);
-      xhr.send(file);
-    });
+    onProgress: (uploadedBytes: number) => void,
+    parameters: RequestInit
+  ): Promise<Response> {
+    return methodXHR(
+      'PUT',
+      url,
+      file,
+      {
+        ...parameters,
+        headers: [['Content-Type', file.type]],
+      },
+      onProgress
+    );
   }
 
   PROPFIND(url: string, parameters: RequestInit = {}): Promise<Response> {

Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/webdav-min.js


Fichier diff supprimé car celui-ci est trop grand
+ 0 - 0
src/webdav.js.map


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff