@reltio/components 1.4.1104 → 1.4.1107

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/cjs/components/CollaborationItem/CommentTarget/CommentTarget.js +14 -6
  2. package/cjs/components/MergeButton/MergeButton.d.ts +1 -0
  3. package/cjs/components/MergeButton/MergeButton.js +3 -2
  4. package/cjs/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  5. package/cjs/components/NotMatchButton/NotMatchButton.js +3 -2
  6. package/cjs/contexts/SnackbarContext/index.d.ts +2 -0
  7. package/cjs/contexts/SnackbarContext/index.js +9 -0
  8. package/cjs/contexts/index.d.ts +1 -0
  9. package/cjs/contexts/index.js +3 -1
  10. package/cjs/hooks/index.d.ts +2 -0
  11. package/cjs/hooks/index.js +5 -1
  12. package/cjs/hooks/useCommentsEntitiesMap.d.ts +2 -0
  13. package/cjs/hooks/useCommentsEntitiesMap.js +89 -0
  14. package/cjs/hooks/useMarkAsNotMatchRequest.d.ts +2 -1
  15. package/cjs/hooks/useMarkAsNotMatchRequest.js +7 -5
  16. package/cjs/hooks/useMergeAllRequest.d.ts +2 -1
  17. package/cjs/hooks/useMergeAllRequest.js +5 -2
  18. package/cjs/hooks/useSnackbar.d.ts +5 -0
  19. package/cjs/hooks/useSnackbar.js +46 -0
  20. package/esm/components/CollaborationItem/CommentTarget/CommentTarget.js +14 -6
  21. package/esm/components/MergeButton/MergeButton.d.ts +1 -0
  22. package/esm/components/MergeButton/MergeButton.js +3 -2
  23. package/esm/components/NotMatchButton/NotMatchButton.d.ts +1 -0
  24. package/esm/components/NotMatchButton/NotMatchButton.js +3 -2
  25. package/esm/contexts/SnackbarContext/index.d.ts +2 -0
  26. package/esm/contexts/SnackbarContext/index.js +3 -0
  27. package/esm/contexts/index.d.ts +1 -0
  28. package/esm/contexts/index.js +1 -0
  29. package/esm/hooks/index.d.ts +2 -0
  30. package/esm/hooks/index.js +2 -0
  31. package/esm/hooks/useCommentsEntitiesMap.d.ts +2 -0
  32. package/esm/hooks/useCommentsEntitiesMap.js +82 -0
  33. package/esm/hooks/useMarkAsNotMatchRequest.d.ts +2 -1
  34. package/esm/hooks/useMarkAsNotMatchRequest.js +7 -5
  35. package/esm/hooks/useMergeAllRequest.d.ts +2 -1
  36. package/esm/hooks/useMergeAllRequest.js +5 -2
  37. package/esm/hooks/useSnackbar.d.ts +5 -0
  38. package/esm/hooks/useSnackbar.js +20 -0
  39. package/package.json +3 -3
@@ -1,4 +1,15 @@
1
1
  "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
2
13
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
14
  if (k2 === undefined) k2 = k;
4
15
  Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
