mirror of
https://github.com/portainer/portainer.git
synced 2025-07-19 13:29:41 +02:00
Co-authored-by: James Player <james.player@portainer.io> Co-authored-by: Cara Ryan <cara.ryan@portainer.io> Co-authored-by: stevensbkang <skan070@gmail.com>
60 lines
2.1 KiB
TypeScript
60 lines
2.1 KiB
TypeScript
import { useEnvironmentId } from '@/react/hooks/useEnvironmentId';
|
|
|
|
import { HelmRelease } from '../../types';
|
|
import { useHelmRelease } from '../queries/useHelmRelease';
|
|
|
|
import { DiffViewMode } from './DiffControl';
|
|
|
|
/** useHelmReleaseToCompare is a hook that returns the release to compare to based on the diffViewMode, selectedRevisionNumber and selectedCompareRevisionNumber */
|
|
export function useHelmReleaseToCompare(
|
|
release: HelmRelease,
|
|
earliestRevisionNumber: number,
|
|
latestRevisionNumber: number,
|
|
diffViewMode: DiffViewMode,
|
|
selectedRevisionNumber: number,
|
|
selectedCompareRevisionNumber: number
|
|
) {
|
|
const environmentId = useEnvironmentId();
|
|
// the selectedCompareRevisionNumber is the number selected in the input field, but the compareRevisionNumber is the revision number of the release to compare to
|
|
const compareRevisionNumber = getCompareReleaseVersion(
|
|
diffViewMode,
|
|
selectedRevisionNumber,
|
|
selectedCompareRevisionNumber
|
|
);
|
|
const enabled =
|
|
compareRevisionNumber <= latestRevisionNumber &&
|
|
compareRevisionNumber >= earliestRevisionNumber;
|
|
|
|
// a 1 hour stale time is nice because past releases are not likely to change
|
|
const compareReleaseQuery = useHelmRelease(
|
|
environmentId,
|
|
release.name,
|
|
release.namespace ?? '',
|
|
{
|
|
showResources: false,
|
|
enabled,
|
|
staleTime: 60 * 60 * 1000,
|
|
revision: compareRevisionNumber,
|
|
}
|
|
);
|
|
return {
|
|
compareRelease: compareReleaseQuery.data,
|
|
isCompareReleaseLoading: compareReleaseQuery.isInitialLoading,
|
|
isCompareReleaseError: compareReleaseQuery.isError,
|
|
};
|
|
}
|
|
|
|
// getCompareReleaseVersion is a helper function that returns the revision number that should be fetched based on the diffViewMode, selectedRevisionNumber and selectedCompareRevisionNumber
|
|
function getCompareReleaseVersion(
|
|
diffViewMode: DiffViewMode,
|
|
selectedRevisionNumber: number,
|
|
selectedCompareRevisionNumber: number
|
|
) {
|
|
if (diffViewMode === 'previous') {
|
|
return selectedRevisionNumber - 1;
|
|
}
|
|
if (diffViewMode === 'specific') {
|
|
return selectedCompareRevisionNumber;
|
|
}
|
|
return selectedRevisionNumber;
|
|
}
|