All files / Settings/EditableSettingsList/SettingField/RenderSettingValue RenderSettingValue.js

100% Statements 29/29
95.65% Branches 22/23
100% Functions 4/4
100% Lines 27/27

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77        25x               12x   12x   12x         12x 12x   3x 3x     2x 3x 1x     1x     3x 1x     2x 1x     1x     3x 6x 6x   3x     3x 1x     2x 1x   1x         25x                    
import PropTypes from 'prop-types';
 
import { useKintIntl } from '../../../../hooks';
 
const RenderSettingValue = (props) => {
  const {
    currentSetting: setting,
    intlKey: passedIntlKey,
    intlNS: passedIntlNS,
    labelOverrides = {},
    refdata, // TODO ... can we get away without passing these in now, using useRefdata?
    templates // TODO ... can we get away without passing these in now, using useTemplates?
  } = props;
 
  const kintIntl = useKintIntl(passedIntlKey, passedIntlNS);
 
  const NoCurrentValue = kintIntl.formatKintMessage({
    id: 'settings.noCurrentValue',
    overrideValue: labelOverrides?.noCurrentValue
  });
 
  const defaultText = `[${kintIntl.formatKintMessage({ id: 'settings.default', overrideValue: labelOverrides?.default })}]`;
  switch (setting.settingType) {
    case 'Refdata': {
      if (setting.value) {
        return refdata?.filter((obj) => obj.value === setting.value)[0]?.label ?? null;
      }
 
      if (setting.defValue) {
        const defValue = refdata?.filter((obj) => obj.value === setting.defValue)[0]?.label;
        return `${defaultText} ${defValue}`;
      }
 
      return NoCurrentValue;
    }
    case 'Password': {
      if (setting.value) {
        return '********';
      }
 
      if (setting.defValue) {
        return `${defaultText} ********`;
      }
 
      return NoCurrentValue;
    }
    case 'Template': {
      const templateValue = templates.filter((obj) => {
        const settingId = setting.value || setting.defValue;
        return obj.id === settingId;
      })[0];
      return templateValue?.name || NoCurrentValue;
    }
    default: {
      if (setting.value) {
        return setting.value;
      }
 
      if (setting.defValue) {
        return `${defaultText} ${setting.defValue}`;
      }
      return NoCurrentValue;
    }
  }
};
 
RenderSettingValue.propTypes = {
  currentSetting: PropTypes.object,
  intlKey: PropTypes.string,
  intlNS: PropTypes.string,
  labelOverrides: PropTypes.object,
  refdata: PropTypes.arrayOf(PropTypes.object),
  templates: PropTypes.arrayOf(PropTypes.object),
};
 
export default RenderSettingValue;