Skip to content

Commit

Permalink
Remove redundant void calls (#1128)
Browse files Browse the repository at this point in the history
## Done

solved two issues surfaced by the TICS check:

- remove redundant void calls
- fix copy paste error in permissions
  • Loading branch information
edlerd authored Feb 27, 2025
2 parents 3fd8cb2 + ec8afc5 commit 83f1786
Show file tree
Hide file tree
Showing 518 changed files with 2,791 additions and 2,165 deletions.
8 changes: 6 additions & 2 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -60,11 +60,15 @@ export default [{
"linebreak-style": ["error", "unix"],
semi: ["error", "always"],
"object-curly-spacing": ["error", "always"],

"@typescript-eslint/no-unused-vars": ["error", {
argsIgnorePattern: "^_",
}],

"react/react-in-jsx-scope": "off",
"@typescript-eslint/no-floating-promises": "off",
"@typescript-eslint/consistent-type-imports": "error",
"@typescript-eslint/no-confusing-void-expression": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/no-inferrable-types": "error",
"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
},
}];
85 changes: 50 additions & 35 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { FC, Suspense } from "react";
import type { FC } from "react";
import { Suspense } from "react";
import { Navigate, Route, Routes } from "react-router-dom";
import Loader from "components/Loader";
import ProjectRedirect from "pages/projects/ProjectRedirect";
Expand All @@ -12,57 +13,71 @@ import { logout } from "util/helpers";
import NoProject from "components/NoProject";
import lazy from "util/lazyWithRetry";

