import type { NextPageContext } from 'next';

const TestPageThatThrows = ({ throwInClientRender, throwInServerRender }) => {
  if (throwInClientRender && process.browser) {
    // @ts-ignore
    // eslint-disable-next-line no-console
    return <div>{window.does.not.exist}</div>;
  }

  if (throwInServerRender && !process.browser) {
    // @ts-ignore
    // eslint-disable-next-line no-console
    return <div>{global.does.not.exist}</div>;
  }

  return (
    <button
      data-testid="errorButton"
      onClick={() => {
        throw new Error('click error');
      }}
    >
      Click to throw
    </button>
  );
};

TestPageThatThrows.getInitialProps = ({ query }: NextPageContext) => {
  if (query.throwInGetInitialProps) {
    throw new Error('getInitialProps error');
  }

  return {
    throwInClientRender: !!query.throwInClientRender,
    throwInServerRender: !!query.throwInServerRender,
  };
};

export default TestPageThatThrows;
