import { useEffect } from 'react';

import { useStackFile } from '@/react/common/stacks/queries/useStackFile';
import { Stack } from '@/react/common/stacks/types';

export function useVersionedStackFile({
  stackId,
  version,
  onLoad,
}: {
  stackId: Stack['Id'];
  version?: string;
  onLoad(content: string): void;
}) {
  const fileQuery = useStackFile(stackId, { version }, { enabled: !!version });
  useEffect(() => {
    if (fileQuery.isSuccess && fileQuery.data?.StackFileContent) {
      onLoad(fileQuery.data.StackFileContent);
    }
  }, [
    fileQuery.isSuccess,
    fileQuery.data?.StackFileContent,
    onLoad,
    version, // reload on version change
  ]);

  return {
    isLoading: fileQuery.isLoading,
    content: fileQuery.data?.StackFileContent,
  };
}
