import React from 'react';
import isPlainObject from 'lodash/isPlainObject';
import {
  calculateTextExprValue,
  isArrayNotEmpty,
  makeALink,
  makeButtons,
} from '@/common/util/util';
import { ButtonPosition } from '@/type/button-position';
import { CnResult as UICnResult } from '@cainiaofe/cn-ui-m';

const CnResult = (props) => {
  const { title = '', _context, subTitle, type, buttons, ...rest } = props;
  let realSubTitle;
  if (isPlainObject(subTitle)) {
    realSubTitle = makeALink({
      linkExpr: subTitle,
      recordDataSource: {},
      _context,
    });
  } else {
    realSubTitle = calculateTextExprValue(subTitle, {
      state: _context?.state,
      recordDataSource: {},
    });
  }

  const realTitle =
    calculateTextExprValue(title, {
      state: _context?.state,
      recordDataSource: {},
    }) || '';
  const realType = calculateTextExprValue(type, {
    state: _context?.state,
    recordDataSource: {},
  });

  const extraProps = {
    title: realTitle,
    subTitle: realSubTitle,
    type: realType,
  };
  if (isArrayNotEmpty(buttons)) {
    extraProps.extra = makeButtons({
      buttons: buttons?.map((item) => {
        return {
          ...item,
          position: ButtonPosition.result,
        };
      }),
      _context,
      state: _context?.state,
      urlParamsDataSource: _context?.state?.urlParams || {},
      recordDataSource: {},
    });
  }

  return <UICnResult {...rest} {...extraProps} />;
};

export { CnResult };

CnResult.displayName = 'CnResult';

CnResult.defaultProps = {
  children: null,
};
