Skip to content
Snippets Groups Projects
Commit 476a7bce authored by Jose Manuel Serrano Amaut's avatar Jose Manuel Serrano Amaut
Browse files

[REF]: deleted duplicated methods in upload.ts and utils.upload.ts. Also added...

[REF]: deleted duplicated methods in upload.ts and utils.upload.ts. Also added sanitizeArrExtFile() function for creating a sanitized ExtFile array from ExtFleInstance array
parent c1335d32
No related branches found
No related tags found
No related merge requests found
...@@ -104,7 +104,6 @@ export { ...@@ -104,7 +104,6 @@ export {
sleepTransition, sleepTransition,
toUploadableExtFileList, toUploadableExtFileList,
unableToUploadResult, unableToUploadResult,
uploadOnePromiseXHR,
makeServerResponse, makeServerResponse,
uploadFile, uploadFile,
uploadFormData, uploadFormData,
...@@ -117,7 +116,9 @@ export { ...@@ -117,7 +116,9 @@ export {
makeErrorUploadResponse, makeErrorUploadResponse,
makeSuccessUploadResponse, makeSuccessUploadResponse,
addExtraData, addExtraData,
addHeaders addHeaders,
sanitizeArrExtFile,
unexpectedErrorUploadResult
} from "./upload"; } from "./upload";
export { export {
......
...@@ -2,9 +2,6 @@ export { ...@@ -2,9 +2,6 @@ export {
uploadExtFile, uploadExtFile,
FuiUpload, FuiUpload,
completeUploadResult,
unableToUploadResult,
uploadOnePromiseXHR,
uploadFile, uploadFile,
uploadFormData, uploadFormData,
} from "./upload"; } from "./upload";
...@@ -30,15 +27,8 @@ export { ...@@ -30,15 +27,8 @@ export {
preparingToUploadOne, preparingToUploadOne,
sleepTransition, sleepTransition,
toUploadableExtFileList, toUploadableExtFileList,
} from "./utils.upload";
/* export {
FuiUpload,
completeUploadResult, completeUploadResult,
instantPreparingToUploadOne, sanitizeArrExtFile,
preparingToUploadOne,
sleepTransition,
toUploadableExtFileList,
unableToUploadResult, unableToUploadResult,
unexpectedErrorUploadResult, unexpectedErrorUploadResult
uploadOnePromiseXHR } from "./utils.upload";
} from "./upload.utils"; */
\ No newline at end of file
...@@ -4,6 +4,7 @@ import addExtraDataUpload from "./addExtraData.upload"; ...@@ -4,6 +4,7 @@ import addExtraDataUpload from "./addExtraData.upload";
import addHeaders from "./addheaders.upload"; import addHeaders from "./addheaders.upload";
import { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from "./errors.upload"; import { ABORTED_ERROR_RESPONSE, NO_XHR_PROVIDED_ERROR, TIMEOUT_ERROR_RESPONSE, UNEXPECTED_ERROR_RESPONSE } from "./errors.upload";
import { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from "./response.upload"; import { JsonParseResponse, makeErrorUploadResponse, makeSuccessUploadResponse } from "./response.upload";
import { completeUploadResult, unableToUploadResult } from "./utils.upload";
/** /**
...@@ -23,30 +24,55 @@ export const uploadFormData = ( ...@@ -23,30 +24,55 @@ export const uploadFormData = (
headers: Record<string, string> | undefined headers: Record<string, string> | undefined
) => { ) => {
return new Promise<ServerResponse>((resolve, reject) => { return new Promise<ServerResponse>((resolve, reject) => {
console.log("uploadFile", xhr, method, endpoint, data, headers); console.log("Fui_uploadFormData uploadFile", xhr, method, endpoint, data, headers);
const finalMethod: Method = ["POST", "PUT", "PATCH"].includes(method.toUpperCase()) ? method : "POST"; const finalMethod: Method = ["POST", "PUT", "PATCH"].includes(method.toUpperCase()) ? method : "POST";
let lastLastState: number = -1;
let lastState: number = 0;
let jumped: boolean = false;
xhr.upload.onload = () => { xhr.upload.onload = () => {
console.log("uploadFile onLoad", xhr.readyState, xhr.response); console.log("Fui_uploadFormData uploadFile onLoad", xhr.readyState, xhr.response);
}; };
xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE); xhr.upload.ontimeout = () => resolve(TIMEOUT_ERROR_RESPONSE);
xhr.upload.onabort = () => resolve(ABORTED_ERROR_RESPONSE); xhr.upload.onabort = () => {
console.log("Fui_uploadFormData ABORTEEEEDDDD");
resolve(ABORTED_ERROR_RESPONSE);
};
xhr.onloadend = async (e) => {
console.log("onloadend loaded", e.loaded);
console.log("onloadend total", e.total);
console.log("onloadend lengthComputable", e.lengthComputable);
}
// listen for `progress` event // listen for `progress` event
//currently listening on FileItem component hook //currently listening on FileItem component hook
xhr.onreadystatechange = async (e) => { xhr.onreadystatechange = async (e) => {
//console.log("Finished", xhr); //console.log("Finished", xhr);
console.log("uploadFile onreadystatechange", xhr.readyState, xhr.response);
console.log("Fui_uploadFormData uploadFile onreadystatechange e.type", e.type);
console.log("Fui_uploadFormData uploadFile onreadystatechange", xhr.readyState, xhr.response);
lastLastState = lastState;
lastState = xhr.readyState;
if (xhr.readyState === 4) { if (xhr.readyState === 4) {
if (xhr.response !== "") { if (xhr.response !== "") {
//there is th answer //there is th answer
resolve(JsonParseResponse(xhr)); resolve(JsonParseResponse(xhr));
} else { } else {
//error unexpected //error unexpected
resolve(UNEXPECTED_ERROR_RESPONSE); console.log("Fui_uploadFormData EMPTY status", xhr.status);
console.log("Fui_uploadFormData EMPTY readyState", xhr.readyState);
console.log("Fui_uploadFormData EMPTY upload", xhr.upload);
//console.log("Fui_uploadFormData EMPTY abort", xhr.abort);
//const jumped = lastLastState - lastLastState !== 1;
resolve(ABORTED_ERROR_RESPONSE);
} }
} else { } else {
console.log("FuiUpload NOT YET" + xhr.readyState); console.log("Fui_uploadFormData FuiUpload NOT YET" + xhr.readyState);
} }
}; };
// open request // open request
...@@ -152,102 +178,11 @@ export function uploadFile( ...@@ -152,102 +178,11 @@ export function uploadFile(
}); });
} }
export const unableToUploadResult = (
extFile: ExtFile
): UploadResponse => {
return {
id: extFile.id,
uploadedFile: {
...extFile,
uploadMessage: "Unable to upload. XHR was not provided",
uploadStatus: "error"
},
serverResponse: {
}
}
}
export const completeUploadResult = (
extFile: ExtFile,
serverResponse: ServerResponse,
result: UPLOADSTATUS
): UploadResponse => {
return {
id: extFile.id,
uploadedFile: {
...extFile,
uploadMessage: serverResponse.message,
uploadStatus: result
},
serverResponse: serverResponse
}
}
/**
* @deprecated
*/
export const uploadOnePromiseXHR = async (
extFile: ExtFile,
url: string,
method?: Method,
headers?: Record<string, string>,
uploadLabel?: string,
extraData?: Record<string, any>
): Promise<UploadResponse> => {
return new Promise(async (resolve, reject) => {
try {
const uploader: XMLHttpRequest | undefined = extFile.xhr;
if (!uploader) {
const duiUploadResponse: UploadResponse = unableToUploadResult(extFile);
resolve(duiUploadResponse);
return;
}
const localMethod: Method = (method) || "POST";
const fileToUpload: File = extFile.file as File;
const formData = new FormData();
if (typeof uploadLabel === "string" && uploadLabel.length > 0) {
formData.append(uploadLabel, fileToUpload
//, extFile.file?.name
);
//add extraData that will be obtained from req.body
} else
formData.append("file", fileToUpload);
const finalExtraData: Record<string, any> =
{ otherValue: "other valueee haaaa", param2: { tecnica: "KIKOHUUUU", friend: "Chaos", age: 25 }, ...extraData };
if (finalExtraData) {
const extraDataKeys: string[] = Object.keys(finalExtraData);
extraDataKeys.forEach(key => {
const finalValue: string = typeof finalExtraData[key] === "string" ? finalExtraData[key] : JSON.stringify(finalExtraData[key]);
formData.append(key, finalValue);
});
}
let serverResponse: ServerResponse;
//console.log();
serverResponse = await FuiUpload(uploader, localMethod, url, formData, headers || {});
if (serverResponse.success) {
const duiUploadResponse: UploadResponse = completeUploadResult(extFile, serverResponse, "success");
resolve(duiUploadResponse);
} else {
// success is false
const duiUploadResponse: UploadResponse = completeUploadResult(extFile, serverResponse, "error");
resolve(duiUploadResponse);
}
} catch (error) {
// on error
console.log("uploadOnePromiseXHR ERROR", error);
const duiUploadResponse: UploadResponse = unableToUploadResult(extFile);
resolve(duiUploadResponse);
}
});
};
/** /**
* @deprecated * @deprecated
......
...@@ -115,3 +115,22 @@ export const sleepTransition = ( ...@@ -115,3 +115,22 @@ export const sleepTransition = (
}); });
} }
export const sanitizeArrExtFile = (arrExtFile: ExtFileInstance[]): ExtFile[] => {
/* console.log("sanitizeArrExtFile", arrExtFile.length, arrExtFile.filter((extFileInstance: ExtFileInstance) => extFileInstance.extraData?.deleted)
.map((extFileInstance: ExtFileInstance) => extFileInstance.toExtFile()).length);
*/
return arrExtFile.filter((extFileInstance: ExtFileInstance) =>
!extFileInstance.extraData?.deleted)
.map((extFileInstance: ExtFileInstance) => {
if (extFileInstance.uploadStatus === "aborted") {
if(!extFileInstance.uploadMessage){
extFileInstance.uploadMessage="Upload aborted";
}
extFileInstance.uploadStatus = "error";
}
return extFileInstance.toExtFile()
});
}
\ No newline at end of file
...@@ -7,11 +7,11 @@ import { FileIdGenerator } from "./IdGenerator"; ...@@ -7,11 +7,11 @@ import { FileIdGenerator } from "./IdGenerator";
* @returns an array of ExtFile objects * @returns an array of ExtFile objects
*/ */
export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => { export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {
let filesValidated: ExtFile[] = []; let extFileArray: ExtFile[] = [];
for (let i = 0, f: File; (f = fileList[i]); i++) { for (let i = 0, f: File; (f = fileList[i]); i++) {
filesValidated.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type }); extFileArray.push({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type });
} }
return filesValidated; return extFileArray;
}; };
/** /**
...@@ -20,9 +20,9 @@ export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => { ...@@ -20,9 +20,9 @@ export const fileListToExtFileArray = (fileList: FileList): ExtFile[] => {
* @returns an array of ExtFile instances * @returns an array of ExtFile instances
*/ */
export const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => { export const fileListToExtFileInstanceArray = (fileList: FileList): ExtFileInstance[] => {
let filesValidated: ExtFileInstance[] = []; let extFileArray: ExtFileInstance[] = [];
for (let i = 0, f: File; (f = fileList[i]); i++) { for (let i = 0, f: File; (f = fileList[i]); i++) {
filesValidated.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type })); extFileArray.push(new ExtFileInstance({ id: FileIdGenerator.getNextId(), file: f, name: f.name, size: f.size, type: f.type }));
} }
return filesValidated; return extFileArray;
}; };
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment