fix: resolve semantic documentation deep links
Module Package Release / publish-packages (push) Successful in 12s
Module Package Release / publish-packages (push) Successful in 12s
This commit is contained in:
@@ -1083,7 +1083,7 @@ def _semantic_documentation_topics(
|
|||||||
"route": route,
|
"route": route,
|
||||||
"route_anchor": route_anchor,
|
"route_anchor": route_anchor,
|
||||||
"help_contexts": [
|
"help_contexts": [
|
||||||
_semantic_help_context(entry),
|
_semantic_help_context(entry, route_anchor=route_anchor),
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
@@ -1091,20 +1091,19 @@ def _semantic_documentation_topics(
|
|||||||
return tuple(topics)
|
return tuple(topics)
|
||||||
|
|
||||||
|
|
||||||
def _semantic_help_context(entry: object) -> str:
|
def _semantic_help_context(
|
||||||
|
entry: object,
|
||||||
|
*,
|
||||||
|
route_anchor: object | None,
|
||||||
|
) -> str:
|
||||||
values = [
|
values = [
|
||||||
"semantic",
|
"semantic",
|
||||||
str(getattr(entry, "subject_module_id")),
|
str(getattr(entry, "subject_module_id")),
|
||||||
str(getattr(entry, "subject_kind")),
|
str(getattr(entry, "subject_kind")),
|
||||||
str(getattr(entry, "subject_id")),
|
str(getattr(entry, "subject_id")),
|
||||||
]
|
]
|
||||||
if getattr(entry, "anchor_kind", None) and getattr(entry, "anchor_id", None):
|
if route_anchor:
|
||||||
values.extend(
|
values.append(str(route_anchor))
|
||||||
(
|
|
||||||
str(getattr(entry, "anchor_kind")),
|
|
||||||
str(getattr(entry, "anchor_id")),
|
|
||||||
)
|
|
||||||
)
|
|
||||||
return ".".join(values)
|
return ".".join(values)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -83,7 +83,17 @@ export default function SemanticDocumentationPage({ settings }: { settings: ApiS
|
|||||||
setEntries(nextEntries);
|
setEntries(nextEntries);
|
||||||
const requestedEntry = searchParams.get("entryId");
|
const requestedEntry = searchParams.get("entryId");
|
||||||
const entry = nextEntries.find((item) => item.id === requestedEntry) ?? selectedEntry;
|
const entry = nextEntries.find((item) => item.id === requestedEntry) ?? selectedEntry;
|
||||||
if (entry) selectExisting(entry, nextSubjects);
|
if (entry) {
|
||||||
|
selectExisting(entry, nextSubjects);
|
||||||
|
} else {
|
||||||
|
const requestedSubject = nextSubjects.find((item) => (
|
||||||
|
item.reference.module_id === searchParams.get("module")
|
||||||
|
&& item.reference.subject_kind === searchParams.get("subjectKind")
|
||||||
|
&& item.reference.subject_id === searchParams.get("subjectId")
|
||||||
|
&& (item.route_anchor ?? "") === (searchParams.get("routeAnchor") ?? "")
|
||||||
|
));
|
||||||
|
if (requestedSubject) selectNew(requestedSubject, nextEntries);
|
||||||
|
}
|
||||||
} catch (reason) {
|
} catch (reason) {
|
||||||
setError(adminErrorMessage(reason));
|
setError(adminErrorMessage(reason));
|
||||||
} finally {
|
} finally {
|
||||||
@@ -155,8 +165,8 @@ export default function SemanticDocumentationPage({ settings }: { settings: ApiS
|
|||||||
setSearchParams({ entryId: entry.id, locale: entry.locale }, { replace: true });
|
setSearchParams({ entryId: entry.id, locale: entry.locale }, { replace: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectNew(subject: SemanticSubjectDescriptor) {
|
function selectNew(subject: SemanticSubjectDescriptor, availableEntries = entries) {
|
||||||
const existing = entries.find((entry) => entry.locale === locale && sameSubject(entry.subject, subject.reference));
|
const existing = availableEntries.find((entry) => entry.locale === locale && sameSubject(entry.subject, subject.reference));
|
||||||
if (existing) {
|
if (existing) {
|
||||||
selectExisting(existing);
|
selectExisting(existing);
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user