diff --git a/src/components/AdminPanelLayout/UsersPane.tsx b/src/components/AdminPanelLayout/UsersPane.tsx index 01ec226d..a8809244 100644 --- a/src/components/AdminPanelLayout/UsersPane.tsx +++ b/src/components/AdminPanelLayout/UsersPane.tsx @@ -1,12 +1,11 @@ import {Button, Form, InputGroup, Modal, ModalBody, ModalFooter, Table} from 'react-bootstrap'; import React, {useState} from 'react'; import {Role, User} from '../../types/User'; -import {changeUserRole, getCurrentUserFromServer, getUserList} from '../../api'; +import {changeUserRole, ChangeUserRoleRequest, getCurrentUserFromServer, getUserList} from '../../api'; import {useMount} from '../../hooks/useMount'; import {HorizontallyCenteredSpinner} from '../util/HorizonallyCenteredSpinner'; import {Layout} from '../../pages/Layout/Layout'; import UserListItem from './UserListItem'; -import {ChangeUserRoleRequest} from '../../api'; import {AxiosResponse} from 'axios'; import ModalHeader from 'react-bootstrap/ModalHeader'; import {connect, useDispatch} from 'react-redux'; diff --git a/src/components/ConsoleWindow/ConsolePopout.tsx b/src/components/ConsoleWindow/ConsolePopout.tsx index d8e45fee..78e73cb8 100644 --- a/src/components/ConsoleWindow/ConsolePopout.tsx +++ b/src/components/ConsoleWindow/ConsolePopout.tsx @@ -41,6 +41,7 @@ class ConsolePopout extends Component { this.externalWindow!.document.title = 'VM Popout'; + // Sonarcloud thinks this line is a security issue this.externalWindow!.addEventListener('beforeunload', (ev: BeforeUnloadEvent) => { if(!this.shouldAsk) { return; diff --git a/src/components/VmTemplateModal/VmTemplateUploadSchema.ts b/src/components/VmTemplateModal/VmTemplateUploadSchema.ts index 80ef47f2..98f1dc4a 100644 --- a/src/components/VmTemplateModal/VmTemplateUploadSchema.ts +++ b/src/components/VmTemplateModal/VmTemplateUploadSchema.ts @@ -1,4 +1,4 @@ -import {object, ObjectSchema, ObjectSchemaDefinition, string} from 'yup'; +import {object, ObjectSchemaDefinition, string} from 'yup'; import {cast} from '../../util'; export interface NamedUpload { @@ -16,7 +16,7 @@ export interface UploadByUrlForm extends NamedUpload { const NameSchema: ObjectSchemaDefinition = {name: string().required('Required').min(3, 'Must have at least 3 characters')}; const UploadFormSchema = object({ ...NameSchema, - file: object().nullable() as ObjectSchema + file: object().nullable().required('File is required') }); export const isUploadForm = (val: NamedUpload): val is UploadForm => val['file'] !== undefined; diff --git a/src/pages/Contact/ContactUs.tsx b/src/pages/Contact/ContactUs.tsx index fcf751ed..7ecc435b 100644 --- a/src/pages/Contact/ContactUs.tsx +++ b/src/pages/Contact/ContactUs.tsx @@ -23,9 +23,8 @@ export default function ContactUs() { formData.append('message', form.message); const files = form.screenshots; if (files !== null) { - // tslint:disable-next-line:prefer-for-of - for (let i = 0; i < files.length; i++) { - formData.append('screenshots', files[i]); + for (const file of Array.from(files)) { + formData.append('screenshots', file); } } await submitContactRequest(formData); diff --git a/src/pages/LoginRegisterPage/RegisterFormSchema.ts b/src/pages/LoginRegisterPage/RegisterFormSchema.ts index 78fd0cb1..fdc2e398 100644 --- a/src/pages/LoginRegisterPage/RegisterFormSchema.ts +++ b/src/pages/LoginRegisterPage/RegisterFormSchema.ts @@ -29,6 +29,6 @@ export const RegisterFormSchema: ObjectSchema = object({ password: passwordValidator, confirmPass: makeConfirmPasswordValidator('password'), gradYear: string(), - phoneNumber: string().matches(/[0-9]{3}-[0-9]{3}-[0-9]{4}/, 'Please type in format of XXX-XXX-XXXX'), + phoneNumber: string().matches(/\d{3}-\d{3}-\d{4}/, 'Please type in format of XXX-XXX-XXXX'), acceptedTerms: bool().test('accepted-terms', 'You must agree before submitting.', (value?: boolean) => Boolean(value)) }); diff --git a/src/redux/reducers/browser.ts b/src/redux/reducers/browser.ts index ccc643b1..75198ea8 100644 --- a/src/redux/reducers/browser.ts +++ b/src/redux/reducers/browser.ts @@ -3,7 +3,6 @@ import {BrowserTypes} from '../types/actionTypes'; import {WindowState} from '../types/BrowserState'; import Action from '../types/redux'; -// Code smell on this function signature function windowSize(state: WindowState = {height: NaN, width: NaN}, action: Action) { if (action.type === BrowserTypes.SCREEN_RESIZE) { return { diff --git a/src/redux/store/index.ts b/src/redux/store/index.ts index b721b74d..bd68f862 100644 --- a/src/redux/store/index.ts +++ b/src/redux/store/index.ts @@ -9,12 +9,10 @@ import {persistGlobalStore, persistRootReducer} from './persistance'; const configureStore = (initialState?: DeepPartial, onReady?: () => void) => { const root = persistRootReducer(combineReducers(rootReducer(history))); -// @ts-ignore const composeEnhancers: typeof compose = (typeof window !== 'undefined' && window['__REDUX_DEVTOOLS_EXTENSION_COMPOSE__']) || compose; const storeInstance = createStore( root, initialState, - // Code smell on this composeEnhancers(applyMiddleware(thunk as ThunkMiddleware, routerMiddleware(history))) ); const persistorInstance = persistGlobalStore(storeInstance, onReady); @@ -22,4 +20,5 @@ const configureStore = (initialState?: DeepPartial, onReady?: () => vo return { store: storeInstance, persistor: persistorInstance, appDispatch: storeInstance.dispatch}; }; +// @ts-ignore export const {store, persistor, appDispatch } = configureStore();