From 5e40afa8ba28fc5cdee813dfca53b84ee0ee65cd Mon Sep 17 00:00:00 2001 From: RachelElysia <71795832+RachelElysia@users.noreply.github.com> Date: Thu, 10 Jun 2021 10:00:03 -0400 Subject: [PATCH] Clean up linter warnings (#1026) * Fix 25+ linter warnings Co-authored by: Sarah Gillespie @gillespi314 --- .../AuthAnyMaintainerGlobalAdminRoutes.tsx | 2 +- .../components/BasicTierRoutes/BasicTierRoutes.tsx | 4 +--- .../TableContainer/DataTable/LinkCell/LinkCell.tsx | 1 - .../components/TableContainer/TableContainerUtils.ts | 2 +- .../forms/validators/validate_presence/index.ts | 2 +- frontend/components/modals/Modal/Modal.tsx | 2 +- frontend/components/packs/PacksList/Row/Row.jsx | 4 ---- .../QueryDetailsSidePanel/QueryDetailsSidePanel.jsx | 4 +--- .../side_panels/SiteNavHeader/SiteNavHeader.jsx | 5 ----- frontend/fleet/endpoints.ts | 4 ++-- frontend/fleet/entities/invites.tests.js | 2 -- frontend/interfaces/team.ts | 4 ++-- .../AgentOptionsPage/AgentOptionsPage.tsx | 3 ++- .../TeamDetailsWrapper/MembersPagePage/MembersPage.tsx | 4 ++-- .../admin/UserManagementPage/UserManagementPage.jsx | 1 + .../UserManagementPage/UserManagementPage.tests.jsx | 10 ---------- .../components/DeleteUserForm/DeleteUserForm.tsx | 2 +- .../components/EditUserModal/EditUserModal.tsx | 2 +- .../components/UserForm/UserForm.tsx | 1 - .../SelectQueryModal/SelectQueryModal.jsx | 1 + .../queries/ManageQueriesPage/ManageQueriesPage.jsx | 2 ++ frontend/pages/queries/QueryPage/QueryPage.jsx | 1 - frontend/pages/queries/QueryPage/QueryPage.tests.jsx | 1 - 23 files changed, 20 insertions(+), 44 deletions(-) diff --git a/frontend/components/AuthAnyMaintainerGlobalAdminRoutes/AuthAnyMaintainerGlobalAdminRoutes.tsx b/frontend/components/AuthAnyMaintainerGlobalAdminRoutes/AuthAnyMaintainerGlobalAdminRoutes.tsx index 81685f62cf..bbfeff0ef4 100644 --- a/frontend/components/AuthAnyMaintainerGlobalAdminRoutes/AuthAnyMaintainerGlobalAdminRoutes.tsx +++ b/frontend/components/AuthAnyMaintainerGlobalAdminRoutes/AuthAnyMaintainerGlobalAdminRoutes.tsx @@ -25,7 +25,7 @@ const { HOME } = paths; */ const AuthAnyMaintainerGlobalAdminRoutes = ( props: IAuthAnyMaintainerGlobalAdminRoutesProps -) => { +): JSX.Element | null => { const { children } = props; const dispatch = useDispatch(); diff --git a/frontend/components/BasicTierRoutes/BasicTierRoutes.tsx b/frontend/components/BasicTierRoutes/BasicTierRoutes.tsx index 405fa02119..f780f64c99 100644 --- a/frontend/components/BasicTierRoutes/BasicTierRoutes.tsx +++ b/frontend/components/BasicTierRoutes/BasicTierRoutes.tsx @@ -5,8 +5,6 @@ import { push } from "react-router-redux"; import { IConfig } from "interfaces/config"; import permissionUtils from "utilities/permissions"; import paths from "router/paths"; -// @ts-ignore -import { renderFlash } from "redux/nodes/notifications/actions"; interface IBasicTierRoutes { children: JSX.Element; @@ -20,7 +18,7 @@ interface IRootState { const { FLEET_403 } = paths; -const BasicTierRoutes = (props: IBasicTierRoutes) => { +const BasicTierRoutes = (props: IBasicTierRoutes): JSX.Element | null => { const { children } = props; const dispatch = useDispatch(); diff --git a/frontend/components/TableContainer/DataTable/LinkCell/LinkCell.tsx b/frontend/components/TableContainer/DataTable/LinkCell/LinkCell.tsx index c25295fac3..9442cc7e50 100644 --- a/frontend/components/TableContainer/DataTable/LinkCell/LinkCell.tsx +++ b/frontend/components/TableContainer/DataTable/LinkCell/LinkCell.tsx @@ -2,7 +2,6 @@ import React from "react"; import { useDispatch } from "react-redux"; import { push } from "react-router-redux"; -import helpers from "fleet/helpers"; import Button from "components/buttons/Button/Button"; interface ILinkCellProps { diff --git a/frontend/components/TableContainer/TableContainerUtils.ts b/frontend/components/TableContainer/TableContainerUtils.ts index a99fbe3a92..9ef604dcbe 100644 --- a/frontend/components/TableContainer/TableContainerUtils.ts +++ b/frontend/components/TableContainer/TableContainerUtils.ts @@ -5,7 +5,7 @@ const generateResultsCountText = ( pageIndex: number, pageSize: number, resultsCount: number -) => { +): string => { if (resultsCount === 0) return `No ${name}`; if (pageSize === resultsCount) return `${pageSize}+ ${name}`; diff --git a/frontend/components/forms/validators/validate_presence/index.ts b/frontend/components/forms/validators/validate_presence/index.ts index 1a56e4081e..9f422bef19 100644 --- a/frontend/components/forms/validators/validate_presence/index.ts +++ b/frontend/components/forms/validators/validate_presence/index.ts @@ -1,3 +1,3 @@ -export default (actual: any) => { +export default (actual: any): boolean => { return !!actual; }; diff --git a/frontend/components/modals/Modal/Modal.tsx b/frontend/components/modals/Modal/Modal.tsx index eab0843309..bc56fdec04 100644 --- a/frontend/components/modals/Modal/Modal.tsx +++ b/frontend/components/modals/Modal/Modal.tsx @@ -11,7 +11,7 @@ interface IModalProps { } class Modal extends Component { - render() { + render(): JSX.Element { const { children, className, onExit, title } = this.props; const modalContainerClassName = classnames( `${baseClass}__modal_container`, diff --git a/frontend/components/packs/PacksList/Row/Row.jsx b/frontend/components/packs/PacksList/Row/Row.jsx index b9a33b3001..6e1ce787a5 100644 --- a/frontend/components/packs/PacksList/Row/Row.jsx +++ b/frontend/components/packs/PacksList/Row/Row.jsx @@ -44,10 +44,6 @@ class Row extends Component { renderStatusData = () => { const { disabled } = this.props.pack; - const iconClassName = classNames(`${baseClass}__status-icon`, { - [`${baseClass}__status-icon--enabled`]: !disabled, - [`${baseClass}__status-icon--disabled`]: disabled, - }); if (disabled) { return ( diff --git a/frontend/components/side_panels/QueryDetailsSidePanel/QueryDetailsSidePanel.jsx b/frontend/components/side_panels/QueryDetailsSidePanel/QueryDetailsSidePanel.jsx index 6186cf71d8..f7f6098964 100644 --- a/frontend/components/side_panels/QueryDetailsSidePanel/QueryDetailsSidePanel.jsx +++ b/frontend/components/side_panels/QueryDetailsSidePanel/QueryDetailsSidePanel.jsx @@ -77,9 +77,7 @@ class QueryDetailsSidePanel extends Component { ) { return "Run query"; } - if (permissionUtils.isOnlyObserver(currentUser) && !observer_can_run) { - return "Show query"; - } + return "Show query"; }; return ( diff --git a/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx b/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx index 8adf87287e..cdf09790e9 100644 --- a/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx +++ b/frontend/components/side_panels/SiteNavHeader/SiteNavHeader.jsx @@ -2,22 +2,17 @@ import React, { Component } from "react"; import configInterface from "interfaces/config"; import OrgLogoIcon from "components/icons/OrgLogoIcon"; -import userInterface from "interfaces/user"; class SiteNavHeader extends Component { static propTypes = { config: configInterface, - user: userInterface, }; render() { const { config: { org_logo_url: orgLogoURL }, - user, } = this.props; - const { username } = user; - const headerBaseClass = "site-nav-header"; return ( diff --git a/frontend/fleet/endpoints.ts b/frontend/fleet/endpoints.ts index 5c240d9e2b..3fce31d50f 100644 --- a/frontend/fleet/endpoints.ts +++ b/frontend/fleet/endpoints.ts @@ -45,10 +45,10 @@ export default { TEAMS_MEMBERS: (teamId: number): string => { return `/v1/fleet/teams/${teamId}/users`; }, - TEAMS_TRANSFER_HOSTS: (teamId: number) => { + TEAMS_TRANSFER_HOSTS: (teamId: number): string => { return `/v1/fleet/teams/${teamId}/hosts`; }, - TEAMS_ENROLL_SECRETS: (teamId: number) => { + TEAMS_ENROLL_SECRETS: (teamId: number): string => { return `/v1/fleet/teams/${teamId}/secrets`; }, TEAMS_AGENT_OPTIONS: (teamId: number): string => { diff --git a/frontend/fleet/entities/invites.tests.js b/frontend/fleet/entities/invites.tests.js index ecf0eda065..f1f8bfc4cc 100644 --- a/frontend/fleet/entities/invites.tests.js +++ b/frontend/fleet/entities/invites.tests.js @@ -1,5 +1,3 @@ -import nock from "nock"; - import Fleet from "fleet"; import mocks from "test/mocks"; import { userStub } from "test/stubs"; diff --git a/frontend/interfaces/team.ts b/frontend/interfaces/team.ts index 48a130006a..5de2f5a827 100644 --- a/frontend/interfaces/team.ts +++ b/frontend/interfaces/team.ts @@ -7,7 +7,7 @@ export default PropTypes.shape({ hosts: PropTypes.number, members: PropTypes.number, role: PropTypes.string, - agent_options: PropTypes.string, + agent_options: PropTypes.object, // eslint-disable-line react/forbid-prop-types }); /** @@ -21,7 +21,7 @@ export interface ITeam { user_count: number; // role value is included when the team is in the context of a user. role?: string; - agent_options?: string; + agent_options?: any; } /** diff --git a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx index 3c90cc56f7..3da09c3c04 100644 --- a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx +++ b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/AgentOptionsPage/AgentOptionsPage.tsx @@ -45,7 +45,7 @@ const AgentOptionsPage = (props: IAgentOptionsPageProps): JSX.Element => { osquery_options: yaml.dump(team.agent_options), }; - const onSaveOsqueryOptionsFormSubmit = (updatedForm: any) => { + const onSaveOsqueryOptionsFormSubmit = (updatedForm: any): void | false => { const { error } = validateYaml(updatedForm.osquery_options); if (error) { dispatch(renderFlash("error", error.reason)); @@ -60,6 +60,7 @@ const AgentOptionsPage = (props: IAgentOptionsPageProps): JSX.Element => { dispatch(renderFlash("error", errors.stack)); }); }; + return (

diff --git a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/MembersPagePage/MembersPage.tsx b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/MembersPagePage/MembersPage.tsx index a3d7062ec0..b8755785d4 100644 --- a/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/MembersPagePage/MembersPage.tsx +++ b/frontend/pages/admin/TeamManagementPage/TeamDetailsWrapper/MembersPagePage/MembersPage.tsx @@ -1,4 +1,4 @@ -import React, { useCallback, useMemo, useState } from "react"; +import React, { useCallback, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; // @ts-ignore import memoize from "memoize-one"; @@ -203,7 +203,7 @@ const MembersPage = (props: IMembersPageProps): JSX.Element => { tableQueryData = { ...queryData, teamId }; fetchUsers(queryData); }, - [fetchUsers] + [fetchUsers, teamId] ); const onActionSelection = (action: string, user: IUser): void => { diff --git a/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx b/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx index 05d24afbef..11e3e431bf 100644 --- a/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx +++ b/frontend/pages/admin/UserManagementPage/UserManagementPage.jsx @@ -252,6 +252,7 @@ export class UserManagementPage extends Component { default: return null; } + return null; }; getUser = (type, id) => { diff --git a/frontend/pages/admin/UserManagementPage/UserManagementPage.tests.jsx b/frontend/pages/admin/UserManagementPage/UserManagementPage.tests.jsx index b1de2fb49b..3ee54bf26c 100644 --- a/frontend/pages/admin/UserManagementPage/UserManagementPage.tests.jsx +++ b/frontend/pages/admin/UserManagementPage/UserManagementPage.tests.jsx @@ -1,4 +1,3 @@ -import React from "react"; import { mount } from "enzyme"; import { connectedComponent, reduxMockStore } from "test/helpers"; @@ -15,15 +14,6 @@ const currentUser = { teams: [], global_role: "admin", }; -const invitedUser = { - email: "test+4@example.com", - global_role: "observer", - id: 6, - invited_by: 1, - name: "test 4", - sso_enabled: false, - teams: [], -}; const store = { app: { config: { diff --git a/frontend/pages/admin/UserManagementPage/components/DeleteUserForm/DeleteUserForm.tsx b/frontend/pages/admin/UserManagementPage/components/DeleteUserForm/DeleteUserForm.tsx index c907968ce1..9c93d016c5 100644 --- a/frontend/pages/admin/UserManagementPage/components/DeleteUserForm/DeleteUserForm.tsx +++ b/frontend/pages/admin/UserManagementPage/components/DeleteUserForm/DeleteUserForm.tsx @@ -9,7 +9,7 @@ interface IDeleteUserForm { onCancel: () => void; } -const DeleteUserForm = (props: IDeleteUserForm) => { +const DeleteUserForm = (props: IDeleteUserForm): JSX.Element => { const { name, onDelete, onCancel } = props; return ( diff --git a/frontend/pages/admin/UserManagementPage/components/EditUserModal/EditUserModal.tsx b/frontend/pages/admin/UserManagementPage/components/EditUserModal/EditUserModal.tsx index 487ca7ac96..47b588c62b 100644 --- a/frontend/pages/admin/UserManagementPage/components/EditUserModal/EditUserModal.tsx +++ b/frontend/pages/admin/UserManagementPage/components/EditUserModal/EditUserModal.tsx @@ -20,7 +20,7 @@ interface IEditUserModalProps { const baseClass = "edit-user-modal"; -const EditUserModal = (props: IEditUserModalProps) => { +const EditUserModal = (props: IEditUserModalProps): JSX.Element => { const { onCancel, onSubmit, diff --git a/frontend/pages/admin/UserManagementPage/components/UserForm/UserForm.tsx b/frontend/pages/admin/UserManagementPage/components/UserForm/UserForm.tsx index 8ab7f191e6..67893647ac 100644 --- a/frontend/pages/admin/UserManagementPage/components/UserForm/UserForm.tsx +++ b/frontend/pages/admin/UserManagementPage/components/UserForm/UserForm.tsx @@ -1,4 +1,3 @@ -import { create } from "domain"; import React, { Component, FormEvent } from "react"; import { ITeam } from "interfaces/team"; diff --git a/frontend/pages/hosts/HostDetailsPage/SelectQueryModal/SelectQueryModal.jsx b/frontend/pages/hosts/HostDetailsPage/SelectQueryModal/SelectQueryModal.jsx index 78f2cb4ed7..199379c9a8 100644 --- a/frontend/pages/hosts/HostDetailsPage/SelectQueryModal/SelectQueryModal.jsx +++ b/frontend/pages/hosts/HostDetailsPage/SelectQueryModal/SelectQueryModal.jsx @@ -179,6 +179,7 @@ const SelectQueryModal = (props) => {

); } + return null; }; return ( diff --git a/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.jsx b/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.jsx index 1d8a4c5112..76c438901f 100644 --- a/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.jsx +++ b/frontend/pages/queries/ManageQueriesPage/ManageQueriesPage.jsx @@ -215,6 +215,8 @@ export class ManageQueriesPage extends Component { ); } + + return null; }; renderModal = () => { diff --git a/frontend/pages/queries/QueryPage/QueryPage.jsx b/frontend/pages/queries/QueryPage/QueryPage.jsx index 9af1f8e996..45b40b54a5 100644 --- a/frontend/pages/queries/QueryPage/QueryPage.jsx +++ b/frontend/pages/queries/QueryPage/QueryPage.jsx @@ -400,7 +400,6 @@ export class QueryPage extends Component { window, } = global; const { queryResultsToggle, queryPosition } = this.state; - const { dispatch } = this.props; window.scrollTo(0, 0); const { parentNode: { parentNode: parent }, diff --git a/frontend/pages/queries/QueryPage/QueryPage.tests.jsx b/frontend/pages/queries/QueryPage/QueryPage.tests.jsx index adbbd53fda..410eb4fece 100644 --- a/frontend/pages/queries/QueryPage/QueryPage.tests.jsx +++ b/frontend/pages/queries/QueryPage/QueryPage.tests.jsx @@ -1,7 +1,6 @@ import React from "react"; import FileSave from "file-saver"; import { mount } from "enzyme"; -import nock from "nock"; import { noop } from "lodash"; import convertToCSV from "utilities/convert_to_csv";