const CertificateAdd = lazy(() => import("pages/login/CertificateAdd"));
const CertificateAdd = lazy(async () => import("pages/login/CertificateAdd"));
const CertificateGenerate = lazy(
() => import("pages/login/CertificateGenerate"),
async () => import("pages/login/CertificateGenerate"),
);
const ClusterList = lazy(() => import("pages/cluster/ClusterList"));
const ClusterList = lazy(async () => import("pages/cluster/ClusterList"));
const CreateClusterGroup = lazy(
() => import("pages/cluster/CreateClusterGroup"),
async () => import("pages/cluster/CreateClusterGroup"),
);
const CreateInstance = lazy(() => import("pages/instances/CreateInstance"));
const CreateNetwork = lazy(() => import("pages/networks/CreateNetwork"));
const CreateInstance = lazy(
async () => import("pages/instances/CreateInstance"),
);
const CreateNetwork = lazy(async () => import("pages/networks/CreateNetwork"));
const CreateNetworkForward = lazy(
() => import("pages/networks/CreateNetworkForward"),
async () => import("pages/networks/CreateNetworkForward"),
);
const CreateProfile = lazy(async () => import("pages/profiles/CreateProfile"));
const CreateProject = lazy(async () => import("pages/projects/CreateProject"));
const CreateStoragePool = lazy(
async () => import("pages/storage/CreateStoragePool"),
);
const EditClusterGroup = lazy(
async () => import("pages/cluster/EditClusterGroup"),
);
const CreateProfile = lazy(() => import("pages/profiles/CreateProfile"));
const CreateProject = lazy(() => import("pages/projects/CreateProject"));
const CreateStoragePool = lazy(() => import("pages/storage/CreateStoragePool"));
const EditClusterGroup = lazy(() => import("pages/cluster/EditClusterGroup"));
const EditNetworkForward = lazy(
() => import("pages/networks/EditNetworkForward"),
async () => import("pages/networks/EditNetworkForward"),
);
const ImageList = lazy(async () => import("pages/images/ImageList"));
const InstanceDetail = lazy(
async () => import("pages/instances/InstanceDetail"),
);
const InstanceList = lazy(async () => import("pages/instances/InstanceList"));
const Login = lazy(async () => import("pages/login/Login"));
const NetworkDetail = lazy(async () => import("pages/networks/NetworkDetail"));
const NetworkList = lazy(async () => import("./pages/networks/NetworkList"));
const OperationList = lazy(
async () => import("pages/operations/OperationList"),
);
const ProfileDetail = lazy(async () => import("pages/profiles/ProfileDetail"));
const ProfileList = lazy(async () => import("pages/profiles/ProfileList"));
const ProjectConfig = lazy(
async () => import("pages/projects/ProjectConfiguration"),
);
const ProtectedRoute = lazy(async () => import("components/ProtectedRoute"));
const Settings = lazy(async () => import("pages/settings/Settings"));
const StoragePools = lazy(async () => import("pages/storage/StoragePools"));
const StorageVolumes = lazy(async () => import("pages/storage/StorageVolumes"));
const CustomIsoList = lazy(async () => import("pages/storage/CustomIsoList"));
const StoragePoolDetail = lazy(
async () => import("pages/storage/StoragePoolDetail"),
);
const ImageList = lazy(() => import("pages/images/ImageList"));
const InstanceDetail = lazy(() => import("pages/instances/InstanceDetail"));
const InstanceList = lazy(() => import("pages/instances/InstanceList"));
const Login = lazy(() => import("pages/login/Login"));
const NetworkDetail = lazy(() => import("pages/networks/NetworkDetail"));
const NetworkList = lazy(() => import("./pages/networks/NetworkList"));
const OperationList = lazy(() => import("pages/operations/OperationList"));
const ProfileDetail = lazy(() => import("pages/profiles/ProfileDetail"));
const ProfileList = lazy(() => import("pages/profiles/ProfileList"));
const ProjectConfig = lazy(() => import("pages/projects/ProjectConfiguration"));
const ProtectedRoute = lazy(() => import("components/ProtectedRoute"));
const Settings = lazy(() => import("pages/settings/Settings"));
const StoragePools = lazy(() => import("pages/storage/StoragePools"));
const StorageVolumes = lazy(() => import("pages/storage/StorageVolumes"));
const CustomIsoList = lazy(() => import("pages/storage/CustomIsoList"));
const StoragePoolDetail = lazy(() => import("pages/storage/StoragePoolDetail"));
const CreateStorageVolume = lazy(
() => import("pages/storage/forms/CreateStorageVolume"),
async () => import("pages/storage/forms/CreateStorageVolume"),
);
const StorageVolumeDetail = lazy(
() => import("pages/storage/StorageVolumeDetail"),
async () => import("pages/storage/StorageVolumeDetail"),
);
const WarningList = lazy(() => import("pages/warnings/WarningList"));
const WarningList = lazy(async () => import("pages/warnings/WarningList"));
const PermissionIdentities = lazy(
() => import("pages/permissions/PermissionIdentities"),
async () => import("pages/permissions/PermissionIdentities"),
);
const PermissionGroups = lazy(
() => import("pages/permissions/PermissionGroups"),
async () => import("pages/permissions/PermissionGroups"),
);
const PermissionIdpGroups = lazy(
() => import("pages/permissions/PermissionIdpGroups"),
async () => import("pages/permissions/PermissionIdpGroups"),
);

const HOME_REDIRECT_PATHS = ["/", "/ui", "/ui/project"];
Expand Down
9 changes: 3 additions & 6 deletions src/Root.tsx
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
import { FC } from "react";
import type { FC } from "react";
import Navigation from "components/Navigation";
import {
Application,
QueuedNotification,
SkipLink,
} from "@canonical/react-components";
import type { QueuedNotification } from "@canonical/react-components";
import { Application, SkipLink } from "@canonical/react-components";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { AuthProvider } from "context/auth";
import { EventQueueProvider } from "context/eventQueue";
Expand Down
18 changes: 10 additions & 8 deletions src/api/auth-groups.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@ import { withEntitlementsQuery } from "util/entitlements/api";

export const groupEntitlements = ["can_delete", "can_edit"];