@@ -44,7 +55,7 @@ var CommentTarget = function (_a) {
44
55
  var metadata = react_redux_1.useSelector(mdm_module_1.default.selectors.getMetadata);
45
56
  var entitiesMap = react_1.useContext(contexts_1.EntitiesMapContext);
46
57
  var getContent = function () {
47
- var _a, _b;
58
+ var _a;
48
59
  switch (comment.objectType) {
49
60
  case mdm_sdk_1.CollaborationObjectTypes.ENTITY_ATTRIBUTE: {
50
61
  var attributeTypeUri = mdm_sdk_2.getAttributeTypeUriByValueUri(comment.objectId, entity.type);
@@ -68,10 +79,7 @@ var CommentTarget = function (_a) {
68
79
  }
69
80
  case mdm_sdk_1.CollaborationObjectTypes.RELATION: {
70
81
  var relatedEntityUri = utils_1.getRelatedEntityUri(comment, entity.uri);
71
- var relatedEntity = {
72
- uri: relatedEntityUri,
73
- label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
74
- };
82
+ var relatedEntity = __assign(__assign({}, (entitiesMap[relatedEntityUri] || {})), { uri: relatedEntityUri });
75
83
  return (react_1.default.createElement(react_1.default.Fragment, null,
76
84
  react_1.default.createElement(Typography_1.default, { className: styles.title }, ui_i18n_1.default.text('Selected relation:')),
77
85
  react_1.default.createElement(Typography_1.default, { className: styles.label },
@@ -85,7 +93,7 @@ var CommentTarget = function (_a) {
85
93
  var relatedEntityUri = utils_1.getRelatedEntityUri(comment, entity.uri);
86
94
  var relatedEntity = {
87
95
  uri: relatedEntityUri,
88
- label: (_b = entitiesMap[relatedEntityUri]) === null || _b === void 0 ? void 0 : _b.label
96
+ label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
89
97
  };
90
98
  return (react_1.default.createElement(react_1.default.Fragment, null,
91
99
  react_1.default.createElement(Typography_1.default, { className: styles.title }, ui_i18n_1.default.text('Selected potential match:')),
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  onError?: (error?: ApiError) => void;
15
16
  };
16
17
  export declare const MergeButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
@@ -52,13 +52,14 @@ var core_1 = require("../../core");
52
52
  var ActionButton_1 = require("../ActionButton/ActionButton");
53
53
  var hooks_1 = require("../../hooks");
54
54
  exports.MergeButton = react_1.forwardRef(function (_a, ref) {
55
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onError"]);
55
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess", "onError"]);
56
56
  var sendMergeAllRequest = hooks_1.useMergeAllRequest({
57
57
  entity: entity,
58
58
  entities: entities,
59
59
  onStartRequest: onStartRequest,
60
60
  onFinishRequest: onFinishRequest,
61
- onError: onError
61
+ onError: onError,
62
+ onSuccess: onSuccess
62
63
  }).sendMergeAllRequest;
63
64
  return (react_1.default.createElement(ActionButton_1.ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: ui_i18n_1.default.text('Merge'), icon: MergeDark_1.default, onClick: sendMergeAllRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
64
65
  });
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  };
15
16
  export declare const NotMatchButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
16
17
  export {};
@@ -52,12 +52,13 @@ var core_1 = require("../../core");
52
52
  var ui_i18n_1 = __importDefault(require("ui-i18n"));
53
53
  var useMarkAsNotMatchRequest_1 = require("../../hooks/useMarkAsNotMatchRequest");
54
54
  exports.NotMatchButton = react_1.forwardRef(function (_a, ref) {
55
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest"]);
55
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButton_1.ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? core_1.noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess"]);
56
56
  var sendMarkAsNotMatchRequest = useMarkAsNotMatchRequest_1.useMarkAsNotMatchRequest({
57
57
  entity: entity,
58
58
  entities: entities,
59
59
  onStartRequest: onStartRequest,
60
- onFinishRequest: onFinishRequest
60
+ onFinishRequest: onFinishRequest,
61
+ onSuccess: onSuccess
61
62
  }).sendMarkAsNotMatchRequest;
62
63
  return (react_1.default.createElement(ActionButton_1.ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: ui_i18n_1.default.text('Not a match'), icon: NotMatchDark_1.default, onClick: sendMarkAsNotMatchRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
63
64
  });
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SnackbarContext: React.Context<(message: string) => void>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SnackbarContext = void 0;
7
+ var react_1 = __importDefault(require("react"));
8
+ exports.SnackbarContext = react_1.default.createContext(function () { });
9
+ exports.SnackbarContext.displayName = 'SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
3
+ exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.EntityContext = exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.EntityMarkerContext = exports.useAttributeExpanded = exports.ExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.PivotingAttributeContext = exports.UsersContext = exports.CollaborationContext = exports.BlockImageGalleryDialogContext = exports.ViewIdContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = void 0;
4
4
  var AsyncMountContext_1 = require("./AsyncMountContext");
5
5
  Object.defineProperty(exports, "AsyncMountContext", { enumerable: true, get: function () { return AsyncMountContext_1.AsyncMountContext; } });
6
6
  var HistoryAppearanceContext_1 = require("./HistoryAppearanceContext");
@@ -48,3 +48,5 @@ Object.defineProperty(exports, "ReloadFacetProvider", { enumerable: true, get: f
48
48
  Object.defineProperty(exports, "useReloadFacet", { enumerable: true, get: function () { return ReloadFacetContext_1.useReloadFacet; } });
49
49
  var SearchFiltersContext_1 = require("./SearchFiltersContext");
50
50
  Object.defineProperty(exports, "SearchFiltersContext", { enumerable: true, get: function () { return SearchFiltersContext_1.SearchFiltersContext; } });
51
+ var SnackbarContext_1 = require("./SnackbarContext");
52
+ Object.defineProperty(exports, "SnackbarContext", { enumerable: true, get: function () { return SnackbarContext_1.SnackbarContext; } });
@@ -3,6 +3,7 @@ export { useAPI, CustomAction } from './useAPI';
3
3
  export type { CustomActionTask } from './useAPI';
4
4
  export { useAsyncMount } from './useAsyncMount';
5
5
  export { useCollaboration } from './useCollaboration';
6
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
6
7
  export { useDidUpdateEffect } from './useDidUpdateEffect';
7
8
  export { usePrevious } from './usePrevious';
8
9
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -20,3 +21,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
20
21
  export { useCustomScripts } from './useCustomScripts';
21
22
  export { useEditableConnection } from './useEditableConnection';
22
23
  export { useReadableSearchState } from './useReadableSearchState';
24
+ export { useSnackbar } from './useSnackbar';
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
3
+ exports.useSnackbar = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.CustomAction = exports.useAPI = exports.useActions = void 0;
4
4
  var useActions_1 = require("./useActions");
5
5
  Object.defineProperty(exports, "useActions", { enumerable: true, get: function () { return useActions_1.useActions; } });
6
6
  var useAPI_1 = require("./useAPI");
@@ -10,6 +10,8 @@ var useAsyncMount_1 = require("./useAsyncMount");
10
10
  Object.defineProperty(exports, "useAsyncMount", { enumerable: true, get: function () { return useAsyncMount_1.useAsyncMount; } });
11
11
  var useCollaboration_1 = require("./useCollaboration");
12
12
  Object.defineProperty(exports, "useCollaboration", { enumerable: true, get: function () { return useCollaboration_1.useCollaboration; } });
13
+ var useCommentsEntitiesMap_1 = require("./useCommentsEntitiesMap");
14
+ Object.defineProperty(exports, "useCommentsEntitiesMap", { enumerable: true, get: function () { return useCommentsEntitiesMap_1.useCommentsEntitiesMap; } });
13
15
  var useDidUpdateEffect_1 = require("./useDidUpdateEffect");
14
16
  Object.defineProperty(exports, "useDidUpdateEffect", { enumerable: true, get: function () { return useDidUpdateEffect_1.useDidUpdateEffect; } });
15
17
  var usePrevious_1 = require("./usePrevious");
@@ -44,3 +46,5 @@ var useEditableConnection_1 = require("./useEditableConnection");
44
46
  Object.defineProperty(exports, "useEditableConnection", { enumerable: true, get: function () { return useEditableConnection_1.useEditableConnection; } });
45
47
  var useReadableSearchState_1 = require("./useReadableSearchState");
46
48
  Object.defineProperty(exports, "useReadableSearchState", { enumerable: true, get: function () { return useReadableSearchState_1.useReadableSearchState; } });
49
+ var useSnackbar_1 = require("./useSnackbar");
50
+ Object.defineProperty(exports, "useSnackbar", { enumerable: true, get: function () { return useSnackbar_1.useSnackbar; } });
@@ -0,0 +1,2 @@
1
+ import { Comment, Entity, EntitiesMap } from '@reltio/mdm-sdk';
2
+ export declare const useCommentsEntitiesMap: (comments: Comment[]) => EntitiesMap<Entity>;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.useCommentsEntitiesMap = void 0;
18
+ var react_1 = require("react");
19
+ var ramda_1 = require("ramda");
20
+ var react_redux_1 = require("react-redux");
21
+ var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
22
+ var mdm_sdk_1 = require("@reltio/mdm-sdk");
23
+ var useSafePromise_1 = require("./useSafePromise");
24
+ var SELECT_OPTION = 'uri,label,type';
25
+ var useCommentsEntitiesMap = function (comments) {
26
+ var safePromise = useSafePromise_1.useSafePromise();
27
+ var currentEntityUri = react_redux_1.useSelector(mdm_module_1.default.selectors.getEntityUriWithDataTenant);
28
+ var _a = react_1.useState({}), entitiesMap = _a[0], setEntitiesMap = _a[1];
29
+ var getEntities = react_1.useCallback(function (entitiesUris) {
30
+ var requestFilters = [
31
+ {
32
+ filter: mdm_sdk_1.FilterOptions.EQUALS,
33
+ fieldName: 'uri',
34
+ values: entitiesUris
35
+ }
36
+ ];
37
+ var requestOptions = {
38
+ max: entitiesUris.length,
39
+ activeness: mdm_sdk_1.ActivityFilters.ALL,
40
+ select: 'uri,label,type'
41
+ };
42
+ return safePromise(mdm_sdk_1.getFilteredEntities(requestFilters, requestOptions));
43
+ }, [safePromise]);
44
+ var getNotFoundEntity = function (entityUri) {
45
+ return mdm_sdk_1.getEntity(entityUri, { options: SELECT_OPTION })
46
+ .then(function (entity) { return ({
47
+ uri: entityUri,
48
+ label: entity.label,
49
+ type: entity.type
50
+ }); })
51
+ .catch(function () { return ({}); });
52
+ };
53
+ var addNotFoundEntities = react_1.useCallback(function (entitiesUris, entities) {
54
+ return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(ramda_1.pipe(ramda_1.reject(ramda_1.isEmpty), ramda_1.concat(entities)));
55
+ }, [safePromise]);
56
+ react_1.useEffect(function () {
57
+ var uniqEntitiesUris = ramda_1.pipe(ramda_1.reduce(function (entitiesUris, comment) {
58
+ var type = comment.objectType, relatedObjectUris = comment.relatedObjectUris;
59
+ if (type === 'relation' || type === 'potentialMatch') {
60
+ (relatedObjectUris || []).forEach(function (uri) {
61
+ if (uri !== currentEntityUri && mdm_sdk_1.isEntityUri(uri) && !entitiesMap[uri]) {
62
+ entitiesUris.push(uri);
63
+ }
64
+ });
65
+ }
66
+ return entitiesUris;
67
+ }, []), ramda_1.uniq)(comments || []);
68
+ if (uniqEntitiesUris.length) {
69
+ getEntities(uniqEntitiesUris)
70
+ .then(function (results) {
71
+ var getNotFoundUris = ramda_1.pipe(ramda_1.map(ramda_1.prop('uri')), ramda_1.difference(uniqEntitiesUris));
72
+ var notFoundEntities = getNotFoundUris(results);
73
+ return addNotFoundEntities(notFoundEntities, results);
74
+ })
75
+ .then(function (results) {
76
+ setEntitiesMap(function (prevEntitiesMap) {
77
+ return results.reduce(function (entities, entity) {
78
+ entities[entity.uri] = entity;
79
+ return entities;
80
+ }, __assign({}, prevEntitiesMap));
81
+ });
82
+ })
83
+ .catch(function () { });
84
+ }
85
+ // eslint-disable-next-line react-hooks/exhaustive-deps
86
+ }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);
87
+ return entitiesMap;
88
+ };
89
+ exports.useCommentsEntitiesMap = useCommentsEntitiesMap;
@@ -4,8 +4,9 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  };
8
- export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest }: Props) => {
9
+ export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess }: Props) => {
9
10
  isPending: boolean;
10
11
  sendMarkAsNotMatchRequest: () => void;
11
12
  };
@@ -9,7 +9,7 @@ var react_redux_1 = require("react-redux");
9
9
  var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
10
  var react_1 = require("react");
11
11
  var useMarkAsNotMatchRequest = function (_a) {
12
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest;
12
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
13
13
  var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
14
14
  var dtssPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getDtssPath);
15
15
  var _b = react_1.useState(false), isPending = _b[0], setIsPending = _b[1];
@@ -17,13 +17,15 @@ var useMarkAsNotMatchRequest = function (_a) {
17
17
  onStartRequest === null || onStartRequest === void 0 ? void 0 : onStartRequest();
18
18
  setIsPending(true);
19
19
  var params = { dtssPath: dtssPath, customerTenant: tenant, entity: entity, entities: entities };
20
- (mdm_sdk_1.isDataTenantEntity(entity)
21
- ? mdm_sdk_1.markDataTenantEntityAsNotMatch(params)
22
- : mdm_sdk_1.markMixedEntitiesAsNotMatches(params)).finally(function () {
20
+ (mdm_sdk_1.isDataTenantEntity(entity) ? mdm_sdk_1.markDataTenantEntityAsNotMatch(params) : mdm_sdk_1.markMixedEntitiesAsNotMatches(params))
21
+ .then(function () {
22
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
23
+ })
24
+ .finally(function () {
23
25
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
24
26
  setIsPending(false);
25
27
  });
26
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
28
+ }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
27
29
  return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
28
30
  };
29
31
  exports.useMarkAsNotMatchRequest = useMarkAsNotMatchRequest;
@@ -4,9 +4,10 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  onError?: () => void;
8
9
  };
9
- export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onError }: Props) => {
10
+ export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess, onError }: Props) => {
10
11
  isPending: boolean;
11
12
  sendMergeAllRequest: () => void;
12
13
  };
@@ -10,7 +10,7 @@ var mdm_module_1 = __importDefault(require("@reltio/mdm-module"));
10
10
  var mdm_sdk_1 = require("@reltio/mdm-sdk");
11
11
  var core_1 = require("../core");
12
12
  var useMergeAllRequest = function (_a) {
13
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, _b = _a.onError, onError = _b === void 0 ? core_1.noop : _b;
13
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? core_1.noop : _b;
14
14
  var tenant = react_redux_1.useSelector(mdm_module_1.default.selectors.getTenant);
15
15
  var dtssPath = react_redux_1.useSelector(mdm_module_1.default.selectors.getDtssPath);
16
16
  var _c = react_1.useState(false), isPending = _c[0], setIsPending = _c[1];
@@ -21,12 +21,15 @@ var useMergeAllRequest = function (_a) {
21
21
  (mdm_sdk_1.isDataTenantEntity(entity)
22
22
  ? mdm_sdk_1.mergeDataTenantEntity(params)
23
23
  : mdm_sdk_1.mergeCustomerTenantEntityWithMixedEntities(params))
24
+ .then(function () {
25
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
26
+ })
24
27
  .catch(onError)
25
28
  .finally(function () {
26
29
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
27
30
  setIsPending(false);
28
31
  });
29
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
32
+ }, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
30
33
  return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
31
34
  };
32
35
  exports.useMergeAllRequest = useMergeAllRequest;
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const useSnackbar: () => {
3
+ SnackbarRenderer: () => JSX.Element;
4
+ showSnackbarMessage: (message: any) => void;
5
+ };
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.useSnackbar = void 0;
26
+ var react_1 = __importStar(require("react"));
27
+ var Portal_1 = __importDefault(require("@material-ui/core/Portal"));
28
+ var Snackbar_1 = __importDefault(require("@material-ui/core/Snackbar"));
29
+ var useSnackbar = function () {
30
+ var _a = react_1.useState(false), isOpenSnackbar = _a[0], setIsOpenSnackbar = _a[1];
31
+ var _b = react_1.useState(''), snackbarMessage = _b[0], setSnackbarMessage = _b[1];
32
+ var closeSnackbar = react_1.useCallback(function () {
33
+ setIsOpenSnackbar(false);
34
+ setSnackbarMessage('');
35
+ }, []);
36
+ var showSnackbarMessage = react_1.useCallback(function (message) {
37
+ setIsOpenSnackbar(true);
38
+ setSnackbarMessage(message);
39
+ }, []);
40
+ var SnackbarRenderer = react_1.useCallback(function () {
41
+ return (react_1.default.createElement(Portal_1.default, { container: document.body },
42
+ react_1.default.createElement(Snackbar_1.default, { open: isOpenSnackbar, autoHideDuration: 5000, onClose: closeSnackbar, message: snackbarMessage })));
43
+ }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);
44
+ return { SnackbarRenderer: SnackbarRenderer, showSnackbarMessage: showSnackbarMessage };
45
+ };
46
+ exports.useSnackbar = useSnackbar;
@@ -1,3 +1,14 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
1
12
  import React, { useContext } from 'react';
2
13
  import { useSelector } from 'react-redux';
3
14
  import i18n from 'ui-i18n';
@@ -19,7 +30,7 @@ export var CommentTarget = function (_a) {
19
30
  var metadata = useSelector(mdm.selectors.getMetadata);
20
31
  var entitiesMap = useContext(EntitiesMapContext);
21
32
  var getContent = function () {
22
- var _a, _b;
33
+ var _a;
23
34
  switch (comment.objectType) {
24
35
  case CollaborationObjectTypes.ENTITY_ATTRIBUTE: {
25
36
  var attributeTypeUri = getAttributeTypeUriByValueUri(comment.objectId, entity.type);
@@ -43,10 +54,7 @@ export var CommentTarget = function (_a) {
43
54
  }
44
55
  case CollaborationObjectTypes.RELATION: {
45
56
  var relatedEntityUri = getRelatedEntityUri(comment, entity.uri);
46
- var relatedEntity = {
47
- uri: relatedEntityUri,
48
- label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
49
- };
57
+ var relatedEntity = __assign(__assign({}, (entitiesMap[relatedEntityUri] || {})), { uri: relatedEntityUri });
50
58
  return (React.createElement(React.Fragment, null,
51
59
  React.createElement(Typography, { className: styles.title }, i18n.text('Selected relation:')),
52
60
  React.createElement(Typography, { className: styles.label },
@@ -60,7 +68,7 @@ export var CommentTarget = function (_a) {
60
68
  var relatedEntityUri = getRelatedEntityUri(comment, entity.uri);
61
69
  var relatedEntity = {
62
70
  uri: relatedEntityUri,
63
- label: (_b = entitiesMap[relatedEntityUri]) === null || _b === void 0 ? void 0 : _b.label
71
+ label: (_a = entitiesMap[relatedEntityUri]) === null || _a === void 0 ? void 0 : _a.label
64
72
  };
65
73
  return (React.createElement(React.Fragment, null,
66
74
  React.createElement(Typography, { className: styles.title }, i18n.text('Selected potential match:')),
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  onError?: (error?: ApiError) => void;
15
16
  };
16
17
  export declare const MergeButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
@@ -27,13 +27,14 @@ import { noop } from '../../core';
27
27
  import { ActionButton, ActionButtonMode } from '../ActionButton/ActionButton';
28
28
  import { useMergeAllRequest } from '../../hooks';
29
29
  export var MergeButton = forwardRef(function (_a, ref) {
30
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onError"]);
30
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, onError = _a.onError, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess", "onError"]);
31
31
  var sendMergeAllRequest = useMergeAllRequest({
32
32
  entity: entity,
33
33
  entities: entities,
34
34
  onStartRequest: onStartRequest,
35
35
  onFinishRequest: onFinishRequest,
36
- onError: onError
36
+ onError: onError,
37
+ onSuccess: onSuccess
37
38
  }).sendMergeAllRequest;
38
39
  return (React.createElement(ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: i18n.text('Merge'), icon: MergeIcon, onClick: sendMergeAllRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
39
40
  });
@@ -11,6 +11,7 @@ declare type Props = {
11
11
  disabled?: boolean;
12
12
  onStartRequest?: () => void;
13
13
  onFinishRequest?: () => void;
14
+ onSuccess?: () => void;
14
15
  };
15
16
  export declare const NotMatchButton: React.ForwardRefExoticComponent<Props & React.RefAttributes<HTMLLIElement>>;
16
17
  export {};
@@ -27,12 +27,13 @@ import { noop } from '../../core';
27
27
  import i18n from 'ui-i18n';
28
28
  import { useMarkAsNotMatchRequest } from '../../hooks/useMarkAsNotMatchRequest';
29
29
  export var NotMatchButton = forwardRef(function (_a, ref) {
30
- var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest"]);
30
+ var className = _a.className, _b = _a.mode, mode = _b === void 0 ? ActionButtonMode.iconButton : _b, _c = _a.onMenuClose, onMenuClose = _c === void 0 ? noop : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, entity = _a.entity, entities = _a.entities, onStartRequest = _a.onStartRequest, onFinishRequest = _a.onFinishRequest, onSuccess = _a.onSuccess, otherProps = __rest(_a, ["className", "mode", "onMenuClose", "disabled", "entity", "entities", "onStartRequest", "onFinishRequest", "onSuccess"]);
31
31
  var sendMarkAsNotMatchRequest = useMarkAsNotMatchRequest({
32
32
  entity: entity,
33
33
  entities: entities,
34
34
  onStartRequest: onStartRequest,
35
- onFinishRequest: onFinishRequest
35
+ onFinishRequest: onFinishRequest,
36
+ onSuccess: onSuccess
36
37
  }).sendMarkAsNotMatchRequest;
37
38
  return (React.createElement(ActionButton, __assign({ className: className, disabled: disabled, mode: mode, label: i18n.text('Not a match'), icon: NotMatchIcon, onClick: sendMarkAsNotMatchRequest, onMenuClose: onMenuClose, ref: ref }, otherProps)));
38
39
  });
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export declare const SnackbarContext: React.Context<(message: string) => void>;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export var SnackbarContext = React.createContext(function () { });
3
+ SnackbarContext.displayName = 'SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -18,3 +18,4 @@ export { EntityContext } from './EntityContext';
18
18
  export { SandboxAPIContext } from './SandboxAPIContext';
19
19
  export { useReloadAllFacets, ReloadFacetProvider, useReloadFacet } from './ReloadFacetContext';
20
20
  export { SearchFiltersContext } from './SearchFiltersContext';
21
+ export { SnackbarContext } from './SnackbarContext';
@@ -3,6 +3,7 @@ export { useAPI, CustomAction } from './useAPI';
3
3
  export type { CustomActionTask } from './useAPI';
4
4
  export { useAsyncMount } from './useAsyncMount';
5
5
  export { useCollaboration } from './useCollaboration';
6
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
6
7
  export { useDidUpdateEffect } from './useDidUpdateEffect';
7
8
  export { usePrevious } from './usePrevious';
8
9
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -20,3 +21,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
20
21
  export { useCustomScripts } from './useCustomScripts';
21
22
  export { useEditableConnection } from './useEditableConnection';
22
23
  export { useReadableSearchState } from './useReadableSearchState';
24
+ export { useSnackbar } from './useSnackbar';
@@ -2,6 +2,7 @@ export { useActions } from './useActions';
2
2
  export { useAPI, CustomAction } from './useAPI';
3
3
  export { useAsyncMount } from './useAsyncMount';
4
4
  export { useCollaboration } from './useCollaboration';
5
+ export { useCommentsEntitiesMap } from './useCommentsEntitiesMap';
5
6
  export { useDidUpdateEffect } from './useDidUpdateEffect';
6
7
  export { usePrevious } from './usePrevious';
7
8
  export { useRelationTypeSelector } from './useRelationTypeSelector';
@@ -19,3 +20,4 @@ export { useMarkAsNotMatchRequest } from './useMarkAsNotMatchRequest';
19
20
  export { useCustomScripts } from './useCustomScripts';
20
21
  export { useEditableConnection } from './useEditableConnection';
21
22
  export { useReadableSearchState } from './useReadableSearchState';
23
+ export { useSnackbar } from './useSnackbar';
@@ -0,0 +1,2 @@
1
+ import { Comment, Entity, EntitiesMap } from '@reltio/mdm-sdk';
2
+ export declare const useCommentsEntitiesMap: (comments: Comment[]) => EntitiesMap<Entity>;
@@ -0,0 +1,82 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { useCallback, useEffect, useState } from 'react';
13
+ import { concat, difference, isEmpty, map, pipe, prop, reduce, reject, uniq } from 'ramda';
14
+ import { useSelector } from 'react-redux';
15
+ import mdm from '@reltio/mdm-module';
16
+ import { ActivityFilters, FilterOptions, getFilteredEntities, isEntityUri, getEntity } from '@reltio/mdm-sdk';
17
+ import { useSafePromise } from './useSafePromise';
18
+ var SELECT_OPTION = 'uri,label,type';
19
+ export var useCommentsEntitiesMap = function (comments) {
20
+ var safePromise = useSafePromise();
21
+ var currentEntityUri = useSelector(mdm.selectors.getEntityUriWithDataTenant);
22
+ var _a = useState({}), entitiesMap = _a[0], setEntitiesMap = _a[1];
23
+ var getEntities = useCallback(function (entitiesUris) {
24
+ var requestFilters = [
25
+ {
26
+ filter: FilterOptions.EQUALS,
27
+ fieldName: 'uri',
28
+ values: entitiesUris
29
+ }
30
+ ];
31
+ var requestOptions = {
32
+ max: entitiesUris.length,
33
+ activeness: ActivityFilters.ALL,
34
+ select: 'uri,label,type'
35
+ };
36
+ return safePromise(getFilteredEntities(requestFilters, requestOptions));
37
+ }, [safePromise]);
38
+ var getNotFoundEntity = function (entityUri) {
39
+ return getEntity(entityUri, { options: SELECT_OPTION })
40
+ .then(function (entity) { return ({
41
+ uri: entityUri,
42
+ label: entity.label,
43
+ type: entity.type
44
+ }); })
45
+ .catch(function () { return ({}); });
46
+ };
47
+ var addNotFoundEntities = useCallback(function (entitiesUris, entities) {
48
+ return safePromise(Promise.all((entitiesUris || []).map(getNotFoundEntity))).then(pipe(reject(isEmpty), concat(entities)));
49
+ }, [safePromise]);
50
+ useEffect(function () {
51
+ var uniqEntitiesUris = pipe(reduce(function (entitiesUris, comment) {
52
+ var type = comment.objectType, relatedObjectUris = comment.relatedObjectUris;
53
+ if (type === 'relation' || type === 'potentialMatch') {
54
+ (relatedObjectUris || []).forEach(function (uri) {
55
+ if (uri !== currentEntityUri && isEntityUri(uri) && !entitiesMap[uri]) {
56
+ entitiesUris.push(uri);
57
+ }
58
+ });
59
+ }
60
+ return entitiesUris;
61
+ }, []), uniq)(comments || []);
62
+ if (uniqEntitiesUris.length) {
63
+ getEntities(uniqEntitiesUris)
64
+ .then(function (results) {
65
+ var getNotFoundUris = pipe(map(prop('uri')), difference(uniqEntitiesUris));
66
+ var notFoundEntities = getNotFoundUris(results);
67
+ return addNotFoundEntities(notFoundEntities, results);
68
+ })
69
+ .then(function (results) {
70
+ setEntitiesMap(function (prevEntitiesMap) {
71
+ return results.reduce(function (entities, entity) {
72
+ entities[entity.uri] = entity;
73
+ return entities;
74
+ }, __assign({}, prevEntitiesMap));
75
+ });
76
+ })
77
+ .catch(function () { });
78
+ }
79
+ // eslint-disable-next-line react-hooks/exhaustive-deps
80
+ }, [getEntities, addNotFoundEntities, comments, currentEntityUri]);
81
+ return entitiesMap;
82
+ };
@@ -4,8 +4,9 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  };
8
- export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest }: Props) => {
9
+ export declare const useMarkAsNotMatchRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess }: Props) => {
9
10
  isPending: boolean;
10
11
  sendMarkAsNotMatchRequest: () => void;
11
12
  };
@@ -3,7 +3,7 @@ import { useSelector } from 'react-redux';
3
3
  import mdmModule from '@reltio/mdm-module';
4
4
  import { useCallback, useState } from 'react';
5
5
  export var useMarkAsNotMatchRequest = function (_a) {
6
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest;
6
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess;
7
7
  var tenant = useSelector(mdmModule.selectors.getTenant);
8
8
  var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
9
9
  var _b = useState(false), isPending = _b[0], setIsPending = _b[1];
@@ -11,12 +11,14 @@ export var useMarkAsNotMatchRequest = function (_a) {
11
11
  onStartRequest === null || onStartRequest === void 0 ? void 0 : onStartRequest();
12
12
  setIsPending(true);
13
13
  var params = { dtssPath: dtssPath, customerTenant: tenant, entity: entity, entities: entities };
14
- (isDataTenantEntity(entity)
15
- ? markDataTenantEntityAsNotMatch(params)
16
- : markMixedEntitiesAsNotMatches(params)).finally(function () {
14
+ (isDataTenantEntity(entity) ? markDataTenantEntityAsNotMatch(params) : markMixedEntitiesAsNotMatches(params))
15
+ .then(function () {
16
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
17
+ })
18
+ .finally(function () {
17
19
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
18
20
  setIsPending(false);
19
21
  });
20
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
22
+ }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, onSuccess, tenant]);
21
23
  return { isPending: isPending, sendMarkAsNotMatchRequest: sendMarkAsNotMatchRequest };
22
24
  };
@@ -4,9 +4,10 @@ declare type Props = {
4
4
  entity: Entity;
5
5
  onFinishRequest?: () => void;
6
6
  onStartRequest?: () => void;
7
+ onSuccess?: () => void;
7
8
  onError?: () => void;
8
9
  };
9
- export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onError }: Props) => {
10
+ export declare const useMergeAllRequest: ({ entities, entity, onFinishRequest, onStartRequest, onSuccess, onError }: Props) => {
10
11
  isPending: boolean;
11
12
  sendMergeAllRequest: () => void;
12
13
  };
@@ -4,7 +4,7 @@ import mdmModule from '@reltio/mdm-module';
4
4
  import { isDataTenantEntity, mergeCustomerTenantEntityWithMixedEntities, mergeDataTenantEntity } from '@reltio/mdm-sdk';
5
5
  import { noop } from '../core';
6
6
  export var useMergeAllRequest = function (_a) {
7
- var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, _b = _a.onError, onError = _b === void 0 ? noop : _b;
7
+ var entities = _a.entities, entity = _a.entity, onFinishRequest = _a.onFinishRequest, onStartRequest = _a.onStartRequest, onSuccess = _a.onSuccess, _b = _a.onError, onError = _b === void 0 ? noop : _b;
8
8
  var tenant = useSelector(mdmModule.selectors.getTenant);
9
9
  var dtssPath = useSelector(mdmModule.selectors.getDtssPath);
10
10
  var _c = useState(false), isPending = _c[0], setIsPending = _c[1];
@@ -15,11 +15,14 @@ export var useMergeAllRequest = function (_a) {
15
15
  (isDataTenantEntity(entity)
16
16
  ? mergeDataTenantEntity(params)
17
17
  : mergeCustomerTenantEntityWithMixedEntities(params))
18
+ .then(function () {
19
+ onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess();
20
+ })
18
21
  .catch(onError)
19
22
  .finally(function () {
20
23
  onFinishRequest === null || onFinishRequest === void 0 ? void 0 : onFinishRequest();
21
24
  setIsPending(false);
22
25
  });
23
- }, [dtssPath, entities, entity, onFinishRequest, onStartRequest, tenant]);
26
+ }, [dtssPath, entities, entity, onError, onFinishRequest, onStartRequest, onSuccess, tenant]);
24
27
  return { isPending: isPending, sendMergeAllRequest: sendMergeAllRequest };
25
28
  };
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export declare const useSnackbar: () => {
3
+ SnackbarRenderer: () => JSX.Element;
4
+ showSnackbarMessage: (message: any) => void;
5
+ };
@@ -0,0 +1,20 @@
1
+ import React, { useCallback, useState } from 'react';
2
+ import Portal from '@material-ui/core/Portal';
3
+ import Snackbar from '@material-ui/core/Snackbar';
4
+ export var useSnackbar = function () {
5
+ var _a = useState(false), isOpenSnackbar = _a[0], setIsOpenSnackbar = _a[1];
6
+ var _b = useState(''), snackbarMessage = _b[0], setSnackbarMessage = _b[1];
7
+ var closeSnackbar = useCallback(function () {
8
+ setIsOpenSnackbar(false);
9
+ setSnackbarMessage('');
10
+ }, []);
11
+ var showSnackbarMessage = useCallback(function (message) {
12
+ setIsOpenSnackbar(true);
13
+ setSnackbarMessage(message);
14
+ }, []);
15
+ var SnackbarRenderer = useCallback(function () {
16
+ return (React.createElement(Portal, { container: document.body },
17
+ React.createElement(Snackbar, { open: isOpenSnackbar, autoHideDuration: 5000, onClose: closeSnackbar, message: snackbarMessage })));
18
+ }, [isOpenSnackbar, closeSnackbar, snackbarMessage]);
19
+ return { SnackbarRenderer: SnackbarRenderer, showSnackbarMessage: showSnackbarMessage };
20
+ };
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@reltio/components",
3
- "version": "1.4.1104",
3
+ "version": "1.4.1107",
4
4
  "license": "SEE LICENSE IN LICENSE FILE",
5
5
  "main": "./cjs/index.js",
6
6
  "module": "./esm/index.js",
7
7
  "dependencies": {
8
8
  "@date-io/moment": "^1.3.5",
9
9
  "@react-google-maps/api": "2.7.0",
10
- "@reltio/mdm-module": "^1.4.1104",
11
- "@reltio/mdm-sdk": "^1.4.1104",
10
+ "@reltio/mdm-module": "^1.4.1107",
11
+ "@reltio/mdm-sdk": "^1.4.1107",
12
12
  "classnames": "^2.2.5",
13
13
  "d3-cloud": "^1.2.5",
14
14
  "d3-geo": "^2.0.1",