1c9352a7c5c2550a52b1d9fb2bae806b6aaed1be
chmalee
  Thu Jan 18 13:28:56 2024 -0800
Starting on pre-create hook for tusd

diff --git src/hg/js/hgMyData.js src/hg/js/hgMyData.js
index 39a0f6d..3fb8d9f 100644
--- src/hg/js/hgMyData.js
+++ src/hg/js/hgMyData.js
@@ -8,37 +8,37 @@
         return `${((num/1000)/1000).toFixed(1)}mb`;
     } else {
         return `${(((num/1000)/1000)/1000).toFixed(1)}gb`;
     }
 }
 
 var hubCreate = (function() {
     let uiState = { // our object for keeping track of the current UI and what to do
         toUpload: {}, // set of file objects keyed by name
         input: null, // the <input> element for picking files from the users machine
         pickedList: null, // the <div> for displaying files in toUpload
         pendingQueue: [], // our queue of pending [xmlhttprequests, file], kind of like the toUpload object
     };
 
     // We can use XMLHttpRequest if necessary or a mirror can't use tus
-    var useTus = tus.isSupported && typeof tusdPort !== 'undefined' && typeof tusdBasePath !== 'undefined';
+    var useTus = tus.isSupported && true;
 
     function getTusdEndpoint() {
         // return the port and basepath of the tusd server
         // NOTE: the port and basepath are specified in hg.conf
-        let currUrl = parseUrl(window.location.href);
-        return "https://hgwdev-chmalee.gi.ucsc.edu" + ":" + tusdPort + "/" + tusdBasePath + "/";
+        //let currUrl = parseUrl(window.location.href);
+        return "https://hgwdev-hubspace.gi.ucsc.edu/files";
     }
 
     function togglePickStateMessage(showMsg = false) {
         if (showMsg) {
             let para = document.createElement("p");
             para.textContent = "No files selected for upload";
             para.classList.add("noFiles");
             uiState.pickedList.prepend(para);
         } else {
             let msg = document.querySelector(".noFiles");
             if (msg) {
                 msg.parentNode.removeChild(msg);
             }
         }
     }
@@ -196,40 +196,46 @@
         this.xhr.upload.addEventListener("timeout", (e) => {
         });
 
         // finally we can send the request
         this.xhr.open("POST", endpoint, true);
         fd.set("createHub", 1);
         fd.set("userFile", file);
         this.xhr.send(fd);
         uiState.pendingQueue.push([this.xhr,file]);
 
         addCancelButton(file, this.xhr);
     }
 
     function submitPickedFiles() {
         let tusdServer = getTusdEndpoint();
+        let onBeforeRequest = function(req) {
+            let xhr = req.getUnderlyingObject(req);
+            xhr.withCredentials = true;
+        };
         for (let f in uiState.toUpload) {
             file = uiState.toUpload[f];
             if (useTus) {
                 let tusOptions = {
                     endpoint: tusdServer,
                     metadata: {
                         filename: file.name,
                         fileType: file.type,
                         fileSize: file.size
-                    }
+                    },
+                    onBeforeRequest: onBeforeRequest,
+                    retryDelays: [1000],
                 };
                 // TODO: get the uploadUrl from the tusd server
                 // use a pre-create hook to validate the user
                 // and get an uploadUrl
                 let tusUpload = new tus.Upload(file, tusOptions);
                 tusUpload.start();
             } else {
                 // make a new XMLHttpRequest for each file, if tusd-tusclient not supported
                 new sendFile(file);
             }
         }
         addCancelAllButton();
         return;
     }