export const fetchGroups = (
export const fetchGroups = async (
isFineGrained: boolean | null,
): Promise<LxdGroup[]> => {
const entitlements = withEntitlementsQuery(isFineGrained, groupEntitlements);
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/groups?recursion=1${entitlements}`)
.then(handleResponse)
.then((data: LxdApiResponse<LxdGroup[]>) => resolve(data.metadata))
.then((data: LxdApiResponse<LxdGroup[]>) => {
resolve(data.metadata);
})
.catch(reject);
});
};

export const createGroup = (group: Partial<LxdGroup>): Promise<void> => {
export const createGroup = async (group: Partial<LxdGroup>): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/groups`, {
method: "POST",
Expand All @@ -29,7 +31,7 @@ export const createGroup = (group: Partial<LxdGroup>): Promise<void> => {
});
};

export const deleteGroup = (group: string): Promise<void> => {
export const deleteGroup = async (group: string): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/groups/${group}`, {
method: "DELETE",
Expand All @@ -40,16 +42,16 @@ export const deleteGroup = (group: string): Promise<void> => {
});
};

export const deleteGroups = (groups: string[]): Promise<void> => {
export const deleteGroups = async (groups: string[]): Promise<void> => {
return new Promise((resolve, reject) => {
Promise.allSettled(groups.map((group) => deleteGroup(group)))
Promise.allSettled(groups.map(async (group) => deleteGroup(group)))
.then(handleSettledResult)
.then(resolve)
.catch(reject);
});
};

export const updateGroup = (group: Partial<LxdGroup>): Promise<void> => {
export const updateGroup = async (group: Partial<LxdGroup>): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/groups/${group.name}`, {
method: "PUT",
Expand All @@ -61,7 +63,7 @@ export const updateGroup = (group: Partial<LxdGroup>): Promise<void> => {
});
};

export const renameGroup = (
export const renameGroup = async (
oldName: string,
newName: string,
): Promise<void> => {
Expand Down
44 changes: 28 additions & 16 deletions src/api/auth-identities.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { withEntitlementsQuery } from "util/entitlements/api";

export const identitiesEntitlements = ["can_delete", "can_edit"];

export const fetchIdentities = (
export const fetchIdentities = async (
isFineGrained: boolean | null,
): Promise<LxdIdentity[]> => {
const entitlements = withEntitlementsQuery(
Expand All @@ -15,21 +15,25 @@ export const fetchIdentities = (
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identities?recursion=1${entitlements}`)
.then(handleResponse)
.then((data: LxdApiResponse<LxdIdentity[]>) => resolve(data.metadata))
.then((data: LxdApiResponse<LxdIdentity[]>) => {
resolve(data.metadata);
})
.catch(reject);
});
};

export const fetchCurrentIdentity = (): Promise<LxdIdentity> => {
export const fetchCurrentIdentity = async (): Promise<LxdIdentity> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identities/current?recursion=1`)
.then(handleResponse)
.then((data: LxdApiResponse<LxdIdentity>) => resolve(data.metadata))
.then((data: LxdApiResponse<LxdIdentity>) => {
resolve(data.metadata);
})
.catch(reject);
});
};

export const fetchIdentity = (
export const fetchIdentity = async (
id: string,
authMethod: string,
isFineGrained: boolean | null,
Expand All @@ -41,12 +45,14 @@ export const fetchIdentity = (
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identities/${authMethod}/${id}?recursion=1${entitlements}`)
.then(handleResponse)
.then((data: LxdApiResponse<LxdIdentity>) => resolve(data.metadata))
.then((data: LxdApiResponse<LxdIdentity>) => {
resolve(data.metadata);
})
.catch(reject);
});
};

export const updateIdentity = (identity: Partial<LxdIdentity>) => {
export const updateIdentity = async (identity: Partial<LxdIdentity>) => {
return new Promise((resolve, reject) => {
fetch(
`/1.0/auth/identities/${identity.authentication_method}/${identity.id}`,
Expand All @@ -61,18 +67,20 @@ export const updateIdentity = (identity: Partial<LxdIdentity>) => {
});
};

export const updateIdentities = (
export const updateIdentities = async (
identities: Partial<LxdIdentity>[],
): Promise<void> => {
return new Promise((resolve, reject) => {
Promise.allSettled(identities.map((identity) => updateIdentity(identity)))
Promise.allSettled(
identities.map(async (identity) => updateIdentity(identity)),
)
.then(handleSettledResult)
.then(resolve)
.catch(reject);
});
};

export const deleteIdentity = (identity: LxdIdentity) => {
export const deleteIdentity = async (identity: LxdIdentity) => {
return new Promise((resolve, reject) => {
fetch(
`/1.0/auth/identities/${identity.authentication_method}/${identity.id}`,
Expand All @@ -86,16 +94,20 @@ export const deleteIdentity = (identity: LxdIdentity) => {
});
};

export const deleteIdentities = (identities: LxdIdentity[]): Promise<void> => {
export const deleteIdentities = async (
identities: LxdIdentity[],
): Promise<void> => {
return new Promise((resolve, reject) => {
Promise.allSettled(identities.map((identity) => deleteIdentity(identity)))
Promise.allSettled(
identities.map(async (identity) => deleteIdentity(identity)),
)
.then(handleSettledResult)
.then(resolve)
.catch(reject);
});
};

export const createFineGrainedTlsIdentity = (
export const createFineGrainedTlsIdentity = async (
clientName: string,
): Promise<TlsIdentityTokenDetail> => {
return new Promise((resolve, reject) => {
Expand All @@ -107,9 +119,9 @@ export const createFineGrainedTlsIdentity = (
}),
})
.then(handleResponse)
.then((data: LxdApiResponse<TlsIdentityTokenDetail>) =>
resolve(data.metadata),
)
.then((data: LxdApiResponse<TlsIdentityTokenDetail>) => {
resolve(data.metadata);
})
.catch(reject);
});
};
20 changes: 12 additions & 8 deletions src/api/auth-idp-groups.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { withEntitlementsQuery } from "util/entitlements/api";

const idpGroupEntitlements = ["can_delete", "can_edit"];

export const fetchIdpGroups = (
export const fetchIdpGroups = async (
isFineGrained: boolean | null,
): Promise<IdpGroup[]> => {
const entitlements = withEntitlementsQuery(
Expand All @@ -15,12 +15,16 @@ export const fetchIdpGroups = (
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identity-provider-groups?recursion=1${entitlements}`)
.then(handleResponse)
.then((data: LxdApiResponse<IdpGroup[]>) => resolve(data.metadata))
.then((data: LxdApiResponse<IdpGroup[]>) => {
resolve(data.metadata);
})
.catch(reject);
});
};

export const createIdpGroup = (group: Partial<IdpGroup>): Promise<void> => {
export const createIdpGroup = async (
group: Partial<IdpGroup>,
): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identity-provider-groups`, {
method: "POST",
Expand All @@ -32,7 +36,7 @@ export const createIdpGroup = (group: Partial<IdpGroup>): Promise<void> => {
});
};

export const updateIdpGroup = (group: IdpGroup): Promise<void> => {
export const updateIdpGroup = async (group: IdpGroup): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identity-provider-groups/${group.name}`, {
method: "PUT",
Expand All @@ -44,7 +48,7 @@ export const updateIdpGroup = (group: IdpGroup): Promise<void> => {
});
};

export const renameIdpGroup = (
export const renameIdpGroup = async (
oldName: string,
newName: string,
): Promise<void> => {
Expand All @@ -61,7 +65,7 @@ export const renameIdpGroup = (
});
};

export const deleteIdpGroup = (group: string): Promise<void> => {
export const deleteIdpGroup = async (group: string): Promise<void> => {
return new Promise((resolve, reject) => {
fetch(`/1.0/auth/identity-provider-groups/${group}`, {
method: "DELETE",
Expand All @@ -72,9 +76,9 @@ export const deleteIdpGroup = (group: string): Promise<void> => {
});
};

export const deleteIdpGroups = (groups: string[]): Promise<void> => {
export const deleteIdpGroups = async (groups: string[]): Promise<void> => {
return new Promise((resolve, reject) => {
Promise.allSettled(groups.map((group) => deleteIdpGroup(group)))
Promise.allSettled(groups.map(async (group) => deleteIdpGroup(group)))
.then(handleSettledResult)
.then(resolve)
.catch(reject);
Expand Down
Loading

0 comments on commit 83f1786

Please sign in to comment.