diff --git a/.changeset/wacky-spoons-share.md b/.changeset/wacky-spoons-share.md new file mode 100644 index 00000000..75364f87 --- /dev/null +++ b/.changeset/wacky-spoons-share.md @@ -0,0 +1,6 @@ +--- +"webtools-addon-sitemap": patch +"strapi-plugin-webtools": patch +--- + +fix: incorrect sitemap generation during auto/bulk generation diff --git a/packages/addons/sitemap/server/middlewares/auto-generate.js b/packages/addons/sitemap/server/middlewares/auto-generate.js index c199a0a2..5aa4984e 100644 --- a/packages/addons/sitemap/server/middlewares/auto-generate.js +++ b/packages/addons/sitemap/server/middlewares/auto-generate.js @@ -26,7 +26,9 @@ const autoGenerateMiddleware = async (context, next) => { const document = await next(); // Generate the sitemap. - getPluginService('core').createSitemap('default'); + setTimeout(() => { + getPluginService('core').createSitemap('default'); + }, 0); // Return the document return document; diff --git a/packages/core/server/services/bulk-generate.ts b/packages/core/server/services/bulk-generate.ts index cccef412..0ac5ee17 100644 --- a/packages/core/server/services/bulk-generate.ts +++ b/packages/core/server/services/bulk-generate.ts @@ -1,4 +1,4 @@ -import { UID } from '@strapi/strapi'; +import { UID, Data } from '@strapi/strapi'; import { getPluginService } from '../util/getPluginService'; import { GenerationType } from '../types'; @@ -82,9 +82,20 @@ const generateUrlAliases = async (params: GenerateParams): Promise => { }); // eslint-disable-next-line no-await-in-loop - await strapi.db.query(type as 'api::test.test').updateRelations(entity.id, { - url_alias: [newUrlAlias.id], - }); + const allItems = await strapi.db.query(type as 'api::test.test').findMany({ + where: { + ...(entity.locale ? { locale: entity.locale } : {}), + document_id: entity.documentId, + }, + }) as Data.ContentType[]; + + // eslint-disable-next-line no-restricted-syntax + for (const doc of allItems) { + // eslint-disable-next-line no-await-in-loop + await strapi.db.query(type as 'api::test.test').updateRelations(doc.id, { + url_alias: [newUrlAlias.id], + }); + } // eslint-disable-next-line no-await-in-loop await Promise.all(entity.localizations.map(async (loc) => { @@ -103,9 +114,20 @@ const generateUrlAliases = async (params: GenerateParams): Promise => { }); // eslint-disable-next-line no-await-in-loop - await strapi.db.query(type as 'api::test.test').updateRelations(loc.id, { - url_alias: [alias.id], - }); + const allLocalizations = await strapi.db.query(type as 'api::test.test').findMany({ + where: { + ...(loc.locale ? { locale: loc.locale } : {}), + document_id: loc.documentId, + }, + }) as Data.ContentType[]; + + // eslint-disable-next-line no-restricted-syntax + for (const doc of allLocalizations) { + // eslint-disable-next-line no-await-in-loop + await strapi.db.query(type as 'api::test.test').updateRelations(doc.id, { + url_alias: [alias.id], + }); + } })); generatedCount += 1;