ESLint: Resolve useSelector-prefer-selectors errors

This resolves all occurences of useSelector-prefer-selectors errors.
This commit is contained in:
regexowl 2024-03-27 13:28:27 +01:00 committed by Lucas Garfield
parent 3d9f171611
commit 155962c141
33 changed files with 103 additions and 165 deletions

View file

@ -139,9 +139,7 @@ const BlueprintsSidebar = () => {
};
const BlueprintSearch = ({ blueprintsTotal }: blueprintSearchProps) => {
const blueprintSearchInput = useAppSelector((state) =>
selectBlueprintSearchInput(state)
);
const blueprintSearchInput = useAppSelector(selectBlueprintSearchInput);
const dispatch = useAppDispatch();
const debouncedSearch = useCallback(
debounce((filter) => {

View file

@ -116,7 +116,6 @@ CustomButtons.propTypes = {
handleNext: PropTypes.func,
handlePrev: PropTypes.func,
nextStep: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
isSaving: PropTypes.bool,
};
export default CustomButtons;

View file

@ -121,34 +121,24 @@ const CreateImageWizard = ({ startStepIndex = 1 }: CreateImageWizardProps) => {
* */
// Image Output
const targetEnvironments = useAppSelector((state) => selectImageTypes(state));
const targetEnvironments = useAppSelector(selectImageTypes);
// AWS
const awsShareMethod = useAppSelector((state) => selectAwsShareMethod(state));
const awsAccountId = useAppSelector((state) => selectAwsAccountId(state));
const awsSourceId = useAppSelector((state) => selectAwsSourceId(state));
const awsShareMethod = useAppSelector(selectAwsShareMethod);
const awsAccountId = useAppSelector(selectAwsAccountId);
const awsSourceId = useAppSelector(selectAwsSourceId);
// GCP
const gcpShareMethod = useAppSelector((state) => selectGcpShareMethod(state));
const gcpEmail = useAppSelector((state) => selectGcpEmail(state));
const gcpShareMethod = useAppSelector(selectGcpShareMethod);
const gcpEmail = useAppSelector(selectGcpEmail);
// AZURE
const azureShareMethod = useAppSelector((state) =>
selectAzureShareMethod(state)
);
const azureTenantId = useAppSelector((state) => selectAzureTenantId(state));
const azureSubscriptionId = useAppSelector((state) =>
selectAzureSubscriptionId(state)
);
const azureResourceGroup = useAppSelector((state) =>
selectAzureResourceGroup(state)
);
const azureSource = useAppSelector((state) => selectAzureSource(state));
const registrationType = useAppSelector((state) =>
selectRegistrationType(state)
);
const blueprintName = useAppSelector((state) => selectBlueprintName(state));
const blueprintDescription = useAppSelector((state) =>
selectBlueprintDescription(state)
);
const activationKey = useAppSelector((state) => selectActivationKey(state));
const azureShareMethod = useAppSelector(selectAzureShareMethod);
const azureTenantId = useAppSelector(selectAzureTenantId);
const azureSubscriptionId = useAppSelector(selectAzureSubscriptionId);
const azureResourceGroup = useAppSelector(selectAzureResourceGroup);
const azureSource = useAppSelector(selectAzureSource);
const registrationType = useAppSelector(selectRegistrationType);
const blueprintName = useAppSelector(selectBlueprintName);
const blueprintDescription = useAppSelector(selectBlueprintDescription);
const activationKey = useAppSelector(selectActivationKey);
return (
<>

View file

@ -25,10 +25,8 @@ import {
const DetailsStep = () => {
const dispatch = useAppDispatch();
const blueprintName = useAppSelector((state) => selectBlueprintName(state));
const blueprintDescription = useAppSelector((state) =>
selectBlueprintDescription(state)
);
const blueprintName = useAppSelector(selectBlueprintName);
const blueprintDescription = useAppSelector(selectBlueprintDescription);
const handleNameChange = (
_event: React.FormEvent<HTMLInputElement>,
name: string

View file

@ -54,10 +54,8 @@ export const FileSystemStepFooter = () => {
const [isValid, setIsValid] = useState(false);
const dispatch = useAppDispatch();
const [isNextDisabled, setNextDisabled] = useState(false);
const fileSystemPartitionMode = useAppSelector((state) =>
selectFileSystemPartitionMode(state)
);
const partitions = useAppSelector((state) => selectPartitions(state));
const fileSystemPartitionMode = useAppSelector(selectFileSystemPartitionMode);
const partitions = useAppSelector(selectPartitions);
const onValidate = () => {
dispatch(setIsNextButtonTouched(false));
@ -93,14 +91,12 @@ export const FileSystemStepFooter = () => {
};
const FileSystemConfiguration = () => {
const partitions = useAppSelector((state) => selectPartitions(state));
const environments = useAppSelector((state) => selectImageTypes(state));
const partitions = useAppSelector(selectPartitions);
const environments = useAppSelector(selectImageTypes);
const dispatch = useAppDispatch();
const isNextButtonPristine = useAppSelector((state) =>
selectIsNextButtonTouched(state)
);
const isNextButtonPristine = useAppSelector(selectIsNextButtonTouched);
const handleAddPartition = () => {
const id = uuidv4();
dispatch(
@ -233,13 +229,11 @@ const getSuffix = (mountpoint: string) => {
const Row = ({ partition }: RowPropTypes) => {
const dispatch = useAppDispatch();
const partitions = useAppSelector((state) => selectPartitions(state));
const partitions = useAppSelector(selectPartitions);
const handleRemovePartition = (id: string) => {
dispatch(removePartition(id));
};
const isNextButtonPristine = useAppSelector((state) =>
selectIsNextButtonTouched(state)
);
const isNextButtonPristine = useAppSelector(selectIsNextButtonTouched);
const duplicates = getDuplicateMountPoints(partitions);
return (

View file

@ -14,9 +14,7 @@ import {
const FileSystemPartition = () => {
const id = uuidv4();
const dispatch = useAppDispatch();
const fileSystemPartitionMode = useAppSelector((state) =>
selectFileSystemPartitionMode(state)
);
const fileSystemPartitionMode = useAppSelector(selectFileSystemPartitionMode);
return (
<FormGroup>
<Radio

View file

@ -11,9 +11,7 @@ import { selectFileSystemPartitionMode } from '../../../../store/wizardSlice';
export type FileSystemPartitionMode = 'automatic' | 'manual';
const FileSystemStep = () => {
const fileSystemPartitionMode = useAppSelector((state) =>
selectFileSystemPartitionMode(state)
);
const fileSystemPartitionMode = useAppSelector(selectFileSystemPartitionMode);
return (
<Form>

View file

@ -16,7 +16,7 @@ import {
} from '../../../../store/wizardSlice';
const ArchSelect = () => {
const arch = useAppSelector((state) => selectArchitecture(state));
const arch = useAppSelector(selectArchitecture);
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);

View file

@ -117,7 +117,7 @@ export const MajorReleasesLifecyclesChart = () => {
};
const ReleaseLifecycle = () => {
const release = useAppSelector((state) => selectDistribution(state));
const release = useAppSelector(selectDistribution);
const [isExpanded, setIsExpanded] = useState(true);
const onToggle = (_event: React.MouseEvent, isExpanded: boolean) => {

View file

@ -29,7 +29,7 @@ const ReleaseSelect = () => {
// What the UI refers to as the "release" is referred to as the "distribution" in the API.
// The Redux store follows the API convention, and data read from or to the store will use
// the word "Distribution" instead of "Release".
const distribution = useAppSelector((state) => selectDistribution(state));
const distribution = useAppSelector(selectDistribution);
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);
const [showDevelopmentOptions, setShowDevelopmentOptions] = useState(false);

View file

@ -28,9 +28,9 @@ import {
import { useGetEnvironment } from '../../../../Utilities/useGetEnvironment';
const TargetEnvironment = () => {
const arch = useAppSelector((state) => selectArchitecture(state));
const environments = useAppSelector((state) => selectImageTypes(state));
const distribution = useAppSelector((state) => selectDistribution(state));
const arch = useAppSelector(selectArchitecture);
const environments = useAppSelector(selectImageTypes);
const distribution = useAppSelector(selectDistribution);
const { data } = useGetArchitecturesQuery({
distribution: distribution,
});

View file

@ -13,7 +13,7 @@ import { selectDistribution } from '../../../../store/wizardSlice';
import DocumentationButton from '../../../sharedComponents/DocumentationButton';
const ImageOutputStep = () => {
const distribution = useAppSelector((state) => selectDistribution(state));
const distribution = useAppSelector(selectDistribution);
return (
<Form>

View file

@ -37,13 +37,11 @@ import {
} from '../../../../store/wizardSlice';
const ProfileSelector = () => {
const oscapProfile = useAppSelector((state) => selectProfile(state));
let kernel = useAppSelector((state) => selectKernel(state));
let disabledServices = useAppSelector((state) =>
selectDisabledServices(state)
);
let enabledServices = useAppSelector((state) => selectEnabledServices(state));
const release = useAppSelector((state) => selectDistribution(state));
const oscapProfile = useAppSelector(selectProfile);
let kernel = useAppSelector(selectKernel);
let disabledServices = useAppSelector(selectDisabledServices);
let enabledServices = useAppSelector(selectEnabledServices);
const release = useAppSelector(selectDistribution);
const dispatch = useAppDispatch();
const [profileName, setProfileName] = useState<string | undefined>('None');
const [isOpen, setIsOpen] = useState(false);
@ -256,7 +254,7 @@ const OScapSelectOption = ({
setProfileName,
input,
}: OScapSelectOptionPropType) => {
const release = useAppSelector((state) => selectDistribution(state));
const release = useAppSelector(selectDistribution);
const { data } = useGetOscapCustomizationsQuery({
distribution: release,
profile: profile_id,
@ -285,7 +283,7 @@ const OScapSelectOption = ({
};
export const Oscap = () => {
const oscapProfile = useAppSelector((state) => selectProfile(state));
const oscapProfile = useAppSelector(selectProfile);
return (
<>

View file

@ -20,8 +20,8 @@ import {
} from '../../../../store/wizardSlice';
export const OscapProfileInformation = (): JSX.Element => {
const release = useAppSelector((state) => selectDistribution(state));
const oscapProfile = useAppSelector((state) => selectProfile(state));
const release = useAppSelector(selectDistribution);
const oscapProfile = useAppSelector(selectProfile);
const {
data: oscapProfileInfo,

View file

@ -11,7 +11,7 @@ import DocumentationButton from '../../../sharedComponents/DocumentationButton';
const OscapStep = () => {
const prefetchOscapProfile = imageBuilderApi.usePrefetch('getOscapProfiles');
const release = useAppSelector((state) => selectDistribution(state));
const release = useAppSelector(selectDistribution);
prefetchOscapProfile({ distribution: release });
return (

View file

@ -120,12 +120,10 @@ const TooManyResultsWithExactMatch = () => {
const Packages = () => {
const dispatch = useDispatch();
const arch = useAppSelector((state) => selectArchitecture(state));
const distribution = useAppSelector((state) => selectDistribution(state));
const customRepositories = useAppSelector((state) =>
selectCustomRepositories(state)
);
const packages = useAppSelector((state) => selectPackages(state));
const arch = useAppSelector(selectArchitecture);
const distribution = useAppSelector(selectDistribution);
const customRepositories = useAppSelector(selectCustomRepositories);
const packages = useAppSelector(selectPackages);
const [perPage, setPerPage] = useState(10);
const [page, setPage] = useState(1);

View file

@ -20,7 +20,7 @@ import { useShowActivationKeyQuery } from '../../../../store/rhsmApi';
import { selectActivationKey } from '../../../../store/wizardSlice';
const ActivationKeyInformation = (): JSX.Element => {
const activationKey = useAppSelector((state) => selectActivationKey(state));
const activationKey = useAppSelector(selectActivationKey);
const {
data: activationKeyInfo,

View file

@ -139,7 +139,7 @@ const ManageKeysButton = () => {
const ActivationKeysList = () => {
const dispatch = useAppDispatch();
const activationKey = useAppSelector((state) => selectActivationKey(state));
const activationKey = useAppSelector(selectActivationKey);
const { isProd } = useGetEnvironment();
const [isOpen, setIsOpen] = useState(false);

View file

@ -138,9 +138,7 @@ const RhcPopover = () => {
const Registration = () => {
const dispatch = useAppDispatch();
const registrationType = useAppSelector((state) =>
selectRegistrationType(state)
);
const registrationType = useAppSelector(selectRegistrationType);
const [showOptions, setShowOptions] = useState(
registrationType === 'register-now-insights' ||

View file

@ -14,10 +14,8 @@ import {
} from '../../../../store/wizardSlice';
const RegistrationStep = () => {
const registrationType = useAppSelector((state) =>
selectRegistrationType(state)
);
const activationKey = useAppSelector((state) => selectActivationKey(state));
const registrationType = useAppSelector(selectRegistrationType);
const activationKey = useAppSelector(selectActivationKey);
return (
<Form>
<Title headingLevel="h1" size="xl">

View file

@ -166,13 +166,10 @@ const convertSchemaToIBPayloadRepo = (repo: ApiRepositoryResponseRead) => {
const Repositories = () => {
const dispatch = useAppDispatch();
const arch = useAppSelector((state) => selectArchitecture(state));
const distribution = useAppSelector((state) => selectDistribution(state));
const arch = useAppSelector(selectArchitecture);
const distribution = useAppSelector(selectDistribution);
const version = releaseToVersion(distribution);
const repositoriesList = useAppSelector((state) =>
selectCustomRepositories(state)
);
const repositoriesList = useAppSelector(selectCustomRepositories);
const [filterValue, setFilterValue] = useState('');
const [perPage, setPerPage] = useState(10);

View file

@ -34,16 +34,12 @@ import {
} from '../../../../store/wizardSlice';
const Review = () => {
const blueprintName = useAppSelector((state) => selectBlueprintName(state));
const blueprintDescription = useAppSelector((state) =>
selectBlueprintDescription(state)
);
const distribution = useAppSelector((state) => selectDistribution(state));
const environments = useAppSelector((state) => selectImageTypes(state));
const oscapProfile = useAppSelector((state) => selectProfile(state));
const registrationType = useAppSelector((state) =>
selectRegistrationType(state)
);
const blueprintName = useAppSelector(selectBlueprintName);
const blueprintDescription = useAppSelector(selectBlueprintDescription);
const distribution = useAppSelector(selectDistribution);
const environments = useAppSelector(selectImageTypes);
const oscapProfile = useAppSelector(selectProfile);
const registrationType = useAppSelector(selectRegistrationType);
const [isExpandedImageOutput, setIsExpandedImageOutput] = useState(false);
const [isExpandedTargetEnvs, setIsExpandedTargetEnvs] = useState(false);

View file

@ -58,7 +58,7 @@ const RepoName = ({ repoUrl }: repoPropType) => {
};
export const FSReviewTable = () => {
const partitions = useAppSelector((state) => selectPartitions(state));
const partitions = useAppSelector(selectPartitions);
return (
<Panel isScrollable>
<PanelMain maxHeight="30ch">
@ -92,7 +92,7 @@ export const FSReviewTable = () => {
};
export const PackagesTable = () => {
const packages = useAppSelector((state) => selectPackages(state));
const packages = useAppSelector(selectPackages);
return (
<Panel isScrollable>
<PanelMain maxHeight="30ch">
@ -124,9 +124,7 @@ export const PackagesTable = () => {
};
export const RepositoriesTable = () => {
const repositoriesList = useAppSelector((state) =>
selectCustomRepositories(state)
);
const repositoriesList = useAppSelector(selectCustomRepositories);
return (
<Panel isScrollable>
<PanelMain maxHeight="30ch">

View file

@ -66,8 +66,8 @@ const ExpirationWarning = () => {
};
export const ImageOutputList = () => {
const distribution = useAppSelector((state) => selectDistribution(state));
const arch = useAppSelector((state) => selectArchitecture(state));
const distribution = useAppSelector(selectDistribution);
const arch = useAppSelector(selectArchitecture);
return (
<TextContent>
{distribution === RHEL_8 && (
@ -105,9 +105,7 @@ export const ImageOutputList = () => {
);
};
export const FSCList = () => {
const fileSystemPartitionMode = useAppSelector((state) =>
selectFileSystemPartitionMode(state)
);
const fileSystemPartitionMode = useAppSelector(selectFileSystemPartitionMode);
return (
<TextContent>
@ -188,9 +186,9 @@ export const TargetEnvAWSList = () => {
const { isSuccess } = useGetSourceListQuery({
provider: 'aws',
});
const awsAccountId = useAppSelector((state) => selectAwsAccountId(state));
const awsShareMethod = useAppSelector((state) => selectAwsShareMethod(state));
const sourceId = useAppSelector((state) => selectAwsSourceId(state));
const awsAccountId = useAppSelector(selectAwsAccountId);
const awsShareMethod = useAppSelector(selectAwsShareMethod);
const sourceId = useAppSelector(selectAwsSourceId);
const { source } = useGetSourceListQuery(
{
provider: 'aws',
@ -242,9 +240,9 @@ export const TargetEnvAWSList = () => {
};
export const TargetEnvGCPList = () => {
const accountType = useAppSelector((state) => selectGcpAccountType(state));
const sharedMethod = useAppSelector((state) => selectGcpShareMethod(state));
const email = useAppSelector((state) => selectGcpEmail(state));
const accountType = useAppSelector(selectGcpAccountType);
const sharedMethod = useAppSelector(selectGcpShareMethod);
const email = useAppSelector(selectGcpEmail);
return (
<TextContent>
<Text component={TextVariants.h3}>GCP</Text>
@ -303,15 +301,11 @@ export const TargetEnvGCPList = () => {
export const TargetEnvAzureList = () => {
const { data: rawAzureSources, isSuccess: isSuccessAzureSources } =
useGetSourceListQuery({ provider: 'azure' });
const shareMethod = useAppSelector((state) => selectAzureShareMethod(state));
const tenantId = useAppSelector((state) => selectAzureTenantId(state));
const azureSource = useAppSelector((state) => selectAzureSource(state));
const azureResourceGroup = useAppSelector((state) =>
selectAzureResourceGroup(state)
);
const subscriptionId = useAppSelector((state) =>
selectAzureSubscriptionId(state)
);
const shareMethod = useAppSelector(selectAzureShareMethod);
const tenantId = useAppSelector(selectAzureTenantId);
const azureSource = useAppSelector(selectAzureSource);
const azureResourceGroup = useAppSelector(selectAzureResourceGroup);
const subscriptionId = useAppSelector(selectAzureSubscriptionId);
return (
<TextContent>
@ -411,10 +405,8 @@ export const TargetEnvOtherList = () => {
};
export const ContentList = () => {
const customRepositories = useAppSelector((state) =>
selectCustomRepositories(state)
);
const packages = useAppSelector((state) => selectPackages(state));
const customRepositories = useAppSelector(selectCustomRepositories);
const packages = useAppSelector(selectPackages);
return (
<TextContent>
<TextList component={TextListVariants.dl}>
@ -501,10 +493,8 @@ export const RegisterLaterList = () => {
};
export const RegisterNowList = () => {
const activationKey = useAppSelector((state) => selectActivationKey(state));
const registrationType = useAppSelector((state) =>
selectRegistrationType(state)
);
const activationKey = useAppSelector(selectActivationKey);
const registrationType = useAppSelector(selectRegistrationType);
const [orgId, setOrgId] = useState<string | undefined>(undefined);
const { auth } = useChrome();
@ -609,10 +599,8 @@ export const RegisterNowList = () => {
};
export const ImageDetailsList = () => {
const blueprintName = useAppSelector((state) => selectBlueprintName(state));
const blueprintDescription = useAppSelector((state) =>
selectBlueprintDescription(state)
);
const blueprintName = useAppSelector(selectBlueprintName);
const blueprintDescription = useAppSelector(selectBlueprintDescription);
return (
<TextContent>

View file

@ -17,7 +17,7 @@ import {
export const AwsAccountId = () => {
const dispatch = useAppDispatch();
const sourceId = useAppSelector((state) => selectAwsSourceId(state));
const sourceId = useAppSelector(selectAwsSourceId);
const { data, isError } = useGetSourceUploadInfoQuery(
{

View file

@ -18,7 +18,7 @@ import {
export const AwsSourcesSelect = () => {
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);
const sourceId = useAppSelector((state) => selectAwsSourceId(state));
const sourceId = useAppSelector(selectAwsSourceId);
const { data, isFetching, isLoading, isSuccess, isError, refetch } =
useGetSourceListQuery({

View file

@ -50,8 +50,8 @@ const SourcesButton = () => {
const Aws = () => {
const dispatch = useAppDispatch();
const shareMethod = useAppSelector((state) => selectAwsShareMethod(state));
const shareWithAccount = useAppSelector((state) => selectAwsAccountId(state));
const shareMethod = useAppSelector(selectAwsShareMethod);
const shareWithAccount = useAppSelector(selectAwsAccountId);
return (
<Form>

View file

@ -6,7 +6,7 @@ import { useAppSelector } from '../../../../../store/hooks';
import { selectAzureTenantId } from '../../../../../store/wizardSlice';
export const AzureAuthButton = () => {
const tenantId = useAppSelector((state) => selectAzureTenantId(state));
const tenantId = useAppSelector(selectAzureTenantId);
const guidRegex = new RegExp(
'^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$',
'i'

View file

@ -16,10 +16,8 @@ import {
} from '../../../../../store/wizardSlice';
export const AzureResourceGroups = () => {
const azureSource = useAppSelector((state) => selectAzureSource(state));
const azureResourceGroup = useAppSelector((state) =>
selectAzureResourceGroup(state)
);
const azureSource = useAppSelector(selectAzureSource);
const azureResourceGroup = useAppSelector(selectAzureResourceGroup);
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);

View file

@ -22,7 +22,7 @@ import {
} from '../../../../../store/wizardSlice';
export const AzureSourcesSelect = () => {
const azureSource = useAppSelector((state) => selectAzureSource(state));
const azureSource = useAppSelector(selectAzureSource);
const dispatch = useAppDispatch();
const [isOpen, setIsOpen] = useState(false);

View file

@ -56,14 +56,10 @@ const SourcesButton = () => {
const Azure = () => {
const dispatch = useAppDispatch();
const shareMethod = useAppSelector((state) => selectAzureShareMethod(state));
const tenantId = useAppSelector((state) => selectAzureTenantId(state));
const subscriptionId = useAppSelector((state) =>
selectAzureSubscriptionId(state)
);
const resourceGroup = useAppSelector((state) =>
selectAzureResourceGroup(state)
);
const shareMethod = useAppSelector(selectAzureShareMethod);
const tenantId = useAppSelector(selectAzureTenantId);
const subscriptionId = useAppSelector(selectAzureSubscriptionId);
const resourceGroup = useAppSelector(selectAzureResourceGroup);
return (
<Form>

View file

@ -25,9 +25,9 @@ export type GcpAccountType =
const Gcp = () => {
const dispatch = useAppDispatch();
const accountType = useAppSelector((state) => selectGcpAccountType(state));
const shareMethod = useAppSelector((state) => selectGcpShareMethod(state));
const gcpEmail = useAppSelector((state) => selectGcpEmail(state));
const accountType = useAppSelector(selectGcpAccountType);
const shareMethod = useAppSelector(selectGcpShareMethod);
const gcpEmail = useAppSelector(selectGcpEmail);
return (
<Form>

View file

@ -15,8 +15,8 @@ import { releaseToVersion } from '../../../Utilities/releaseToVersion.js';
* repositories that are no longer available in the Repositories service.
*/
export const useCheckRepositoriesAvailability = () => {
const arch = useAppSelector((state) => selectArchitecture(state));
const distribution = useAppSelector((state) => selectDistribution(state));
const arch = useAppSelector(selectArchitecture);
const distribution = useAppSelector(selectDistribution);
const version = releaseToVersion(distribution);
// There needs to be two requests because the default limit for the
@ -57,9 +57,7 @@ export const useCheckRepositoriesAvailability = () => {
return { ...firstRequest };
}, [firstRequest, followupRequest]);
const customRepositories = useAppSelector((state) =>
selectCustomRepositories(state)
);
const customRepositories = useAppSelector(selectCustomRepositories);
// customRepositories existing === we came here from Recreate
if (isSuccess && customRepositories) {
// Transform the fresh repos array into a Set to access its elements in O(1)