mirror of
https://github.com/datahub-project/datahub.git
synced 2025-12-04 22:52:54 +00:00
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:
parent
a1c3af3360
commit
9ef4c3945e
@ -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,
|
||||
];
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -23,6 +23,7 @@ interface Props {
|
||||
|
||||
export default function SummaryTab({ properties }: { properties?: Props }) {
|
||||
const { urn } = useEntityData();
|
||||
|
||||
return (
|
||||
<PageTemplateProvider templateType={PageTemplateSurfaceType.AssetSummary}>
|
||||
<SummaryWrapper>
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user