Skip to content

Commit ae19655

Browse files
feat(structuredProperties): refresh structured properties on update (#14910)
1 parent 97162bf commit ae19655

File tree

36 files changed

+692
-289
lines changed

36 files changed

+692
-289
lines changed

datahub-web-react/src/app/AppProviders.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ import GlobalSettingsProvider from '@app/context/GlobalSettingsProvider';
55
import UserContextProvider from '@app/context/UserContextProvider';
66
import { NavBarProvider } from '@app/homeV2/layout/navBarRedesign/NavBarContext';
77
import HomePageProvider from '@app/homeV3/context/HomePageProvider';
8-
import { ModulesProvider } from '@app/homeV3/module/context/ModulesContext';
98
import OnboardingTourProvider from '@app/onboarding/OnboardingTourContextProvider';
109
import SearchContextProvider from '@app/search/context/SearchContextProvider';
1110
import { BrowserTitleProvider } from '@app/shared/BrowserTabTitleContext';
11+
import { ReloadableProvider } from '@app/sharedV2/reloadableContext/ReloadableContext';
1212
import { EducationStepsProvider } from '@providers/EducationStepsProvider';
1313
import QuickFiltersProvider from '@providers/QuickFiltersProvider';
1414
import AppConfigProvider from '@src/AppConfigProvider';
@@ -28,11 +28,11 @@ export default function AppProviders({ children }: Props) {
2828
<OnboardingTourProvider>
2929
<QuickFiltersProvider>
3030
<SearchContextProvider>
31-
<ModulesProvider>
31+
<ReloadableProvider>
3232
<HomePageProvider>
3333
<NavBarProvider>{children}</NavBarProvider>
3434
</HomePageProvider>
35-
</ModulesProvider>
35+
</ReloadableProvider>
3636
</SearchContextProvider>
3737
</QuickFiltersProvider>
3838
</OnboardingTourProvider>

datahub-web-react/src/app/domainV2/CreateDomainModal.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@ import styled from 'styled-components';
55
import analytics, { EventType } from '@app/analytics';
66
import { UpdatedDomain, useDomainsContext as useDomainsContextV2 } from '@app/domainV2/DomainsContext';
77
import DomainParentSelect from '@app/entityV2/shared/EntityDropdown/DomainParentSelect';
8-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
98
import { ModalButtonContainer } from '@app/shared/button/styledComponents';
109
import { validateCustomUrnId } from '@app/shared/textUtil';
1110
import { useEnterKeyListener } from '@app/shared/useEnterKeyListener';
11+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
12+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
13+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1214
import { useIsNestedDomainsEnabled } from '@app/useAppConfig';
1315
import { Button } from '@src/alchemy-components';
1416

@@ -75,7 +77,7 @@ export default function CreateDomainModal({ onClose, onCreate }: Props) {
7577
const [createButtonEnabled, setCreateButtonEnabled] = useState(false);
7678
const [form] = Form.useForm();
7779

78-
const { reloadModules } = useModulesContext();
80+
const { reloadByKeyType } = useReloadableContext();
7981

8082
const onCreateDomain = () => {
8183
createDomainMutation({
@@ -119,7 +121,10 @@ export default function CreateDomainModal({ onClose, onCreate }: Props) {
119121
form.resetFields();
120122
// Reload modules
121123
// ChildHierarchy - to reload shown child domains on asset summary tab
122-
reloadModules([DataHubPageModuleType.ChildHierarchy], 3000);
124+
reloadByKeyType(
125+
[getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.ChildHierarchy)],
126+
3000,
127+
);
123128
}
124129
})
125130
.catch((e) => {

datahub-web-react/src/app/entity/shared/EntityDropdown/CreateGlossaryEntityModal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,10 @@ import DescriptionModal from '@app/entity/shared/components/legacy/DescriptionMo
1212
import { getEntityPath } from '@app/entity/shared/containers/profile/utils';
1313
import { useGlossaryEntityData } from '@app/entityV2/shared/GlossaryEntityContext';
1414
import { getGlossaryRootToUpdate, updateGlossarySidebar } from '@app/glossary/utils';
15-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
1615
import { validateCustomUrnId } from '@app/shared/textUtil';
16+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
17+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
18+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1719
import { useEntityRegistry } from '@app/useEntityRegistry';
1820

1921
import { useCreateGlossaryNodeMutation, useCreateGlossaryTermMutation } from '@graphql/glossaryTerm.generated';
@@ -52,7 +54,7 @@ function CreateGlossaryEntityModal(props: Props) {
5254
const [createButtonDisabled, setCreateButtonDisabled] = useState(true);
5355
const refetch = useRefetch();
5456
const history = useHistory();
55-
const { reloadModules } = useModulesContext();
57+
const { reloadByKeyType } = useReloadableContext();
5658

5759
const [createGlossaryTermMutation] = useCreateGlossaryTermMutation();
5860
const [createGlossaryNodeMutation] = useCreateGlossaryNodeMutation();
@@ -133,7 +135,9 @@ function CreateGlossaryEntityModal(props: Props) {
133135
}
134136
// Reload modules
135137
// ChildHierarchy - to update contents module as new term/node could change it
136-
reloadModules([DataHubPageModuleType.ChildHierarchy]);
138+
reloadByKeyType([
139+
getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.ChildHierarchy),
140+
]);
137141
}, 2000);
138142
})
139143
.catch((e) => {

datahub-web-react/src/app/entityV2/domain/DataProductsTab/CreateDataProductModal.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import React, { useState } from 'react';
33

44
import DataProductBuilderForm from '@app/entityV2/domain/DataProductsTab/DataProductBuilderForm';
55
import { DataProductBuilderState } from '@app/entityV2/domain/DataProductsTab/types';
6-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
6+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
7+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
8+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
79

810
import { useCreateDataProductMutation } from '@graphql/dataProduct.generated';
911
import { DataHubPageModuleType, DataProduct, Domain } from '@types';
@@ -29,7 +31,7 @@ type Props = {
2931
export default function CreateDataProductModal({ domain, onCreateDataProduct, onClose }: Props) {
3032
const [builderState, updateBuilderState] = useState<DataProductBuilderState>(DEFAULT_STATE);
3133
const [createDataProductMutation] = useCreateDataProductMutation();
32-
const { reloadModules } = useModulesContext();
34+
const { reloadByKeyType } = useReloadableContext();
3335

3436
function createDataProduct() {
3537
createDataProductMutation({
@@ -53,7 +55,10 @@ export default function CreateDataProductModal({ domain, onCreateDataProduct, on
5355
onClose();
5456
// Reload modules
5557
// DataProducts - handling of creating of new data product from data products tab
56-
reloadModules([DataHubPageModuleType.DataProducts], 3000);
58+
reloadByKeyType(
59+
[getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.DataProducts)],
60+
3000,
61+
);
5762
}
5863
})
5964
.catch(() => {

datahub-web-react/src/app/entityV2/glossaryTerm/profile/AddRelatedTermsModal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ import styled from 'styled-components/macro';
44

55
import { useEntityData, useRefetch } from '@app/entity/shared/EntityContext';
66
import GlossaryBrowser from '@app/glossary/GlossaryBrowser/GlossaryBrowser';
7-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
87
import ParentEntities from '@app/searchV2/filters/ParentEntities';
98
import { getParentEntities } from '@app/searchV2/filters/utils';
109
import ClickOutside from '@app/shared/ClickOutside';
1110
import TermLabel from '@app/shared/TermLabel';
1211
import { BrowserWrapper } from '@app/shared/tags/AddTagsTermsModal';
12+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
13+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
14+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1315
import { useEntityRegistry } from '@app/useEntityRegistry';
1416

1517
import { useAddRelatedTermsMutation } from '@graphql/glossaryTerm.generated';
@@ -42,7 +44,7 @@ function AddRelatedTermsModal(props: Props) {
4244
const entityRegistry = useEntityRegistry();
4345
const { urn: entityDataUrn } = useEntityData();
4446
const refetch = useRefetch();
45-
const { reloadModules } = useModulesContext();
47+
const { reloadByKeyType } = useReloadableContext();
4648

4749
const [AddRelatedTerms] = useAddRelatedTermsMutation();
4850

@@ -70,7 +72,9 @@ function AddRelatedTermsModal(props: Props) {
7072
refetch();
7173
// Reload modules
7274
// RelatedTerms - update related terms module on term summary tab
73-
reloadModules([DataHubPageModuleType.RelatedTerms]);
75+
reloadByKeyType([
76+
getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.RelatedTerms),
77+
]);
7478
}, 2000);
7579
});
7680
onClose();

datahub-web-react/src/app/entityV2/glossaryTerm/profile/useRemoveRelatedTerms.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import { Modal, message } from 'antd';
22

33
import { useEntityData, useRefetch } from '@app/entity/shared/EntityContext';
4-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
4+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
5+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
6+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
57
import { useEntityRegistry } from '@app/useEntityRegistry';
68

79
import { useRemoveRelatedTermsMutation } from '@graphql/glossaryTerm.generated';
@@ -10,7 +12,7 @@ import { DataHubPageModuleType, TermRelationshipType } from '@types';
1012
function useRemoveRelatedTerms(termUrn: string, relationshipType: TermRelationshipType, displayName: string) {
1113
const { urn, entityType } = useEntityData();
1214
const entityRegistry = useEntityRegistry();
13-
const { reloadModules } = useModulesContext();
15+
const { reloadByKeyType } = useReloadableContext();
1416
const refetch = useRefetch();
1517

1618
const [removeRelatedTerms] = useRemoveRelatedTermsMutation();
@@ -42,7 +44,9 @@ function useRemoveRelatedTerms(termUrn: string, relationshipType: TermRelationsh
4244
});
4345
// Reload modules
4446
// RelatedTerms - update related terms module on term summary tab
45-
reloadModules([DataHubPageModuleType.RelatedTerms]);
47+
reloadByKeyType([
48+
getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.RelatedTerms),
49+
]);
4650
}, 2000);
4751
});
4852
}

