Skip to content

Commit

Permalink
feat: add slug check
Browse files Browse the repository at this point in the history
  • Loading branch information
hayedewit committed Oct 23, 2023
1 parent 2aa9b11 commit 6939cf6
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 17 deletions.
18 changes: 3 additions & 15 deletions src/plugins/strapi-plugin-internal-links/server/bootstrap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ export default async ({ strapi }: { strapi: Strapi }) => {
// Lifecycles for all entitities
strapi.db?.lifecycles.subscribe({
// @ts-ignore
models: ['api::page.page'],
models: contentTypeUids,
async afterCreate(event) {
const uid = event.model.uid as Common.UID.ContentType;
// @ts-ignore
Expand All @@ -29,21 +29,9 @@ export default async ({ strapi }: { strapi: Strapi }) => {
await strapi.service('plugin::internal-links.internal-link').updateSourceEntities(uid, id, sanitizedEntity);
},
async beforeUpdate(event) {
// const uid = event.model.uid as Common.UID.ContentType;
// const id = event.params.data?.id ?? event.params.where.id ?? null;

// if (id == null) {
// // @ts-ignore
// event.state.exit = true;
// return;
// }

// const slugHasChanged = await strapi
// .service('plugin::internal-links.internal-link')
// .slugHasChanged(uid, id, event.params.data);

const slugHasChanged = await strapi.service('plugin::internal-links.internal-link').hasSlugChanged(event);
// @ts-ignore
event.state.exit = event.params.data?.lifecycleState?.exit || false;
event.state.exit = event.params.data?.lifecycleState?.exit || !slugHasChanged || false;
},
async afterUpdate(event) {
// @ts-ignore
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { groupBy, update, get, merge } from 'lodash';
import { Common } from '@strapi/strapi';
import { Event } from '@strapi/database/lib/lifecycles';
import cheerio from 'cheerio';

import { deserializeLink, getCustomFields, getPopulatedEntity, sanitizeEntity, serializeLink } from '../utils/strapi';
Expand Down Expand Up @@ -409,15 +410,26 @@ const updateInternalLinksInHtml = (html, internalLinks) => {
return $.html();
};

const slugHasChanged = async (uid: Common.UID.ContentType, id: number, data: any) => {
const slugHasChanged = async (event: Event) => {
const uid = event.model.uid as Common.UID.ContentType;
const id = event.params.data?.id;

if (id == null) {
return false;
}

const contentTypeConfig = strapi.service('plugin::internal-links.config').getContentTypeConfig(uid);
const slugField = contentTypeConfig?.slugField ?? 'path';

const oldEntity = await strapi.entityService?.findOne(uid, id, {
fields: [slugField]
});
const oldSlug = oldEntity?.path;
const newSlug = data?.[slugField];
const newSlug = event.params.data?.[slugField];

if (newSlug == null) {
return false;
}

return oldSlug !== newSlug;
};
Expand Down

0 comments on commit 6939cf6

Please sign in to comment.