portainer/app/react/docker/stacks/ItemView/StackEditorTab/useVersionedStackFile.tsx

32 lines
775 B
TypeScript

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,
};
}