Skip to content

Commit 7e7931b

Browse files
authored
Merge pull request #292 from pluginpal/feature/fix-281
Feature/fix 281
2 parents c098a92 + 49f6fb0 commit 7e7931b

File tree

6 files changed

+308
-214
lines changed

6 files changed

+308
-214
lines changed

.changeset/public-facts-rhyme.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"strapi-plugin-webtools": patch
3+
---
4+
5+
fix: duplicate forward slash removal

.changeset/stale-houses-poke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"strapi-plugin-webtools": patch
3+
---
4+
5+
fix: actually slugify relational fields in the pattern

packages/core/server/services/url-pattern.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ const customServices = () => ({
159159

160160
fields.forEach((field) => {
161161
const relationalField = field.split('.').length > 1 ? field.split('.') : null;
162+
const { slugify } = strapi.config.get<Config>('plugin::webtools');
162163

163164
if (field === 'pluralName') {
164165
const fieldValue = strapi.contentTypes[uid].info.pluralName;
@@ -169,17 +170,16 @@ const customServices = () => ({
169170

170171
resolvedPattern = resolvedPattern.replace(`[${field}]`, fieldValue || '');
171172
} else if (!relationalField) {
172-
const { slugify } = strapi.config.get<Config>('plugin::webtools');
173173
const fieldValue = slugify(String(entity[field]));
174174
resolvedPattern = resolvedPattern.replace(`[${field}]`, fieldValue || '');
175175
} else if (Array.isArray(entity[relationalField[0]])) {
176176
strapi.log.error('Something went wrong whilst resolving the pattern.');
177177
} else if (typeof entity[relationalField[0]] === 'object') {
178-
resolvedPattern = resolvedPattern.replace(`[${field}]`, entity[relationalField[0]] && String((entity[relationalField[0]] as any[])[relationalField[1]]) ? String((entity[relationalField[0]] as any[])[relationalField[1]]) : '');
178+
resolvedPattern = resolvedPattern.replace(`[${field}]`, entity[relationalField[0]] && String((entity[relationalField[0]] as any[])[relationalField[1]]) ? slugify(String((entity[relationalField[0]] as any[])[relationalField[1]])) : '');
179179
}
180180
});
181181

182-
resolvedPattern = resolvedPattern.replace(/([^:]\/)\/+/g, '$1'); // Remove duplicate forward slashes.
182+
resolvedPattern = resolvedPattern.replace(/\/+/g, '/'); // Remove duplicate forward slashes.
183183
resolvedPattern = resolvedPattern.startsWith('/') ? resolvedPattern : `/${resolvedPattern}`; // Add a starting slash.
184184
return resolvedPattern;
185185
};

playground/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
"sitemap": "strapi-sitemap"
1313
},
1414
"dependencies": {
15-
"@strapi/plugin-cloud": "^5.10.4",
16-
"@strapi/plugin-users-permissions": "^5.10.4",
17-
"@strapi/strapi": "^5.10.4",
15+
"@strapi/plugin-cloud": "^5.17.0",
16+
"@strapi/plugin-users-permissions": "^5.17.0",
17+
"@strapi/strapi": "^5.17.0",
1818
"better-sqlite3": "11.3.0",
1919
"react": "^18.0.0",
2020
"react-dom": "^18.0.0",

playground/types/generated/contentTypes.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ export interface AdminApiToken extends Struct.CollectionTypeSchema {
3434
minLength: 1;
3535
}> &
3636
Schema.Attribute.DefaultTo<''>;
37+
encryptedKey: Schema.Attribute.Text &
38+
Schema.Attribute.SetMinMaxLength<{
39+
minLength: 1;
40+
}>;
3741
expiresAt: Schema.Attribute.DateTime;
3842
lastUsedAt: Schema.Attribute.DateTime;
3943
lifespan: Schema.Attribute.BigInteger;

0 commit comments

Comments
 (0)