@orchestrator-ui/orchestrator-ui-components
Version:
Library of UI Components used to display the workflow orchestrator frontend
37 lines (29 loc) • 1.1 kB
text/typescript
import React from 'react';
import { ValueOverrideFunction } from '@/rtk';
import { useAppSelector } from '@/rtk/hooks';
import { FieldValue, RenderableFieldValue } from '@/types';
export const useSubscriptionDetailValueOverride = () => {
const valueOverrideConfiguration = useAppSelector(
(state) =>
state.orchestratorComponentOverride?.subscriptionDetail
?.valueOverrides,
);
const getOverriddenValue = (
fieldValue: FieldValue | RenderableFieldValue,
allFieldValues: FieldValue[] | RenderableFieldValue[],
): React.ReactNode | null => {
if (!valueOverrideConfiguration) {
return null;
}
const renderFunctionForField: ValueOverrideFunction | undefined =
valueOverrideConfiguration[fieldValue.field];
// This check is needed because TS does not infer the type correctly
if (renderFunctionForField) {
return renderFunctionForField(fieldValue, allFieldValues);
}
return null;
};
return {
getOverriddenValue,
};
};