@reltio/components 1.4.2284 → 1.4.2287
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.
- package/cjs/hooks/useTenantOptionalParameters/index.d.ts +1 -0
- package/cjs/hooks/useTenantOptionalParameters/index.js +5 -0
- package/cjs/hooks/useTenantOptionalParameters/useTenantOptionalParameters.d.ts +6 -0
- package/cjs/hooks/useTenantOptionalParameters/useTenantOptionalParameters.js +44 -0
- package/cjs/hooks/useTenantOptionalParameters/useTenantOptionalParameters.test.d.ts +1 -0
- package/cjs/hooks/useTenantOptionalParameters/useTenantOptionalParameters.test.js +116 -0
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +4 -2
- package/hooks/useTenantOptionalParameters/index.d.ts +1 -0
- package/hooks/useTenantOptionalParameters/index.js +1 -0
- package/hooks/useTenantOptionalParameters/useTenantOptionalParameters.d.ts +6 -0
- package/hooks/useTenantOptionalParameters/useTenantOptionalParameters.js +40 -0
- package/hooks/useTenantOptionalParameters/useTenantOptionalParameters.test.d.ts +1 -0
- package/hooks/useTenantOptionalParameters/useTenantOptionalParameters.test.js +114 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTenantOptionalParameters } from './useTenantOptionalParameters';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useTenantOptionalParameters = void 0;
|
|
4
|
+
var useTenantOptionalParameters_1 = require("./useTenantOptionalParameters");
|
|
5
|
+
Object.defineProperty(exports, "useTenantOptionalParameters", { enumerable: true, get: function () { return useTenantOptionalParameters_1.useTenantOptionalParameters; } });
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TenantOptionalParameters } from '@reltio/mdm-sdk';
|
|
2
|
+
import { RequestStates } from '../../types';
|
|
3
|
+
export declare const useTenantOptionalParameters: (tenant?: string, apiPath?: string) => {
|
|
4
|
+
optionalParameters: TenantOptionalParameters;
|
|
5
|
+
requestState: RequestStates;
|
|
6
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useTenantOptionalParameters = void 0;
|
|
4
|
+
var react_1 = require("react");
|
|
5
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
6
|
+
var types_1 = require("../../types");
|
|
7
|
+
var useSafePromise_1 = require("../useSafePromise");
|
|
8
|
+
var optionalParametersCache = new Map();
|
|
9
|
+
var useTenantOptionalParameters = function (tenant, apiPath) {
|
|
10
|
+
var _a = (0, react_1.useState)(null), optionalParameters = _a[0], setOptionalParameters = _a[1];
|
|
11
|
+
var _b = (0, react_1.useState)(types_1.RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
|
|
12
|
+
var safePromise = (0, useSafePromise_1.useSafePromise)();
|
|
13
|
+
var loadOptionalParameters = (0, react_1.useCallback)(function () {
|
|
14
|
+
if (!tenant || !apiPath) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
var cached = optionalParametersCache.get(tenant);
|
|
18
|
+
if (cached) {
|
|
19
|
+
setOptionalParameters(cached);
|
|
20
|
+
setRequestState(types_1.RequestStates.LOADED);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
setRequestState(types_1.RequestStates.LOADING);
|
|
24
|
+
safePromise((0, mdm_sdk_1.getTenantOptionalParameters)({ tenant: tenant, apiPath: apiPath }))
|
|
25
|
+
.then(function (data) {
|
|
26
|
+
optionalParametersCache.set(tenant, data);
|
|
27
|
+
setOptionalParameters(data);
|
|
28
|
+
setRequestState(types_1.RequestStates.LOADED);
|
|
29
|
+
})
|
|
30
|
+
.catch(function (error) {
|
|
31
|
+
console.warn(error);
|
|
32
|
+
setOptionalParameters(null);
|
|
33
|
+
setRequestState(types_1.RequestStates.ERROR);
|
|
34
|
+
});
|
|
35
|
+
}, [apiPath, tenant]);
|
|
36
|
+
(0, react_1.useEffect)(function () {
|
|
37
|
+
loadOptionalParameters();
|
|
38
|
+
}, [loadOptionalParameters]);
|
|
39
|
+
return (0, react_1.useMemo)(function () { return ({
|
|
40
|
+
optionalParameters: optionalParameters,
|
|
41
|
+
requestState: requestState
|
|
42
|
+
}); }, [optionalParameters, requestState]);
|
|
43
|
+
};
|
|
44
|
+
exports.useTenantOptionalParameters = useTenantOptionalParameters;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,116 @@
|
|
|
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
23
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
24
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
25
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
26
|
+
function step(op) {
|
|
27
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
28
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
29
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
30
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
31
|
+
switch (op[0]) {
|
|
32
|
+
case 0: case 1: t = op; break;
|
|
33
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
34
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
35
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
36
|
+
default:
|
|
37
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
38
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
39
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
40
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
41
|
+
if (t[2]) _.ops.pop();
|
|
42
|
+
_.trys.pop(); continue;
|
|
43
|
+
}
|
|
44
|
+
op = body.call(thisArg, _);
|
|
45
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
46
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
|
+
var react_1 = require("@testing-library/react");
|
|
51
|
+
var mdm_sdk_1 = require("@reltio/mdm-sdk");
|
|
52
|
+
var types_1 = require("../../types");
|
|
53
|
+
var useTenantOptionalParameters_1 = require("./useTenantOptionalParameters");
|
|
54
|
+
jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getTenantOptionalParameters: jest.fn() })); });
|
|
55
|
+
var mockedGet = jest.mocked(mdm_sdk_1.getTenantOptionalParameters);
|
|
56
|
+
var apiPath = 'https://tst-01.reltio.com/reltio';
|
|
57
|
+
describe('useTenantOptionalParameters', function () {
|
|
58
|
+
afterEach(function () {
|
|
59
|
+
jest.clearAllMocks();
|
|
60
|
+
});
|
|
61
|
+
it('does not request when tenant or apiPath is missing', function () {
|
|
62
|
+
(0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)(undefined, apiPath); });
|
|
63
|
+
(0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)('zc-no-apipath', undefined); });
|
|
64
|
+
expect(mockedGet).not.toHaveBeenCalled();
|
|
65
|
+
});
|
|
66
|
+
it('loads and returns optional parameters', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
67
|
+
var result;
|
|
68
|
+
var _a;
|
|
69
|
+
return __generator(this, function (_b) {
|
|
70
|
+
switch (_b.label) {
|
|
71
|
+
case 0:
|
|
72
|
+
mockedGet.mockResolvedValue({ zero_copy_segmentation_enabled: true });
|
|
73
|
+
result = (0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)('zc-load', apiPath); }).result;
|
|
74
|
+
return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(result.current.requestState).toBe(types_1.RequestStates.LOADED); })];
|
|
75
|
+
case 1:
|
|
76
|
+
_b.sent();
|
|
77
|
+
expect((_a = result.current.optionalParameters) === null || _a === void 0 ? void 0 : _a.zero_copy_segmentation_enabled).toBe(true);
|
|
78
|
+
expect(mockedGet).toHaveBeenCalledWith({ tenant: 'zc-load', apiPath: apiPath });
|
|
79
|
+
return [2 /*return*/];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
}); });
|
|
83
|
+
it('sets ERROR state and null parameters when the request fails', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
84
|
+
var result;
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0:
|
|
88
|
+
mockedGet.mockRejectedValue(new Error('network'));
|
|
89
|
+
result = (0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)('zc-error', apiPath); }).result;
|
|
90
|
+
return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(result.current.requestState).toBe(types_1.RequestStates.ERROR); })];
|
|
91
|
+
case 1:
|
|
92
|
+
_a.sent();
|
|
93
|
+
expect(result.current.optionalParameters).toBeNull();
|
|
94
|
+
return [2 /*return*/];
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}); });
|
|
98
|
+
it('caches per tenant across hook instances', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
99
|
+
var first;
|
|
100
|
+
return __generator(this, function (_a) {
|
|
101
|
+
switch (_a.label) {
|
|
102
|
+
case 0:
|
|
103
|
+
mockedGet.mockResolvedValue({ zero_copy_segmentation_enabled: true });
|
|
104
|
+
first = (0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)('zc-cache', apiPath); });
|
|
105
|
+
return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(first.result.current.requestState).toBe(types_1.RequestStates.LOADED); })];
|
|
106
|
+
case 1:
|
|
107
|
+
_a.sent();
|
|
108
|
+
(0, react_1.renderHook)(function () { return (0, useTenantOptionalParameters_1.useTenantOptionalParameters)('zc-cache', apiPath); });
|
|
109
|
+
return [4 /*yield*/, (0, react_1.waitFor)(function () { return expect(mockedGet).toHaveBeenCalledTimes(1); })];
|
|
110
|
+
case 2:
|
|
111
|
+
_a.sent();
|
|
112
|
+
return [2 /*return*/];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
}); });
|
|
116
|
+
});
|
package/cjs/index.d.ts
CHANGED
|
@@ -284,6 +284,7 @@ export { useExpandInvalidRelations } from './hooks/useExpandInvalidRelations';
|
|
|
284
284
|
export { useAutoFocus } from './hooks/useAutoFocus';
|
|
285
285
|
export { useRequestDCRReview } from './hooks/useRequestDCRReview';
|
|
286
286
|
export { useSavedSearchesRequest } from './hooks/useSavedSearchesRequest';
|
|
287
|
+
export { useTenantOptionalParameters } from './hooks/useTenantOptionalParameters';
|
|
287
288
|
export { useHiddenAttributes } from './hooks/useHiddenAttributes';
|
|
288
289
|
export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBasicTableCellRenderer';
|
|
289
290
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
package/cjs/index.js
CHANGED
|
@@ -20,8 +20,8 @@ exports.Link = exports.LinearLoadIndicator = exports.ImportButton = exports.Read
|
|
|
20
20
|
exports.DefaultHeadCellRendererWithTooltip = exports.LazyRenderer = exports.MetadataTypesSelector = exports.DateRangeSelector = exports.GaugeChart = exports.RelationEditor = exports.ReltioMap = exports.Marginator = exports.LightArrowTooltip = exports.ScrollableTabs = exports.VirtualGroupedList = exports.ViewMoreToggle = exports.VerticalHeadingsTable = exports.VerticalDivider = exports.AttributeTitle = exports.Spacer = exports.SimpleDropDownSelector = exports.SidePanelContentHeader = exports.SidePanel = exports.SidePanelEmptyState = exports.SideButtonsPanel = exports.SelectorWithOnlyOptionAutoSelect = exports.SelectionPopup = exports.WhiteSearchInput = exports.SearchInput = exports.ProfileResizablePanes = exports.ResizablePanes = exports.ReltioGridLayout = exports.RCTreeSwitchRenderer = exports.RCTreeLevelLines = exports.RCTree = exports.reactSortableTreeHelpers = exports.ReactSortableTree = exports.MultiSelect = exports.QueryBuilderRowsGroup = exports.QueryBuilderRow = exports.ProfileCard = exports.ProfileBand = exports.PotentialMatchReviewCard = exports.PopupWithArrow = exports.Popper = exports.MultipleInput = exports.ModeSwitcherSelect = exports.ModeSwitcher = exports.TransitiveMatchBlock = exports.SimpleMatchRulesBuilder = exports.SimpleMatchRulesBlock = exports.SimpleMatchRules = exports.MatchRulesBlock = exports.LoadingSpinner = void 0;
|
|
21
21
|
exports.RelatedObjectUrisContext = exports.WorkflowTasksContext = exports.useEntityLoadingIndication = exports.EntityLoadingIndicationProvider = exports.EntityMarkerContext = exports.useAttributeAutoExpanded = exports.AutoExpandedAttributesProvider = exports.useHighlightedCrosswalks = exports.useCrosswalkHighlight = exports.useCrosswalkFocus = exports.useCrosswalkColor = exports.CrosswalksDisplayProvider = exports.EntitiesMapContext = exports.IdContext = exports.ProfilePerspectiveViewContext = exports.usePerspectivesSettings = exports.PerspectivesSettingsContext = exports.PivotingAttributeContext = exports.UsersContext = exports.InitialCollaborationContextValue = exports.CollaborationContextProvider = exports.CollaborationContext = exports.BlockNavigationContext = exports.BlockImageGalleryDialogContext = exports.PopupBoundariesContext = exports.HistoryDiffContext = exports.AsyncMountContext = exports.MdmModuleProvider = exports.withColumnConfigurator = exports.withBlockNavigation = exports.withCollapseButton = exports.withTableContext = exports.withFilterAtBottom = exports.withPercents = exports.withContext = exports.withDateRangeSelector = exports.withDragHandle = exports.withAsyncMount = exports.withTooltip = exports.CollaborationButton = exports.ExportDialog = exports.RequestedData = exports.FacetContainer = exports.FacetsSelector = exports.FacetGroupTitle = exports.QuickFiltersEntityTypeFacet = exports.FacetGroup = exports.QuickFiltersFacetPanel = exports.AdvancedSearchFabButton = exports.QuickFiltersDrawer = void 0;
|
|
22
22
|
exports.useRunOnceAfterValueInitialization = exports.useRelationsLoader = exports.useRelationTypeSelector = exports.usePrevious = exports.useDidUpdateEffect = exports.useCommentsEntitiesMap = exports.useCollaboration = exports.useAsyncMount = exports.useAPI = exports.useActions = exports.useMatchesColumnsData = exports.useScrollToAttributeError = exports.ThemeProvider = exports.ProfileTablesContext = exports.HiddenAttributesContext = exports.BasicTableContext = exports.BasicTableRowCollapseContext = exports.useDeleteUnmaskedAttributeForRelation = exports.useUnmaskedAttributeValue = exports.useUnmaskAttributeValue = exports.useMaskAttributeValue = exports.MaskedAttributesProvider = exports.useReloadData = exports.ReloadDataProvider = exports.useAttributeValueConfigPermissions = exports.ConfigPermissionsContextProvider = exports.ConfigPermissionsContext = exports.useActionsHook = exports.ActionsHookProvider = exports.PageRequestsAbortingContext = exports.DependentLookupAutopopulationContext = exports.FeaturesContext = exports.LabelsContext = exports.UrlGeneratorsContext = exports.isHighlightedAttributeType = exports.isHighlightedErrorType = exports.ScrollType = exports.ScrollToElementProvider = exports.ScrollToElementContext = exports.SearchValueContext = exports.InterceptHandlersContext = exports.HighlightedValuesContext = exports.SnackbarContext = exports.SearchFiltersContext = exports.useReloadFacet = exports.ReloadFacetProvider = exports.useReloadAllFacets = exports.SandboxAPIContext = exports.RelationContext = exports.EntityContext = void 0;
|
|
23
|
-
exports.
|
|
24
|
-
exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttrPathFromColumnId = exports.getAttributeHeight = exports.getNestedPathByColumnId = void 0;
|
|
23
|
+
exports.getAttributeSelectorItems = exports.mergeClasses = exports.isControlOrCommandPressed = exports.getValue = exports.getChecked = exports.showErrorMessage = exports.showDefaultErrorMessage = exports.enrichDataWithPercents = exports.defaultRenderRowCell = exports.defaultGetRowCellHeight = exports.columnFilterToMdmFilter = exports.buildColumnsSizeById = exports.buildColumnsFilter = exports.useInternalExport = exports.useTableColumns = exports.useSegmentsLoader = exports.useDndBasicTableScrollModifier = exports.useDynamicYAxisWidth = exports.useFilterAutoFocus = exports.useSegmentationRequest = exports.resolveMarkers = exports.useMarkers = exports.useMaskedAttribute = exports.useKeyboardNavigation = exports.useDynamicRowCellHeight = exports.useClickableStyle = exports.BasicTableCellRenderer = exports.useBasicTableCellRenderer = exports.useHiddenAttributes = exports.useTenantOptionalParameters = exports.useSavedSearchesRequest = exports.useRequestDCRReview = exports.useAutoFocus = exports.useExpandInvalidRelations = exports.useLayoutResetter = exports.useIsMountedRef = exports.useSnackbar = exports.useSavedStateForEntityType = exports.useReadableSearchState = exports.useEditableConnection = exports.useCustomScripts = exports.useMarkAsNotMatchRequest = exports.useMergeAllRequest = exports.usePagingSimulator = exports.useMatchesLoader = exports.useConfigPermissions = exports.useWhyDidYouUpdate = exports.useUsers = exports.useSavedState = exports.useSafePromise = void 0;
|
|
24
|
+
exports.mockComputedStyles = exports.FakeMouseEvent = exports.rerenderWrapper = exports.mockElementSizes = exports.fixClicksOnResizablePanes = exports.mockBasicTableSizing = exports.getMuiIconsByName = exports.getMuiIconByName = exports.deepFreeze = exports.awaitMockPromises = exports.TestStylesProvider = exports.TestPerspectivesSettingsProvider = exports.getAttrPathFromColumnId = exports.getAttributeHeight = exports.getNestedPathByColumnId = exports.applyCompactValuesCountConstraint = void 0;
|
|
25
25
|
// components
|
|
26
26
|
var ActionButton_1 = require("./ActionButton");
|
|
27
27
|
Object.defineProperty(exports, "ActionButton", { enumerable: true, get: function () { return ActionButton_1.ActionButton; } });
|
|
@@ -631,6 +631,8 @@ var useRequestDCRReview_1 = require("./hooks/useRequestDCRReview");
|
|
|
631
631
|
Object.defineProperty(exports, "useRequestDCRReview", { enumerable: true, get: function () { return useRequestDCRReview_1.useRequestDCRReview; } });
|
|
632
632
|
var useSavedSearchesRequest_1 = require("./hooks/useSavedSearchesRequest");
|
|
633
633
|
Object.defineProperty(exports, "useSavedSearchesRequest", { enumerable: true, get: function () { return useSavedSearchesRequest_1.useSavedSearchesRequest; } });
|
|
634
|
+
var useTenantOptionalParameters_1 = require("./hooks/useTenantOptionalParameters");
|
|
635
|
+
Object.defineProperty(exports, "useTenantOptionalParameters", { enumerable: true, get: function () { return useTenantOptionalParameters_1.useTenantOptionalParameters; } });
|
|
634
636
|
var useHiddenAttributes_1 = require("./hooks/useHiddenAttributes");
|
|
635
637
|
Object.defineProperty(exports, "useHiddenAttributes", { enumerable: true, get: function () { return useHiddenAttributes_1.useHiddenAttributes; } });
|
|
636
638
|
var useBasicTableCellRenderer_1 = require("./hooks/useBasicTableCellRenderer");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTenantOptionalParameters } from './useTenantOptionalParameters';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { useTenantOptionalParameters } from './useTenantOptionalParameters';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TenantOptionalParameters } from '@reltio/mdm-sdk';
|
|
2
|
+
import { RequestStates } from '../../types';
|
|
3
|
+
export declare const useTenantOptionalParameters: (tenant?: string, apiPath?: string) => {
|
|
4
|
+
optionalParameters: TenantOptionalParameters;
|
|
5
|
+
requestState: RequestStates;
|
|
6
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect, useMemo } from 'react';
|
|
2
|
+
import { getTenantOptionalParameters } from '@reltio/mdm-sdk';
|
|
3
|
+
import { RequestStates } from '../../types';
|
|
4
|
+
import { useSafePromise } from '../useSafePromise';
|
|
5
|
+
var optionalParametersCache = new Map();
|
|
6
|
+
export var useTenantOptionalParameters = function (tenant, apiPath) {
|
|
7
|
+
var _a = useState(null), optionalParameters = _a[0], setOptionalParameters = _a[1];
|
|
8
|
+
var _b = useState(RequestStates.INIT), requestState = _b[0], setRequestState = _b[1];
|
|
9
|
+
var safePromise = useSafePromise();
|
|
10
|
+
var loadOptionalParameters = useCallback(function () {
|
|
11
|
+
if (!tenant || !apiPath) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
var cached = optionalParametersCache.get(tenant);
|
|
15
|
+
if (cached) {
|
|
16
|
+
setOptionalParameters(cached);
|
|
17
|
+
setRequestState(RequestStates.LOADED);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
setRequestState(RequestStates.LOADING);
|
|
21
|
+
safePromise(getTenantOptionalParameters({ tenant: tenant, apiPath: apiPath }))
|
|
22
|
+
.then(function (data) {
|
|
23
|
+
optionalParametersCache.set(tenant, data);
|
|
24
|
+
setOptionalParameters(data);
|
|
25
|
+
setRequestState(RequestStates.LOADED);
|
|
26
|
+
})
|
|
27
|
+
.catch(function (error) {
|
|
28
|
+
console.warn(error);
|
|
29
|
+
setOptionalParameters(null);
|
|
30
|
+
setRequestState(RequestStates.ERROR);
|
|
31
|
+
});
|
|
32
|
+
}, [apiPath, tenant]);
|
|
33
|
+
useEffect(function () {
|
|
34
|
+
loadOptionalParameters();
|
|
35
|
+
}, [loadOptionalParameters]);
|
|
36
|
+
return useMemo(function () { return ({
|
|
37
|
+
optionalParameters: optionalParameters,
|
|
38
|
+
requestState: requestState
|
|
39
|
+
}); }, [optionalParameters, requestState]);
|
|
40
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,114 @@
|
|
|
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
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
13
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
14
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
15
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
16
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
17
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
18
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
22
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
23
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
24
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
25
|
+
function step(op) {
|
|
26
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
27
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
28
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
29
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
30
|
+
switch (op[0]) {
|
|
31
|
+
case 0: case 1: t = op; break;
|
|
32
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
33
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
34
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
35
|
+
default:
|
|
36
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
37
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
38
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
39
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
40
|
+
if (t[2]) _.ops.pop();
|
|
41
|
+
_.trys.pop(); continue;
|
|
42
|
+
}
|
|
43
|
+
op = body.call(thisArg, _);
|
|
44
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
45
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
import { renderHook, waitFor } from '@testing-library/react';
|
|
49
|
+
import { getTenantOptionalParameters } from '@reltio/mdm-sdk';
|
|
50
|
+
import { RequestStates } from '../../types';
|
|
51
|
+
import { useTenantOptionalParameters } from './useTenantOptionalParameters';
|
|
52
|
+
jest.mock('@reltio/mdm-sdk', function () { return (__assign(__assign({}, jest.requireActual('@reltio/mdm-sdk')), { getTenantOptionalParameters: jest.fn() })); });
|
|
53
|
+
var mockedGet = jest.mocked(getTenantOptionalParameters);
|
|
54
|
+
var apiPath = 'https://tst-01.reltio.com/reltio';
|
|
55
|
+
describe('useTenantOptionalParameters', function () {
|
|
56
|
+
afterEach(function () {
|
|
57
|
+
jest.clearAllMocks();
|
|
58
|
+
});
|
|
59
|
+
it('does not request when tenant or apiPath is missing', function () {
|
|
60
|
+
renderHook(function () { return useTenantOptionalParameters(undefined, apiPath); });
|
|
61
|
+
renderHook(function () { return useTenantOptionalParameters('zc-no-apipath', undefined); });
|
|
62
|
+
expect(mockedGet).not.toHaveBeenCalled();
|
|
63
|
+
});
|
|
64
|
+
it('loads and returns optional parameters', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
65
|
+
var result;
|
|
66
|
+
var _a;
|
|
67
|
+
return __generator(this, function (_b) {
|
|
68
|
+
switch (_b.label) {
|
|
69
|
+
case 0:
|
|
70
|
+
mockedGet.mockResolvedValue({ zero_copy_segmentation_enabled: true });
|
|
71
|
+
result = renderHook(function () { return useTenantOptionalParameters('zc-load', apiPath); }).result;
|
|
72
|
+
return [4 /*yield*/, waitFor(function () { return expect(result.current.requestState).toBe(RequestStates.LOADED); })];
|
|
73
|
+
case 1:
|
|
74
|
+
_b.sent();
|
|
75
|
+
expect((_a = result.current.optionalParameters) === null || _a === void 0 ? void 0 : _a.zero_copy_segmentation_enabled).toBe(true);
|
|
76
|
+
expect(mockedGet).toHaveBeenCalledWith({ tenant: 'zc-load', apiPath: apiPath });
|
|
77
|
+
return [2 /*return*/];
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
}); });
|
|
81
|
+
it('sets ERROR state and null parameters when the request fails', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
82
|
+
var result;
|
|
83
|
+
return __generator(this, function (_a) {
|
|
84
|
+
switch (_a.label) {
|
|
85
|
+
case 0:
|
|
86
|
+
mockedGet.mockRejectedValue(new Error('network'));
|
|
87
|
+
result = renderHook(function () { return useTenantOptionalParameters('zc-error', apiPath); }).result;
|
|
88
|
+
return [4 /*yield*/, waitFor(function () { return expect(result.current.requestState).toBe(RequestStates.ERROR); })];
|
|
89
|
+
case 1:
|
|
90
|
+
_a.sent();
|
|
91
|
+
expect(result.current.optionalParameters).toBeNull();
|
|
92
|
+
return [2 /*return*/];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); });
|
|
96
|
+
it('caches per tenant across hook instances', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
97
|
+
var first;
|
|
98
|
+
return __generator(this, function (_a) {
|
|
99
|
+
switch (_a.label) {
|
|
100
|
+
case 0:
|
|
101
|
+
mockedGet.mockResolvedValue({ zero_copy_segmentation_enabled: true });
|
|
102
|
+
first = renderHook(function () { return useTenantOptionalParameters('zc-cache', apiPath); });
|
|
103
|
+
return [4 /*yield*/, waitFor(function () { return expect(first.result.current.requestState).toBe(RequestStates.LOADED); })];
|
|
104
|
+
case 1:
|
|
105
|
+
_a.sent();
|
|
106
|
+
renderHook(function () { return useTenantOptionalParameters('zc-cache', apiPath); });
|
|
107
|
+
return [4 /*yield*/, waitFor(function () { return expect(mockedGet).toHaveBeenCalledTimes(1); })];
|
|
108
|
+
case 2:
|
|
109
|
+
_a.sent();
|
|
110
|
+
return [2 /*return*/];
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}); });
|
|
114
|
+
});
|
package/index.d.ts
CHANGED
|
@@ -284,6 +284,7 @@ export { useExpandInvalidRelations } from './hooks/useExpandInvalidRelations';
|
|
|
284
284
|
export { useAutoFocus } from './hooks/useAutoFocus';
|
|
285
285
|
export { useRequestDCRReview } from './hooks/useRequestDCRReview';
|
|
286
286
|
export { useSavedSearchesRequest } from './hooks/useSavedSearchesRequest';
|
|
287
|
+
export { useTenantOptionalParameters } from './hooks/useTenantOptionalParameters';
|
|
287
288
|
export { useHiddenAttributes } from './hooks/useHiddenAttributes';
|
|
288
289
|
export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBasicTableCellRenderer';
|
|
289
290
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
package/index.js
CHANGED
|
@@ -287,6 +287,7 @@ export { useExpandInvalidRelations } from './hooks/useExpandInvalidRelations';
|
|
|
287
287
|
export { useAutoFocus } from './hooks/useAutoFocus';
|
|
288
288
|
export { useRequestDCRReview } from './hooks/useRequestDCRReview';
|
|
289
289
|
export { useSavedSearchesRequest } from './hooks/useSavedSearchesRequest';
|
|
290
|
+
export { useTenantOptionalParameters } from './hooks/useTenantOptionalParameters';
|
|
290
291
|
export { useHiddenAttributes } from './hooks/useHiddenAttributes';
|
|
291
292
|
export { useBasicTableCellRenderer, BasicTableCellRenderer } from './hooks/useBasicTableCellRenderer';
|
|
292
293
|
export { useClickableChartStyle as useClickableStyle } from './hooks/useClickableChartStyle';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reltio/components",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.2287",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE FILE",
|
|
5
5
|
"main": "./cjs/index.js",
|
|
6
6
|
"module": "./index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"@fluentui/react-context-selector": "^9.1.26",
|
|
12
12
|
"@googlemaps/markerclusterer": "^2.5.3",
|
|
13
13
|
"@react-sigma/core": "3.4.0",
|
|
14
|
-
"@reltio/mdm-sdk": "^1.4.
|
|
14
|
+
"@reltio/mdm-sdk": "^1.4.2059",
|
|
15
15
|
"@vis.gl/react-google-maps": "^1.3.0",
|
|
16
16
|
"d3-cloud": "^1.2.5",
|
|
17
17
|
"d3-geo": "^2.0.1",
|