Created
August 27, 2021 00:00
-
-
Save feliperodriguess/4c47b018821e45fb4b2a40d2a3d07def to your computer and use it in GitHub Desktop.
Create Form Data / Create Form Data Documents - FE integration helpers
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Usage: dispatch(upload(createFormDataDocuments([...event.target.files]))) | |
export const createFormData = (data, isCamelized = false) => { | |
const formData = new FormData() | |
Object.keys(data).forEach(field => { | |
const fieldValue = data[field] | |
const formDataValue = (() => { | |
if (!fieldValue) { | |
return '' | |
} | |
if (fieldValue instanceof Blob || typeof fieldValue !== 'object') { | |
return fieldValue | |
} | |
return JSON.stringify(fieldValue) | |
})() | |
formData.append(isCamelized ? field : humps.decamelize(field), formDataValue) | |
}) | |
return formData | |
} | |
export const createFormDataDocuments = (data, isCamelized = false) => { | |
const formData = new FormData() | |
Object.keys(data).forEach(field => { | |
const fieldValue = data[field] | |
const formDataValue = (() => { | |
if (!fieldValue) { | |
return '' | |
} | |
if ( | |
fieldValue instanceof Blob || | |
typeof fieldValue !== 'object' || | |
Array.isArray(fieldValue) | |
) { | |
return fieldValue | |
} | |
return JSON.stringify(fieldValue) | |
})() | |
if (Array.isArray(formDataValue)) { | |
formDataValue.forEach(value => { | |
if (value instanceof Blob && value.constructor === Blob) { | |
formData.append(isCamelized ? field : humps.decamelize(field), value, value.name) | |
} else { | |
formData.append(isCamelized ? field : humps.decamelize(field), value) | |
} | |
}) | |
} else if (formDataValue instanceof Blob && formDataValue.constructor === Blob) { | |
formData.append( | |
isCamelized ? field : humps.decamelize(field), | |
formDataValue, | |
formDataValue.name | |
) | |
} else { | |
formData.append(isCamelized ? field : humps.decamelize(field), formDataValue) | |
} | |
}) | |
return formData | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment