fix(ui): handle edit documentation button on sidebar with new summary page and update permissions (#14799)

Co-authored-by: Chris Collins <chriscollins3456@gmail.com>
This commit is contained in:
purnimagarg1 2025-09-18 02:34:36 +05:30 committed by GitHub
parent a1c3af3360
commit 9ef4c3945e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 55 additions and 9 deletions

View File

@ -240,3 +240,10 @@ export const TITLE_CASE_EXCEPTION_WORDS = ['of', 'the', 'in', 'on', 'and', 'a',
export const RECOMMENDATION_MODULE_ID_RECENTLY_VIEWED_ENTITIES = 'RecentlyViewedEntities';
export const RECOMMENDATION_MODULE_ID_RECENTLY_EDITED_ENTITIES = 'RecentlyEditedEntities';
export const RECOMMENDATION_MODULE_ID_RECENT_SEARCHES = 'RecentSearches';
export const ENTITY_TYPES_WITH_NEW_SUMMARY_TAB = [
EntityType.GlossaryNode,
EntityType.GlossaryTerm,
EntityType.DataProduct,
EntityType.Domain,
];

View File

@ -3,7 +3,7 @@ import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
import React from 'react';
import { useEntityData, useMutationUrn, useRouteToTab } from '@app/entity/shared/EntityContext';
import { EMPTY_MESSAGES } from '@app/entityV2/shared/constants';
import { EMPTY_MESSAGES, ENTITY_TYPES_WITH_NEW_SUMMARY_TAB } from '@app/entityV2/shared/constants';
import DescriptionSection from '@app/entityV2/shared/containers/profile/sidebar/AboutSection/DescriptionSection';
import LinksSection from '@app/entityV2/shared/containers/profile/sidebar/AboutSection/LinksSection';
import SourceRefSection from '@app/entityV2/shared/containers/profile/sidebar/AboutSection/SourceRefSection';
@ -11,6 +11,8 @@ import EmptySectionText from '@app/entityV2/shared/containers/profile/sidebar/Em
import SectionActionButton from '@app/entityV2/shared/containers/profile/sidebar/SectionActionButton';
import { SidebarSection } from '@app/entityV2/shared/containers/profile/sidebar/SidebarSection';
import { getEntityPath } from '@app/entityV2/shared/containers/profile/utils';
import { useDocumentationPermission } from '@app/entityV2/summary/documentation/useDocumentationPermission';
import { useShowAssetSummaryPage } from '@app/entityV2/summary/useShowAssetSummaryPage';
import { useIsSeparateSiblingsMode } from '@src/app/entity/shared/siblingUtils';
import { getAssetDescriptionDetails } from '@src/app/entityV2/shared/tabs/Documentation/utils';
import useIsLineageMode from '@src/app/lineage/utils/useIsLineageMode';
@ -47,7 +49,9 @@ export const SidebarAboutSection = ({ properties, readOnly }: Props) => {
const hasContent = !!displayedDescription || links.length > 0;
const canEditDescription = !!entityData?.privileges?.canEditDescription;
const canEditDescription = useDocumentationPermission();
const showNewSummaryTab = useShowAssetSummaryPage();
return (
<>
@ -74,7 +78,17 @@ export const SidebarAboutSection = ({ properties, readOnly }: Props) => {
dataTestId="editDocumentation"
onClick={(event) => {
if (!isEmbeddedProfile) {
routeToTab({ tabName: 'Documentation', tabParams: { editing: true } });
if (
ENTITY_TYPES_WITH_NEW_SUMMARY_TAB.includes(entityType) &&
showNewSummaryTab
) {
routeToTab({
tabName: 'Summary',
tabParams: { editingDescription: true },
});
} else {
routeToTab({ tabName: 'Documentation', tabParams: { editing: true } });
}
} else {
const url = getEntityPath(
entityType,

View File

@ -23,6 +23,7 @@ interface Props {
export default function SummaryTab({ properties }: { properties?: Props }) {
const { urn } = useEntityData();
return (
<PageTemplateProvider templateType={PageTemplateSurfaceType.AssetSummary}>
<SummaryWrapper>

View File

@ -1,5 +1,7 @@
import { Button, Editor, Text, Tooltip } from '@components';
import React, { useState } from 'react';
import queryString from 'query-string';
import React, { useEffect, useState } from 'react';
import { useHistory, useLocation } from 'react-router-dom';
import styled from 'styled-components';
import DescriptionViewer from '@app/entityV2/summary/documentation/DescriptionViewer';
@ -42,8 +44,12 @@ interface Props {
}
export default function AboutSection({ hideLinksButton }: Props) {
const history = useHistory();
const { search, pathname } = useLocation();
const isEditingDescription = !!queryString.parse(search, { parseBooleans: true }).editingDescription;
const [showAddLinkModal, setShowAddLinkModal] = useState(false);
const [showAddDescriptionModal, setShowDescriptionModal] = useState(false);
const [showAddDescriptionModal, setShowDescriptionModal] = useState(isEditingDescription);
const hasLinkPermissions = useLinkPermission();
const canEditDescription = useDocumentationPermission();
@ -55,6 +61,27 @@ export default function AboutSection({ hideLinksButton }: Props) {
emptyDescriptionText,
} = useDescriptionUtils();
useEffect(() => {
setShowDescriptionModal(isEditingDescription);
}, [isEditingDescription]);
const removeEditingParam = () => {
const params = queryString.parse(search);
delete params.editingDescription;
const newSearch = queryString.stringify(params);
history.replace({
pathname,
search: newSearch,
});
};
const cancelUpdate = () => {
setShowDescriptionModal(false);
setUpdatedDescription(displayedDescription);
removeEditingParam();
};
return (
<div>
<SectionHeaderWrapper>
@ -101,10 +128,7 @@ export default function AboutSection({ hideLinksButton }: Props) {
setUpdatedDescription={setUpdatedDescription}
handleDescriptionUpdate={handleDescriptionUpdate}
emptyDescriptionText={emptyDescriptionText}
closeModal={() => {
setShowDescriptionModal(false);
setUpdatedDescription(displayedDescription);
}}
closeModal={cancelUpdate}
/>
)}
</div>