From da57b154bbefe1795891e265becabb021732d12b Mon Sep 17 00:00:00 2001 From: "xiang.gao" <263027768@qq.com> Date: Tue, 25 Feb 2025 10:50:18 +0800 Subject: [PATCH] fix: Uniqueness of group ID when special characters exist in tags --- package.json | 1 + src/services/models/Group.model.ts | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 527c9d20..fe61b0c4 100644 --- a/package.json +++ b/package.json @@ -148,6 +148,7 @@ "mark.js": "^8.11.1", "marked": "^4.3.0", "mobx-react": "^9.1.1", + "nanoid": "^5.1.2", "openapi-sampler": "^1.5.0", "path-browserify": "^1.0.1", "perfect-scrollbar": "^1.5.5", diff --git a/src/services/models/Group.model.ts b/src/services/models/Group.model.ts index e68f1724..9a6db7d7 100644 --- a/src/services/models/Group.model.ts +++ b/src/services/models/Group.model.ts @@ -1,4 +1,5 @@ import { action, observable, makeObservable } from 'mobx'; +import { nanoid } from 'nanoid'; import type { OpenAPIExternalDocumentation, OpenAPITag } from '../../types'; import { safeSlugify } from '../../utils'; @@ -37,8 +38,11 @@ export class GroupModel implements IMenuItem { ) { makeObservable(this); + const safeGroupName = safeSlugify(tagOrGroup.name); + const groupId = [type, '/', safeGroupName, `_${nanoid(8)}`].join(''); + // markdown headings already have ids calculated as they are needed for heading anchors - this.id = (tagOrGroup as MarkdownHeading).id || type + '/' + safeSlugify(tagOrGroup.name); + this.id = (tagOrGroup as MarkdownHeading).id || groupId; this.type = type; this.name = tagOrGroup['x-displayName'] || tagOrGroup.name; this.level = (tagOrGroup as MarkdownHeading).level || 1;