diff --git a/packages/core/admin/server/controllers/admin.js b/packages/core/admin/server/controllers/admin.js index a3c5e5b7c9..76caf3a81e 100644 --- a/packages/core/admin/server/controllers/admin.js +++ b/packages/core/admin/server/controllers/admin.js @@ -61,7 +61,7 @@ module.exports = { const formatedFiles = await projectSettingsService.parseFilesData(files); await validateUpdateProjectSettingsImagesDimensions(formatedFiles); - return projectSettingsService.updateProjectSettings({ body, files: formatedFiles }); + return projectSettingsService.updateProjectSettings({ ...body, ...formatedFiles }); }, async information() { diff --git a/packages/core/admin/server/services/project-settings.js b/packages/core/admin/server/services/project-settings.js index a960c5c079..66f2202caa 100644 --- a/packages/core/admin/server/services/project-settings.js +++ b/packages/core/admin/server/services/project-settings.js @@ -75,7 +75,11 @@ const getProjectSettings = async () => { const uploadFiles = async (files = {}) => { // Call the provider upload function for each file - return Promise.all(Object.values(files).map(strapi.plugin('upload').provider.uploadStream)); + return Promise.all( + Object.values(files) + .filter(file => file.stream instanceof fs.ReadStream) + .map(strapi.plugin('upload').provider.uploadStream) + ); }; const deleteOldFiles = async ({ previousSettings, newSettings }) => { @@ -106,17 +110,13 @@ const deleteOldFiles = async ({ previousSettings, newSettings }) => { ); }; -const updateProjectSettings = async ({ body, files }) => { +const updateProjectSettings = async newSettings => { const store = strapi.store({ type: 'core', name: 'admin' }); const previousSettings = await store.get({ key: 'project-settings' }); + const files = pick(newSettings, PROJECT_SETTINGS_FILE_INPUTS); await uploadFiles(files); - const newSettings = { - ...body, - ...files, - }; - PROJECT_SETTINGS_FILE_INPUTS.forEach(inputName => { // If the user input exists but is not a formdata "file" remove it if (newSettings[inputName] !== undefined && !(typeof newSettings[inputName] === 'object')) {