From 108409941bc3d42f8615f1900e4d1a6885ab5cb8 Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 15 Mar 2021 15:47:10 +0100 Subject: [PATCH] check both action & params.id --- .../services/entity-service-decorator.js | 27 +++++++++---------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/packages/strapi-plugin-i18n/services/entity-service-decorator.js b/packages/strapi-plugin-i18n/services/entity-service-decorator.js index 92df3cd22c..93df930dc6 100644 --- a/packages/strapi-plugin-i18n/services/entity-service-decorator.js +++ b/packages/strapi-plugin-i18n/services/entity-service-decorator.js @@ -7,13 +7,16 @@ const { isLocalized } = require('./content-types'); const { syncLocalizations, updateNonLocalizedFields } = require('./localizations'); const LOCALE_QUERY_FILTER = '_locale'; +const SINGLE_ENTRY_ACTIONS = ['findOne', 'update', 'delete']; /** * Adds default locale or replaces _locale by locale in query params * @param {object} params - query params */ -const wrapParams = async (params = {}) => { - if (params.id) { +const wrapParams = async (params = {}, ctx = {}) => { + const { action } = ctx; + + if (has('id', params) && SINGLE_ENTRY_ACTIONS.includes(action)) { return params; } @@ -47,14 +50,7 @@ const decorator = service => ({ */ async wrapOptions(opts = {}, ctx = {}) { - const { action } = ctx; - - const wrappedOptions = await service.wrapOptions.apply(this, [opts, ctx]); - - // do not change if parameter contains an id ? - if (action === 'findOne') { - return wrappedOptions; - } + const wrappedOptions = await service.wrapOptions.call(this, opts, ctx); const model = strapi.db.getModel(ctx.model); @@ -64,7 +60,7 @@ const decorator = service => ({ return { ...wrappedOptions, - params: await wrapParams(wrappedOptions.params), + params: await wrapParams(wrappedOptions.params, ctx), }; }, @@ -76,7 +72,7 @@ const decorator = service => ({ */ async create(opts, ctx) { const model = strapi.db.getModel(ctx.model); - const entry = await service.create.apply(this, [opts, ctx]); + const entry = await service.create.call(this, opts, ctx); if (isLocalized(model)) { await syncLocalizations(entry, { model }); @@ -96,13 +92,14 @@ const decorator = service => ({ const { data, ...restOptions } = opts; - const entry = await service.update.apply(this, [ + const entry = await service.update.call( + this, { data: omit(['locale', 'localizations'], data), ...restOptions, }, - ctx, - ]); + ctx + ); if (isLocalized(model)) { await updateNonLocalizedFields(entry, { model });