make sure FormatFormData always return a promise and update views using it accordingly

This commit is contained in:
axolotle 2021-09-29 21:42:47 +02:00
parent ced352f04f
commit 0638866838
6 changed files with 14 additions and 18 deletions

View file

@ -343,9 +343,9 @@ export function formatFormDataValue (value) {
* @param {Boolean} [extraParams.removeEmpty=true] - Removes "empty" values from the object. * @param {Boolean} [extraParams.removeEmpty=true] - Removes "empty" values from the object.
* @return {Object} the parsed data to be sent to the server, with extracted values if specified. * @return {Object} the parsed data to be sent to the server, with extracted values if specified.
*/ */
export function formatFormData ( export async function formatFormData (
formData, formData,
{ extract = null, flatten = false, removeEmpty = true, removeNull = false, promise = false, multipart = true } = {} { extract = null, flatten = false, removeEmpty = true, removeNull = false, multipart = true } = {}
) { ) {
const output = { const output = {
data: {}, data: {},
@ -376,14 +376,7 @@ export function formatFormData (
output[type][key] = value output[type][key] = value
} }
} }
if (promises.length) await Promise.all(promises)
const { data, extracted } = output const { data, extracted } = output
if (promises.length > 0 || promise) { return extract ? { data, ...extracted } : data
return new Promise((resolve, reject) => {
Promise.all(promises).then((value) => {
resolve(data)
})
})
} else {
return extract ? { data, ...extracted } : data
}
} }

View file

@ -155,7 +155,7 @@ export default {
}, },
applyConfig (id_) { applyConfig (id_) {
formatFormData(this.forms[id_], { promise: true, removeEmpty: false, removeNull: true, multipart: false }).then((formatedData) => { formatFormData(this.forms[id_], { removeEmpty: false, removeNull: true, multipart: false }).then((formatedData) => {
const args = objectToParams(formatedData) const args = objectToParams(formatedData)
api.put( api.put(

View file

@ -110,7 +110,10 @@ export default {
if (!confirmed) return if (!confirmed) return
} }
const { data: args, label } = formatFormData(this.form, { extract: ['label'] }) const { data: args, label } = await formatFormData(
this.form,
{ extract: ['label'], removeEmpty: false, removeNull: true, multipart: false }
)
const data = { app: this.id, label, args: Object.entries(args).length ? objectToParams(args) : undefined } const data = { app: this.id, label, args: Object.entries(args).length ? objectToParams(args) : undefined }
api.post('apps', data, { key: 'apps.install', name: this.name }).then(() => { api.post('apps', data, { key: 'apps.install', name: this.name }).then(() => {

View file

@ -142,7 +142,7 @@ export default {
}, },
applyConfig (id_) { applyConfig (id_) {
formatFormData(this.forms[id_], { promise: true, removeEmpty: false, removeNull: true, multipart: false }).then((formatedData) => { formatFormData(this.forms[id_], { removeEmpty: false, removeNull: true, multipart: false }).then((formatedData) => {
const args = objectToParams(formatedData) const args = objectToParams(formatedData)
api.put( api.put(

View file

@ -173,8 +173,8 @@ export default {
this.form.domain = this.mainDomain this.form.domain = this.mainDomain
}, },
onSubmit () { async onSubmit () {
const data = formatFormData(this.form, { flatten: true }) const data = await formatFormData(this.form, { flatten: true })
api.post({ uri: 'users' }, data, { key: 'users.create', name: this.form.username }).then(() => { api.post({ uri: 'users' }, data, { key: 'users.create', name: this.form.username }).then(() => {
this.$router.push({ name: 'user-list' }) this.$router.push({ name: 'user-list' })
}).catch(err => { }).catch(err => {

View file

@ -266,8 +266,8 @@ export default {
} }
}, },
onSubmit () { async onSubmit () {
const formData = formatFormData(this.form, { flatten: true }) const formData = await formatFormData(this.form, { flatten: true })
const user = this.user(this.name) const user = this.user(this.name)
const data = {} const data = {}
if (!Object.prototype.hasOwnProperty.call(formData, 'mailbox_quota')) { if (!Object.prototype.hasOwnProperty.call(formData, 'mailbox_quota')) {