import { useEffect } from 'react';

import type { SelectedPrerelease } from '~/src/store/prereleases/types';

import { stagePrereleaseForEditAction } from '~/src/store/prereleases/edit';
import { useDispatch } from '~/src/store/redux';
import { EditPrereleasePageContent } from './components';
import { useStagedPrerelease } from './hooks';

export const EditPrereleasePage = ({
  prerelease,
}: {
  prerelease: SelectedPrerelease;
}) => {
  const dispatch = useDispatch();
  const stagedPrerelease = useStagedPrerelease(prerelease);
  const originalPrerelease = prerelease;

  useEffect(() => {
    dispatch(stagePrereleaseForEditAction(prerelease.id));
  }, [dispatch, prerelease.id]);

  // TODO: Show an error message or redirect back to the prerelease page
  if (!originalPrerelease) return null;

  // TODO: The staged prerelease would only be null on the first render,
  // but we should handle this case in the future
  if (!stagedPrerelease) return null;

  return (
    <EditPrereleasePageContent
      stagedPrerelease={stagedPrerelease}
      originalPrerelease={originalPrerelease}
    />
  );
};