datahub-web-react/src/app/entityV2/shared/EntityDropdown/MoveDomainModal.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import { useDomainsContext } from '@app/domainV2/DomainsContext';
66
import { useRefetch } from '@app/entity/shared/EntityContext';
77
import DomainParentSelect from '@app/entityV2/shared/EntityDropdown/DomainParentSelect';
88
import { useHandleMoveDomainComplete } from '@app/entityV2/shared/EntityDropdown/useHandleMoveDomainComplete';
9-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
9+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
10+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
11+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1012
import { useEntityRegistry } from '@app/useEntityRegistry';
1113
import { Button } from '@src/alchemy-components';
1214
import { ModalButtonContainer } from '@src/app/shared/button/styledComponents';
@@ -34,7 +36,7 @@ function MoveDomainModal(props: Props) {
3436
const entityRegistry = useEntityRegistry();
3537
const [selectedParentUrn, setSelectedParentUrn] = useState('');
3638
const refetch = useRefetch();
37-
const { reloadModules } = useModulesContext();
39+
const { reloadByKeyType } = useReloadableContext();
3840

3941
const [moveDomainMutation] = useMoveDomainMutation();
4042

@@ -63,7 +65,9 @@ function MoveDomainModal(props: Props) {
6365
refetch();
6466
// Reload modules
6567
// ChildHierarchy - as module in domain summary tab could be updated
66-
reloadModules([DataHubPageModuleType.ChildHierarchy]);
68+
reloadByKeyType([
69+
getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.ChildHierarchy),
70+
]);
6771
}, 2000);
6872
})
6973
.catch((e) => {

datahub-web-react/src/app/entityV2/shared/EntityDropdown/useDeleteEntity.tsx

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ import analytics, { EventType } from '@app/analytics';
55
import { useHandleDeleteDomain } from '@app/entityV2/shared/EntityDropdown/useHandleDeleteDomain';
66
import { useGlossaryEntityData } from '@app/entityV2/shared/GlossaryEntityContext';
77
import { getParentNodeToUpdate, updateGlossarySidebar } from '@app/glossaryV2/utils';
8-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
98
import { getDeleteEntityMutation } from '@app/shared/deleteUtils';
9+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
10+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
11+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1012
import { useEntityRegistry } from '@app/useEntityRegistry';
1113

1214
import { DataHubPageModuleType, EntityType } from '@types';
@@ -26,7 +28,7 @@ function useDeleteEntity(
2628
hideMessage?: boolean,
2729
skipWait?: boolean,
2830
) {
29-
const { reloadModules } = useModulesContext();
31+
const { reloadByKeyType } = useReloadableContext();
3032
const [hasBeenDeleted, setHasBeenDeleted] = useState(false);
3133
const entityRegistry = useEntityRegistry();
3234
const { isInGlossaryContext, urnsToUpdate, setUrnsToUpdate, setNodeToDeletedUrn } = useGlossaryEntityData();
@@ -75,20 +77,44 @@ function useDeleteEntity(
7577
// Reload modules
7678
// DataProducts - as listed data product could be removed
7779
if (type === EntityType.DataProduct) {
78-
reloadModules([DataHubPageModuleType.DataProducts]);
80+
reloadByKeyType([
81+
getReloadableKeyType(
82+
ReloadableKeyTypeNamespace.MODULE,
83+
DataHubPageModuleType.DataProducts,
84+
),
85+
]);
7986
}
8087
// ChildHierarchy - as listed term in contents module in glossary node could be removed
8188
// RelatedTerms - as listed term in related terms could be removed
8289
if (type === EntityType.GlossaryTerm) {
83-
reloadModules([DataHubPageModuleType.ChildHierarchy, DataHubPageModuleType.RelatedTerms]);
90+
reloadByKeyType([
91+
getReloadableKeyType(
92+
ReloadableKeyTypeNamespace.MODULE,
93+
DataHubPageModuleType.ChildHierarchy,
94+
),
95+
getReloadableKeyType(
96+
ReloadableKeyTypeNamespace.MODULE,
97+
DataHubPageModuleType.RelatedTerms,
98+
),
99+
]);
84100
}
85101
// ChildHierarchy - as listed node in contents module in glossary node could be removed
86102
if (type === EntityType.GlossaryNode) {
87-
reloadModules([DataHubPageModuleType.ChildHierarchy]);
103+
reloadByKeyType([
104+
getReloadableKeyType(
105+
ReloadableKeyTypeNamespace.MODULE,
106+
DataHubPageModuleType.ChildHierarchy,
107+
),
108+
]);
88109
}
89110
// ChildHierarchy - as listed domain in child domains module could be removed
90111
if (type === EntityType.Domain) {
91-
reloadModules([DataHubPageModuleType.ChildHierarchy]);
112+
reloadByKeyType([
113+
getReloadableKeyType(
114+
ReloadableKeyTypeNamespace.MODULE,
115+
DataHubPageModuleType.ChildHierarchy,
116+
),
117+
]);
92118
}
93119
},
94120
skipWait ? 0 : 2000,

datahub-web-react/src/app/entityV2/shared/components/styled/ExpandedOwner/ExpandedOwner.tsx

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import analytics, { EntityActionType, EventType } from '@app/analytics';
66
import { useUserContext } from '@app/context/useUserContext';
77
import { useEntityData } from '@app/entity/shared/EntityContext';
88
import { getNameFromType } from '@app/entityV2/shared/containers/profile/sidebar/Ownership/ownershipUtils';
9-
import { useModulesContext } from '@app/homeV3/module/context/ModulesContext';
109
import ActorPill from '@app/sharedV2/owners/ActorPill';
10+
import { useReloadableContext } from '@app/sharedV2/reloadableContext/hooks/useReloadableContext';
11+
import { ReloadableKeyTypeNamespace } from '@app/sharedV2/reloadableContext/types';
12+
import { getReloadableKeyType } from '@app/sharedV2/reloadableContext/utils';
1113
import { useEntityRegistry } from '@app/useEntityRegistry';
1214

1315
import { useRemoveOwnerMutation } from '@graphql/mutations.generated';
@@ -26,7 +28,7 @@ export const ExpandedOwner = ({ entityUrn, owner, refetch, readOnly }: Props) =>
2628
const entityRegistry = useEntityRegistry();
2729
const { entityType } = useEntityData();
2830
const [removeOwnerMutation] = useRemoveOwnerMutation();
29-
const { reloadModules } = useModulesContext();
31+
const { reloadByKeyType } = useReloadableContext();
3032
const { user } = useUserContext();
3133

3234
let name = '';
@@ -67,7 +69,11 @@ export const ExpandedOwner = ({ entityUrn, owner, refetch, readOnly }: Props) =>
6769
const isCurrentUserRemoved = user?.urn === owner.owner.urn;
6870
// Reload modules
6971
// OwnedAssets - update Your assets module on home page
70-
if (isCurrentUserRemoved) reloadModules([DataHubPageModuleType.OwnedAssets], 3000);
72+
if (isCurrentUserRemoved)
73+
reloadByKeyType(
74+
[getReloadableKeyType(ReloadableKeyTypeNamespace.MODULE, DataHubPageModuleType.OwnedAssets)],
75+
3000,
76+
);
7177
} catch (e: unknown) {
7278
message.destroy();
7379
if (e instanceof Error) {

0 commit comments

Comments
 (0)