Skip to content

Commit 82b9ca9

Browse files
authored
Merge pull request #1240 from isaacphysics/improvement/optimise-imports-nov24
Remove unused imports detected by ESLint
2 parents 88d0cd7 + 2c822ce commit 82b9ca9

34 files changed

+167
-191
lines changed

src/app/components/content/IsaacContent.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, {lazy, useRef} from "react";
1+
import React, {lazy} from "react";
22
import {AnvilApp} from "./AnvilApp";
33
import {IsaacContentValueOrChildren} from "./IsaacContentValueOrChildren";
44
import {IsaacQuestion} from "./IsaacQuestion";
@@ -21,8 +21,8 @@ import {isQuestion} from "../../services";
2121
import {IsaacCodeTabs} from "./IsaacCodeTabs";
2222
import {IsaacInteractiveCodeSnippet} from "./IsaacInteractiveCodeSnippet";
2323
import {IsaacCallout} from "./IsaacCallout";
24-
import IsaacInlineRegion from "./IsaacInlineRegion";
2524
import InlineContextProvider from "../elements/InlineContextProvider";
25+
2626
const IsaacCodeSnippet = lazy(() => import("./IsaacCodeSnippet"));
2727

2828
const classBasedLayouts = {

src/app/components/content/IsaacLLMFreeTextQuestion.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React from "react";
22
import {IsaacContentValueOrChildren} from "./IsaacContentValueOrChildren";
33
import {IsaacLLMFreeTextQuestionDTO, LLMFreeTextChoiceDTO} from "../../../IsaacApiTypes";
4-
import {Alert, FormGroup, Input} from "reactstrap";
4+
import {FormGroup, Input} from "reactstrap";
55
import {IsaacQuestionProps, ValidatedChoice} from "../../../IsaacAppTypes";
66
import {useCurrentQuestionAttempt} from "../../services";
7-
import { useCanAttemptQuestionTypeQuery } from "../../state";
7+
import {useCanAttemptQuestionTypeQuery} from "../../state";
88

99
interface Limit {
1010
exceeded: boolean;
@@ -98,4 +98,4 @@ const IsaacLLMFreeTextQuestion = ({doc, questionId, readonly}: IsaacQuestionProp
9898
</div>
9999
);
100100
};
101-
export default IsaacLLMFreeTextQuestion;
101+
export default IsaacLLMFreeTextQuestion;

src/app/components/content/IsaacNumericQuestion.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React, {FormEvent, useMemo, useState} from "react";
22
import {AppState, useAppSelector, useGetConstantUnitsQuery} from "../../state";
3-
import Rand from 'rand-seed';
43
import {IsaacContentValueOrChildren} from "./IsaacContentValueOrChildren";
54
import {IsaacNumericQuestionDTO, QuantityDTO, QuantityValidationResponseDTO} from "../../../IsaacApiTypes";
65
import {
@@ -22,7 +21,7 @@ import {IsaacQuestionProps} from "../../../IsaacAppTypes";
2221
import {Markup} from "../elements/markup";
2322
import classNames from "classnames";
2423
import QuestionInputValidation from "../elements/inputs/QuestionInputValidation";
25-
import { selectUnits, wrapUnitForSelect } from "../../services/numericUnits";
24+
import {selectUnits, wrapUnitForSelect} from "../../services/numericUnits";
2625

2726
export const numericInputValidator = (input: string) => {
2827
const regexStr = "[^ 0-9EXex(){},.+*/\\^×÷-]";

src/app/components/content/IsaacSymbolicLogicQuestion.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import {IsaacContentValueOrChildren} from "./IsaacContentValueOrChildren";
44
import {IsaacSymbolicLogicQuestionDTO, LogicFormulaDTO} from "../../../IsaacApiTypes";
55
import katex from "katex";
66
import {
7-
ifKeyIsEnter, isAda,
7+
ifKeyIsEnter,
88
isDefined,
9-
isStaff,
109
jsonHelper,
11-
sanitiseInequalityState, siteSpecific,
10+
sanitiseInequalityState,
11+
siteSpecific,
1212
useCurrentQuestionAttempt,
1313
useUserPreferences
1414
} from "../../services";
@@ -18,7 +18,6 @@ import {v4 as uuid_v4} from "uuid";
1818
import {Inequality, makeInequality} from 'inequality';
1919
import {parseBooleanExpression, ParsingError} from 'inequality-grammar';
2020
import {IsaacQuestionProps} from "../../../IsaacAppTypes";
21-
import classNames from "classnames";
2221
import QuestionInputValidation from "../elements/inputs/QuestionInputValidation";
2322

2423
const InequalityModal = lazy(() => import("../elements/modals/inequality/InequalityModal"));

src/app/components/content/IsaacSymbolicQuestion.tsx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,33 @@
1-
import React, {ChangeEvent, lazy, Suspense, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState} from "react";
1+
import React, {
2+
ChangeEvent,
3+
lazy,
4+
Suspense,
5+
useCallback,
6+
useEffect,
7+
useLayoutEffect,
8+
useMemo,
9+
useRef,
10+
useState
11+
} from "react";
212
import {IsaacContentValueOrChildren} from "./IsaacContentValueOrChildren";
313
import {FormulaDTO, IsaacSymbolicQuestionDTO} from "../../../IsaacApiTypes";
414
import katex from "katex";
515
import {
616
ifKeyIsEnter,
717
isDefined,
818
jsonHelper,
9-
sanitiseInequalityState,
1019
parsePseudoSymbolicAvailableSymbols,
11-
useCurrentQuestionAttempt, isAda, siteSpecific
20+
sanitiseInequalityState,
21+
siteSpecific,
22+
useCurrentQuestionAttempt
1223
} from "../../services";
1324
import {Inequality, makeInequality} from "inequality";
1425
import {parseMathsExpression, ParsingError} from "inequality-grammar";
1526
import _flattenDeep from 'lodash/flatMapDeep';
1627
import {v4 as uuid_v4} from "uuid";
1728
import {IsaacQuestionProps} from "../../../IsaacAppTypes";
18-
import classNames from "classnames";
1929
import QuestionInputValidation from "../elements/inputs/QuestionInputValidation";
20-
import { InputGroup, Input, Button, UncontrolledTooltip } from "reactstrap";
30+
import {Button, Input, InputGroup, UncontrolledTooltip} from "reactstrap";
2131

2232
const InequalityModal = lazy(() => import("../elements/modals/inequality/InequalityModal"));
2333

src/app/components/elements/LLMFreeTextQuestionFeedbackView.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import React, { useEffect, useRef, useState } from 'react';
1+
import React, {useEffect, useRef, useState} from 'react';
22

33
import {LLMFreeTextQuestionValidationResponseDTO} from "../../../IsaacApiTypes";
4-
import {Alert, Button, Card, Table} from "reactstrap";
4+
import {Button, Table} from "reactstrap";
55
import {siteSpecific} from "../../services/siteConstants";
66
import {Immutable} from "immer";
7-
import { Link } from 'react-router-dom';
8-
import { StyledCheckbox } from './inputs/StyledCheckbox';
9-
import { logAction, selectors, useAppDispatch, useAppSelector } from '../../state';
10-
import { NOT_FOUND } from '../../services';
7+
import {Link} from 'react-router-dom';
8+
import {StyledCheckbox} from './inputs/StyledCheckbox';
9+
import {logAction, selectors, useAppDispatch, useAppSelector} from '../../state';
10+
import {NOT_FOUND} from '../../services';
1111

1212
const noFeedback = {disagree: false, partlyAgree: false, agree: false};
1313

@@ -60,7 +60,7 @@ export default function LLMFreeTextQuestionFeedbackView({validationResponse, has
6060
</Table>
6161
</div>
6262
{hasSubmitted && <>
63-
{!sentFeedback
63+
{!sentFeedback
6464
? <div className="feedback-collection">
6565
<p className="mb-4">Before submitting another response, please say whether you agree with the predicted mark.</p>
6666
<ul className="no-bullet px-2 mb-4">
@@ -92,7 +92,7 @@ export default function LLMFreeTextQuestionFeedbackView({validationResponse, has
9292
>
9393
Send feedback
9494
</Button>
95-
</div>
95+
</div>
9696
: <div className="feedback-collection submitted">
9797
<span className="icon-feedback-sent-tick" /> Feedback submitted
9898
</div>

src/app/components/elements/ReportAccordionButton.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from "react";
22
import {logAction, useAppDispatch} from "../../state";
3-
import {isPhy} from "../../services";
43

54
interface ReportAccordionButtonProps {
65
pageId?: string,
@@ -48,4 +47,4 @@ export const ReportAccordionButton = ({pageId, sectionId, sectionTitle, sectionI
4847
window.open(`/contact?preset=contentProblem${getContactFormParams()}`, "_blank");
4948
}}
5049
/>;
51-
};
50+
};

src/app/components/elements/ShareLink.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, {useEffect, useRef, useState} from "react";
2-
import {isAda, isMobile, isPhy, isTutorOrAbove, PATHS, siteSpecific, useOutsideCallback} from "../../services";
2+
import {isMobile, isPhy, isTutorOrAbove, PATHS, siteSpecific, useOutsideCallback} from "../../services";
33
import {selectors, useAppSelector} from "../../state";
44
import classNames from "classnames";
55

src/app/components/elements/TitleAndBreadcrumb.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, {ReactElement} from "react";
22
import {PageTitle, PageTitleProps} from "./PageTitle";
33
import {Breadcrumb, BreadcrumbItem} from "reactstrap";
44
import {Link} from "react-router-dom";
5-
import {CollectionType, HOME_CRUMB, isAda, isPhy, LinkInfo} from "../../services";
5+
import {CollectionType, HOME_CRUMB, isAda, LinkInfo} from "../../services";
66
import {Markup} from "./markup";
77
import classNames from "classnames";
88

src/app/components/elements/cards/NewsCard.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
import React from "react";
22
import {Link} from "react-router-dom";
3-
import {Button, Card, CardBody, CardFooter, CardImg, CardProps, CardText, CardTitle, Container} from "reactstrap";
3+
import {Card, CardBody, CardImg, CardProps, CardText} from "reactstrap";
44
import {IsaacPodDTO} from "../../../../IsaacApiTypes";
5-
import {apiHelper, isAppLink, siteSpecific} from "../../../services";
5+
import {apiHelper, siteSpecific} from "../../../services";
66
import classNames from "classnames";
7-
import { ExternalLink } from "../ExternalLink";
8-
import { AdaCard } from "./AdaCard";
7+
import {AdaCard} from "./AdaCard";
98

109
interface NewsCardProps extends CardProps {
1110
newsItem: IsaacPodDTO;

src/app/components/elements/inputs/CountryInput.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Immutable} from "immer";
22
import {ValidationUser} from "../../../../IsaacAppTypes";
3-
import {FormFeedback, FormGroup, Label} from "reactstrap";
3+
import {FormGroup, Label} from "reactstrap";
44
import classNames from "classnames";
55
import React, {ChangeEvent} from "react";
66
import {useGetCountriesQuery, useGetPriorityCountriesQuery,} from "../../../state";

src/app/components/elements/inputs/StyledCheckbox.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, {useEffect, useMemo, useState} from "react";
22
import {Input, InputProps} from "reactstrap";
33
import {v4} from "uuid";
44
import {Spacer} from "../Spacer";
5-
import { ifKeyIsEnter, isPhy } from "../../../services";
5+
import {ifKeyIsEnter} from "../../../services";
66
import classNames from "classnames";
77

88
// A custom checkbox, dealing with mouse and keyboard input. Pass `onChange((e : ChangeEvent) => void)`, `checked: bool`, and `label: Element` as required as props to use.

src/app/components/elements/inputs/UserContextAccountInput.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
getFilteredExamBoardOptions,
88
getFilteredStageOptions,
99
isAda,
10-
isDefined,
1110
isPhy,
1211
isTutorOrAbove,
1312
siteSpecific,
@@ -21,7 +20,6 @@ import classNames from "classnames";
2120
import {Immutable} from "immer";
2221
import {StyledDropdown} from "./DropdownInput";
2322
import isUndefined from "lodash/isUndefined";
24-
import { StyledCheckbox } from "./StyledCheckbox";
2523

2624
interface UserContextRowProps {
2725
userContext: UserContext;

src/app/components/elements/inputs/UserContextPicker.tsx

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,20 @@
1-
import React, { useEffect, useState } from "react";
1+
import React, {useEffect, useState} from "react";
22
import {Col, FormGroup, Input, Label, Row, UncontrolledTooltip} from "reactstrap";
33
import {
44
EXAM_BOARD,
55
examBoardLabelMap,
66
getFilteredExamBoardOptions,
77
getFilteredStageOptions,
8-
history,
9-
isAda, isLoggedIn,
8+
isAda,
9+
isLoggedIn,
1010
isStaff,
1111
siteSpecific,
1212
STAGE,
1313
stageLabelMap,
1414
useQueryParams,
1515
useUserViewingContext
1616
} from "../../../services";
17-
import {
18-
selectors,
19-
transientUserContextSlice,
20-
useAppDispatch,
21-
useAppSelector,
22-
} from "../../../state";
23-
import queryString from "query-string";
17+
import {selectors, transientUserContextSlice, useAppDispatch, useAppSelector,} from "../../../state";
2418

2519
export const UserContextPicker = ({className, hideLabels = true}: {className?: string; hideLabels?: boolean}) => {
2620
const dispatch = useAppDispatch();
@@ -52,7 +46,7 @@ export const UserContextPicker = ({className, hideLabels = true}: {className?: s
5246

5347
if (isAda && !isLoggedIn(user) || isStaff(user)) {
5448
return <Col className={`d-flex flex-column w-100 px-0 mt-2 context-picker-container no-print ${className}`}>
55-
<Row sm={12} md={7} lg={siteSpecific(7, 8)} xl={siteSpecific(7, 9)} className={`d-flex m-0 p-0 justify-content-md-end`}>
49+
<Row sm={12} md={7} lg={siteSpecific(7, 8)} xl={siteSpecific(7, 9)} className={`d-flex m-0 p-0 justify-content-md-end`}>
5650
{/* Stage Selector */}
5751
<FormGroup className={`form-group w-100 d-flex justify-content-end m-0`}>
5852
{showStageSelector && <>
@@ -100,14 +94,14 @@ export const UserContextPicker = ({className, hideLabels = true}: {className?: s
10094
dispatch(transientUserContextSlice.actions.setExamBoard(e.target.value as EXAM_BOARD));
10195
}}
10296
>
103-
{onlyOneBoard
104-
? <option value={onlyOneBoard.value}>{onlyOneBoard.label}</option>
97+
{onlyOneBoard
98+
? <option value={onlyOneBoard.value}>{onlyOneBoard.label}</option>
10599
: getFilteredExamBoardOptions({byStages: [currentStage], includeNullOptions: true})
106100
.map(item => <option key={item.value} value={item.value}>{item.label}</option>)
107101
}
108102
</Input>
109103
</>}
110-
104+
111105
{showUnusualContextMessage && <div className="mt-2 ms-1">
112106
<span id={`unusual-viewing-context-explanation`} className="icon-help mx-1" />
113107
<UncontrolledTooltip placement="bottom" target={`unusual-viewing-context-explanation`}>

src/app/components/elements/panels/TeacherConnections.tsx

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import {
66
showErrorToast,
77
useAppDispatch,
88
useChangeMyMembershipStatusMutation,
9-
useDeleteGroupMemberMutation,
109
useGetActiveAuthorisationsQuery,
11-
useGetGroupMembershipsQuery, useGetOtherUserAuthorisationsQuery,
10+
useGetGroupMembershipsQuery,
11+
useGetOtherUserAuthorisationsQuery,
1212
useLazyGetTokenOwnerQuery
1313
} from "../../../state";
1414
import {
@@ -38,10 +38,10 @@ import {
3838
revocationConfirmationModal,
3939
tokenVerificationModal
4040
} from "../modals/TeacherConnectionModalCreators";
41-
import { FixedSizeList } from "react-window";
42-
import { Spacer } from "../Spacer";
43-
import { MyAccountTab } from "./MyAccountTab";
44-
import { Input, UncontrolledTooltip, Form, InputGroup, Button, Col } from "reactstrap";
41+
import {FixedSizeList} from "react-window";
42+
import {Spacer} from "../Spacer";
43+
import {MyAccountTab} from "./MyAccountTab";
44+
import {Button, Col, Form, Input, InputGroup, UncontrolledTooltip} from "reactstrap";
4545

4646
const CONNECTIONS_ROW_HEIGHT = 40;
4747
const CONNECTIONS_MAX_VISIBLE_ROWS = 10;
@@ -67,12 +67,12 @@ const ConnectionsHeader = ({enableSearch, setEnableSearch, setSearchText, title,
6767
const deviceSize = useDeviceSize();
6868

6969
return <div className="connect-list-header">
70-
{["xl", "lg", "xs"].indexOf(deviceSize) !== -1 ?
71-
<>{enableSearch ?
70+
{["xl", "lg", "xs"].indexOf(deviceSize) !== -1 ?
71+
<>{enableSearch ?
7272
<>
7373
<Input type="text" autoFocus placeholder={placeholder} className="connections-search" onChange={e => setSearchText(e.target.value)}/>
7474
<Spacer />
75-
</> :
75+
</> :
7676
<h4 className={classNames("d-flex", {"ps-0" : isAda})}>
7777
<span className={siteSpecific("icon-person-active", "icon-group-white")} />
7878
{title}
@@ -166,7 +166,7 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
166166
}
167167
}
168168

169-
return <MyAccountTab
169+
return <MyAccountTab
170170
leftColumn={<>
171171
<h3>Connect to your teacher</h3>
172172
<PageFragment fragmentId={`teacher_connections_help_${isTutorOrAbove(user) ? "teacher" : "student"}`} ifNotFound={RenderNothing} />
@@ -186,8 +186,8 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
186186
type="text" placeholder="Enter your code in here" value={authToken || undefined} className="py-4"
187187
onChange={(e: React.ChangeEvent<HTMLInputElement>) => setAuthenticationToken(e.target.value)}
188188
onKeyDown={(e) => {if (e.key === 'Enter') {
189-
processToken(e);
190-
e.preventDefault();
189+
processToken(e);
190+
e.preventDefault();
191191
}}}
192192
/>
193193
<Button onClick={processToken} className={classNames("py-2", {"px-0 border-dark": isPhy})} color="secondary" outline disabled={editingOtherUser}>
@@ -197,8 +197,8 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
197197
</Form>
198198

199199
<div className="connect-list" data-testid="teacher-connections">
200-
<ConnectionsHeader
201-
title="Teacher connections" enableSearch={enableTeacherSearch} setEnableSearch={setEnableTeacherSearch}
200+
<ConnectionsHeader
201+
title="Teacher connections" enableSearch={enableTeacherSearch} setEnableSearch={setEnableTeacherSearch}
202202
setSearchText={setTeacherSearchText} placeholder="Search teachers"/>
203203
<div className="connect-list-inner">
204204
<ul className={classNames("teachers-connected list-unstyled my-0", {"ms-3 me-2": isPhy}, {"ms-1 me-2": isAda})}>
@@ -254,8 +254,8 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
254254
<Link to="/groups">{siteSpecific("group management page", "Manage groups")}</Link>{siteSpecific(".", " page.")}
255255
</p>
256256
<div className="connect-list">
257-
<ConnectionsHeader
258-
title="Student connections" enableSearch={enableStudentSearch} setEnableSearch={setEnableStudentSearch}
257+
<ConnectionsHeader
258+
title="Student connections" enableSearch={enableStudentSearch} setEnableSearch={setEnableStudentSearch}
259259
setSearchText={setStudentSearchText} placeholder="Search students"/>
260260
<div className="connect-list-inner">
261261
<ul className={classNames("teachers-connected list-unstyled my-0", {"ms-3 me-2": isPhy}, {"ms-1 me-2": isAda})}>
@@ -319,8 +319,8 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
319319
</ul>
320320
<div className="my-groups-table-section overflow-auto">
321321
<div className="connect-list">
322-
<ConnectionsHeader
323-
title="Group memberships" enableSearch={enableGroupSearch} setEnableSearch={setEnableGroupSearch}
322+
<ConnectionsHeader
323+
title="Group memberships" enableSearch={enableGroupSearch} setEnableSearch={setEnableGroupSearch}
324324
setSearchText={setGroupSearchText} placeholder="Search groups"/>
325325
<div className="connect-list-inner">
326326
<ul className={classNames("teachers-connected list-unstyled m-0")}>
@@ -354,7 +354,7 @@ export const TeacherConnections = ({user, authToken, editingOtherUser, userToEdi
354354
<Col className="d-flex flex-col justify-content-end align-items-center flex-grow-0 pe-1">
355355
{membership.membershipStatus === MEMBERSHIP_STATUS.ACTIVE && <React.Fragment>
356356
<Button color="link" disabled={editingOtherUser} onClick={() =>
357-
membership.group.selfRemoval
357+
membership.group.selfRemoval
358358
? dispatch(openActiveModal(confirmSelfRemovalModal((user as LoggedInUser).id as number, membership.group.id as number)))
359359
: changeMyMembershipStatus({groupId: membership.group.id as number, newStatus: MEMBERSHIP_STATUS.INACTIVE})
360360
}>

0 commit comments

Comments
 (0)