import React, { useState } from 'react';
import { Icon } from '../Icon';

interface SensitiveTextProps {
  className?: string;
  text: string;
}
export const SensitiveText: React.FC<SensitiveTextProps> = React.memo(
  (props) => {
    const { className, text } = props;
    const [show, setShow] = useState(false);

    return (
      <div
        className={className}
        style={{ display: 'flex', alignItems: 'center' }}
      >
        {show ? text : getMaskedText(text)}

        <Icon
          style={{ cursor: 'pointer', marginLeft: 4 }}
          icon={show ? 'mdi:eye-off-outline' : 'mdi:eye-outline'}
          onClick={() => setShow((before) => !before)}
        />
      </div>
    );
  }
);
SensitiveText.displayName = 'SensitiveText';

function getMaskedText(text: string) {
  const len = text.length;
  if (len > 2) {
    return `${text[0]}****${text[len - 1]}`;
  } else if (len === 2) {
    return `${text[0]}*`;
  } else {
    return '**';
  }
}