import { useState } from 'react';
import { ActionBar as ActionBarComponent, Button, InputNumber } from 'src/components';
import useAdviserTexts from 'src/features/adviser/useAdviserTexts';
import useGraphLimit from 'src/pages/robot/Brain/useGraphLimit';
import GraphFullscreenBtn, { useFullscreen } from '../../GraphFullscreenBtn/GraphFullscreenBtn';

enum Steps {
  INITIAL,
  CHANGE_LIMIT,
}

function GraphActionBar({ children }: { children?: React.ReactNode }) {
  const [step, setStep] = useState(Steps.INITIAL);
  const { isFullscreen } = useFullscreen();

  const { limit, setLimit } = useGraphLimit();
  const [newLimit, setNewLimit] = useState(limit);

  let content;
  let adviserText;
  let onClickBack;

  switch (step) {
    case Steps.INITIAL: {
      content = (
        <>
          {!isFullscreen && (
            <>
              {children}

              <Button onClick={() => setStep(Steps.CHANGE_LIMIT)}>Change limit</Button>
            </>
          )}

          <GraphFullscreenBtn />
        </>
      );

      break;
    }

    case Steps.CHANGE_LIMIT: {
      content = (
        <>
          <InputNumber
            value={newLimit}
            onChange={(value) => setNewLimit(Number(value))}
            placeholder="Enter new limit"
          />

          <Button
            onClick={() => {
              setLimit(newLimit);
              setStep(Steps.INITIAL);
            }}
          >
            Confirm
          </Button>
        </>
      );

      onClickBack = () => setStep(Steps.INITIAL);

      adviserText = 'change limit to show in graph, but it can reduce performance';

      break;
    }

    default: {
    }
  }

  useAdviserTexts({
    defaultText: adviserText,
  });

  return <ActionBarComponent onClickBack={onClickBack}>{content}</ActionBarComponent>;
}

export default GraphActionBar;

Neighbours