Skip to content

Commit 298030b

Browse files
committed
fix some eslint stuff
1 parent 8ba3566 commit 298030b

27 files changed

+73
-77
lines changed

.eslintrc.js

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module.exports = {
77
extends: [
88
'eslint:recommended',
99
'plugin:react/recommended',
10+
'plugin:react-hooks/recommended',
1011
'plugin:@typescript-eslint/recommended',
1112
'plugin:jest/recommended',
1213
],

src/components/ContactUsSlideover/ContactUsSlideover.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { useContext, useEffect, useState } from 'react';
33
import { SECTION_LABELS } from '../../../content/ordering';
44
import MarkdownLayoutContext from '../../context/MarkdownLayoutContext';
55
import { useFirebaseUser } from '../../context/UserDataContext/UserDataContext';
6-
import { useUserLangSetting } from '../../context/UserDataContext/properties/simpleProperties';
6+
import { getUserLangSetting } from '../../context/UserDataContext/properties/simpleProperties';
77
import useContactFormAction from '../../hooks/useContactFormAction';
88
import useStickyState from '../../hooks/useStickyState';
99
import { ModuleInfo } from '../../models/module';
@@ -93,7 +93,7 @@ export default function ContactUsSlideover({
9393
const [showErrors, setShowErrors] = useState(false);
9494

9595
const markdownContext = useContext(MarkdownLayoutContext);
96-
const userLang = useUserLangSetting();
96+
const userLang = getUserLangSetting();
9797
const submitForm = useContactFormAction();
9898

9999
React.useEffect(() => {

src/components/Dashboard/Activity.tsx

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@ import * as React from 'react';
22
import CalendarHeatmap from 'react-calendar-heatmap';
33
import 'react-calendar-heatmap/dist/styles.css';
44
import {
5-
useUserProgressOnModulesActivity,
6-
useUserProgressOnProblemsActivity,
5+
getUserProgressOnModulesActivity,
6+
getUserProgressOnProblemsActivity,
77
} from '../../context/UserDataContext/properties/userProgress';
88
import './heatmap-styles.css';
99

10-
type ModuleActivity = ReturnType<typeof useUserProgressOnModulesActivity>[0];
11-
type ProblemActivity = ReturnType<typeof useUserProgressOnProblemsActivity>[0];
10+
type ModuleActivity = ReturnType<typeof getUserProgressOnModulesActivity>[0];
11+
type ProblemActivity = ReturnType<typeof getUserProgressOnProblemsActivity>[0];
1212

1313
export type ActivityHeatmapProps = {
1414
moduleActivities: { [key: number]: ModuleActivity[] };
@@ -88,8 +88,8 @@ export function ActivityHeatmap({
8888
}
8989

9090
export default function Activity() {
91-
const userProgressOnModulesActivity = useUserProgressOnModulesActivity();
92-
const userProgressOnProblemsActivity = useUserProgressOnProblemsActivity();
91+
const userProgressOnModulesActivity = getUserProgressOnModulesActivity();
92+
const userProgressOnProblemsActivity = getUserProgressOnProblemsActivity();
9393
const activityCount: { [key: number]: number } = {};
9494
const moduleActivities: { [key: number]: ModuleActivity[] } = {};
9595
const problemActivities: { [key: number]: ProblemActivity[] } = {};

src/components/Dashboard/ModuleLink.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import styled, { css } from 'styled-components';
44
import tw from 'twin.macro';
55
import {
66
LANGUAGE_LABELS,
7-
useUserLangSetting,
7+
getUserLangSetting,
88
} from '../../context/UserDataContext/properties/simpleProperties';
9-
import { useUserProgressOnModules } from '../../context/UserDataContext/properties/userProgress';
9+
import { getUserProgressOnModules } from '../../context/UserDataContext/properties/userProgress';
1010
import { ModuleLinkInfo } from '../../models/module';
1111
import { FrequencyLabels } from '../Frequency';
1212
import ModuleFrequencyDots from '../MarkdownLayout/ModuleFrequencyDots';
@@ -161,7 +161,7 @@ function timeAgoString(time: unknown): string {
161161
}
162162

163163
const ModuleLink = ({ link }: { link: ModuleLinkInfo }): JSX.Element => {
164-
const userProgressOnModules = useUserProgressOnModules();
164+
const userProgressOnModules = getUserProgressOnModules();
165165
const progress = userProgressOnModules[link.id] || 'Not Started';
166166

167167
let lineColorStyle = tw`bg-gray-200`;
@@ -195,7 +195,7 @@ const ModuleLink = ({ link }: { link: ModuleLinkInfo }): JSX.Element => {
195195
darkLineColorStyle = tw`bg-gray-800`;
196196
darkDotColorStyle = tw`bg-gray-800`;
197197
}
198-
const userLang = useUserLangSetting();
198+
const userLang = getUserLangSetting();
199199
const maxLangOc = Math.max(link.cppOc, link.javaOc, link.pyOc);
200200
const langToOc = {
201201
cpp: link.cppOc,

src/components/Editor/EditorTopNav.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ import { activeFileAtom, saveFileAtom } from '../../atoms/editor';
66
import { useDarkMode } from '../../context/DarkModeContext';
77
import {
88
LANGUAGE_LABELS,
9+
getUserLangSetting,
910
useSetThemeSetting,
1011
useSetUserLangSetting,
11-
useUserLangSetting,
1212
} from '../../context/UserDataContext/properties/simpleProperties';
1313
import LogoSquare from '../LogoSquare';
1414
import { fetchFileContent } from './editorUtils';
@@ -17,7 +17,7 @@ export const EditorTopNav = (): JSX.Element => {
1717
const activeFile = useAtomValue(activeFileAtom);
1818
const saveFile = useUpdateAtom(saveFileAtom);
1919
const isDarkMode = useDarkMode();
20-
const userLang = useUserLangSetting();
20+
const userLang = getUserLangSetting();
2121
const setUserLang = useSetUserLangSetting();
2222
const setTheme = useSetThemeSetting();
2323

src/components/Groups/GroupPage/Feed.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@ function SortableItem(props: {
3131
userPoints: number | null;
3232
isBeingDragged: boolean;
3333
}) {
34-
// probably post was just deleted before items updated
35-
if (!props.post) return null;
36-
3734
const { attributes, listeners, setNodeRef, transform, transition } =
3835
useSortable({ id: props.id });
3936

37+
// probably post was just deleted before items updated
38+
if (!props.post) return null;
39+
4040
const style = {
4141
transform: CSS.Transform.toString(transform),
4242
transition,

src/components/Groups/PostPage/PostProblems.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ function SortableItem(props: {
3131
post: PostData;
3232
problem: ProblemData;
3333
}) {
34-
if (!props.problem) return null;
35-
3634
const { attributes, listeners, setNodeRef, transform, transition } =
3735
useSortable({ id: props.id });
3836

37+
if (!props.problem) return null;
38+
3939
const style = {
4040
transform: CSS.Transform.toString(transform),
4141
transition,

src/components/Groups/ProblemPage/ProblemSubmissionInterface.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useDropzone } from 'react-dropzone';
44
import { useFirebaseUser } from '../../../context/UserDataContext/UserDataContext';
55
import {
66
LANGUAGE_LABELS,
7-
useUserLangSetting,
7+
getUserLangSetting,
88
} from '../../../context/UserDataContext/properties/simpleProperties';
99
import { useActiveGroup } from '../../../hooks/groups/useActiveGroup';
1010
import {
@@ -36,7 +36,7 @@ export default function ProblemSubmissionInterface({
3636
problem: GroupProblemData;
3737
}) {
3838
const firebaseUser = useFirebaseUser();
39-
const lang = useUserLangSetting();
39+
const lang = getUserLangSetting();
4040
const emptySubmission: Partial<ProblemSubmissionRequestData> = {
4141
problemID: problem.id,
4242
sourceCode: '',

src/components/Groups/ProblemSubmissionPopup.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,9 @@ function ProblemSubmissionPopup() {
2525
? useProblemSubmissionResult(submission?.submissionID)
2626
: null;
2727

28-
if (!submission) return null;
29-
3028
const isDarkMode = useDarkMode();
3129

30+
if (!submission) return null;
3231
return (
3332
<Transition
3433
show={popupContext.showPopup}

src/components/Groups/SafeMarkdownRenderer.tsx

+1-2
Original file line numberDiff line numberDiff line change
@@ -67,15 +67,14 @@ const GroupsCodeBlock = ({
6767
inline?: boolean;
6868
}) => {
6969
const value = children[0];
70+
const isDarkMode = useDarkMode();
7071
if (className === 'language-video') {
7172
return <VideoComponent link={value} />;
7273
}
7374
if (inline) {
7475
return <code>{value}</code>;
7576
}
7677

77-
const isDarkMode = useDarkMode();
78-
7978
return (
8079
<CodeBlock className={className} isDarkMode={isDarkMode}>
8180
{value}

src/components/MarkdownLayout/MarkdownLayout.tsx

+5-6
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import { ContactUsSlideoverProvider } from '../../context/ContactUsSlideoverCont
1010
import MarkdownLayoutContext from '../../context/MarkdownLayoutContext';
1111
import { ProblemSolutionContext } from '../../context/ProblemSolutionContext';
1212
import { ProblemSuggestionModalProvider } from '../../context/ProblemSuggestionModalContext';
13-
import { useUserLangSetting } from '../../context/UserDataContext/properties/simpleProperties';
13+
import { getUserLangSetting } from '../../context/UserDataContext/properties/simpleProperties';
1414
import {
15+
getUserProgressOnModules,
1516
useSetProgressOnModule,
16-
useUserProgressOnModules,
1717
} from '../../context/UserDataContext/properties/userProgress';
1818
import { ModuleInfo } from '../../models/module';
1919
import { SolutionInfo } from '../../models/solution';
@@ -69,9 +69,9 @@ export default function MarkdownLayout({
6969
markdownData: ModuleInfo | SolutionInfo;
7070
children: React.ReactNode;
7171
}) {
72-
const userProgressOnModules = useUserProgressOnModules();
72+
const userProgressOnModules = getUserProgressOnModules();
7373
const setModuleProgress = useSetProgressOnModule();
74-
const lang = useUserLangSetting();
74+
const lang = getUserLangSetting();
7575

7676
const [isMobileNavOpen, setIsMobileNavOpen] = useState(false);
7777
const moduleProgress =
@@ -119,12 +119,11 @@ export default function MarkdownLayout({
119119
// document.querySelector('html').style.scrollBehavior = 'smooth';
120120
// return () => (document.querySelector('html').style.scrollBehavior = 'auto');
121121
// }, []);
122-
122+
const problemSolutionContext = React.useContext(ProblemSolutionContext);
123123
let activeIDs = [];
124124
if (markdownData instanceof ModuleInfo) {
125125
activeIDs.push(markdownData.id);
126126
} else {
127-
const problemSolutionContext = React.useContext(ProblemSolutionContext);
128127
activeIDs = problemSolutionContext.modulesThatHaveProblem.map(x => x.id);
129128
}
130129

src/components/MarkdownLayout/ModuleHeaders/ModuleHeaders.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import { useMarkdownProblems } from '../../../context/MarkdownProblemListsContex
1414
import { ProblemSolutionContext } from '../../../context/ProblemSolutionContext';
1515
import {
1616
LANGUAGE_LABELS,
17+
getUserLangSetting,
1718
useSetUserLangSetting,
18-
useUserLangSetting,
1919
} from '../../../context/UserDataContext/properties/simpleProperties';
2020
import { ModuleInfo, ModuleLinkInfo } from '../../../models/module';
2121
import { getProblemsProgressInfo } from '../../../utils/getProgressInfo';
@@ -35,13 +35,13 @@ export default function ModuleHeaders({
3535
handleCompletionChange,
3636
} = useContext(MarkdownLayoutContext);
3737

38-
const lang = useUserLangSetting();
38+
const lang = getUserLangSetting();
3939
const setLang = useSetUserLangSetting();
40-
40+
const markdownProblems = useMarkdownProblems();
4141
// this is for modules
4242
const problemIDs =
4343
markdownData instanceof ModuleInfo
44-
? useMarkdownProblems().map(problem => problem.uniqueId)
44+
? markdownProblems.map(problem => problem.uniqueId)
4545
: [];
4646
const problemsProgressInfo = getProblemsProgressInfo(problemIDs);
4747

src/components/MarkdownLayout/NavBar.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ const NavBar = ({ alignNavButtonsRight = true }) => {
1111
const moduleLayoutInfo = useContext(MarkdownLayoutContext);
1212
const { markdownLayoutInfo, sidebarLinks } = moduleLayoutInfo;
1313

14-
if (markdownLayoutInfo instanceof SolutionInfo) return null;
15-
1614
const sortedModuleLinks = React.useMemo(() => {
15+
if (markdownLayoutInfo instanceof SolutionInfo) return null;
1716
const links: MarkdownLayoutSidebarModuleLinkInfo[] = [];
1817
for (const group of MODULE_ORDERING[markdownLayoutInfo.section]) {
1918
for (const id of group.items) {
@@ -26,6 +25,7 @@ const NavBar = ({ alignNavButtonsRight = true }) => {
2625
() => sortedModuleLinks.findIndex(x => x.id === markdownLayoutInfo.id),
2726
[markdownLayoutInfo, sortedModuleLinks]
2827
);
28+
if (markdownLayoutInfo instanceof SolutionInfo) return null;
2929
const prevModule = moduleIdx === 0 ? null : sortedModuleLinks[moduleIdx - 1];
3030
const nextModule =
3131
moduleIdx === sortedModuleLinks.length - 1

src/components/MarkdownLayout/SidebarNav/ItemLink.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useContext } from 'react';
44
import styled from 'styled-components';
55
import tw, { TwStyle } from 'twin.macro';
66
import MarkdownLayoutContext from '../../../context/MarkdownLayoutContext';
7-
import { useUserProgressOnModules } from '../../../context/UserDataContext/properties/userProgress';
7+
import { getUserProgressOnModules } from '../../../context/UserDataContext/properties/userProgress';
88
import {
99
MarkdownLayoutSidebarModuleLinkInfo,
1010
ModuleLinkInfo,
@@ -120,7 +120,7 @@ const ItemLink = ({
120120
}
121121
}, [isActive]);
122122

123-
const userProgressOnModules = useUserProgressOnModules();
123+
const userProgressOnModules = getUserProgressOnModules();
124124
const progress = userProgressOnModules[link.id] || 'Not Started';
125125

126126
let lineColorStyle = tw`bg-gray-200`;

src/components/ProblemSolutions.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import { useFirebaseUser } from '../context/UserDataContext/UserDataContext';
88
import { useUserPermissions } from '../context/UserDataContext/UserPermissionsContext';
99
import {
1010
LANGUAGE_LABELS,
11-
useUserLangSetting,
11+
getUserLangSetting,
1212
} from '../context/UserDataContext/properties/simpleProperties';
1313
import useUserProblemSolutionActions from '../hooks/useUserProblemSolutionActions';
1414
import useUserSolutionsForProblem from '../hooks/useUserSolutionsForProblem';
@@ -27,7 +27,7 @@ export default function ProblemSolutions({
2727
const { deleteSolution, upvoteSolution, undoUpvoteSolution, mutateSolution } =
2828
useUserProblemSolutionActions();
2929
const firebaseUser = useFirebaseUser();
30-
const lang = useUserLangSetting();
30+
const lang = getUserLangSetting();
3131
const [isContactUsActive, setIsContactUsActive] = useState(false);
3232
const { signIn } = React.useContext(SignInContext);
3333
const canModerate = useUserPermissions().canModerate;

src/components/Settings/Language.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as React from 'react';
22
import {
33
LANGUAGE_LABELS,
4+
getUserLangSetting,
45
useSetUserLangSetting,
5-
useUserLangSetting,
66
} from '../../context/UserDataContext/properties/simpleProperties';
77
import RadioList from '../elements/RadioList';
88

99
export default function Language() {
10-
const lang = useUserLangSetting();
10+
const lang = getUserLangSetting();
1111
const setLang = useSetUserLangSetting();
1212

1313
return (

src/components/markdown/LanguageSection.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
import * as React from 'react';
22
import {
3-
Language,
43
LANGUAGE_LABELS,
5-
useUserLangSetting,
4+
Language,
5+
getUserLangSetting,
66
} from '../../context/UserDataContext/properties/simpleProperties';
77
import Danger from './Danger';
88

99
const sectionFromLang = (sections: { [key in Language]?: React.ReactNode }) => {
10-
const userLang = useUserLangSetting();
10+
const userLang = getUserLangSetting();
1111
if (userLang === 'showAll') {
1212
return (
1313
<>

src/components/markdown/ProblemsList/ProblemStatusCheckbox.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import ConfettiContext from '../../../context/ConfettiContext';
77
import { useDarkMode } from '../../../context/DarkModeContext';
88
import MarkdownLayoutContext from '../../../context/MarkdownLayoutContext';
99
import {
10+
getUserProgressOnModules,
11+
getUserProgressOnProblems,
1012
useSetProgressOnModule,
1113
useSetProgressOnProblem,
12-
useUserProgressOnModules,
13-
useUserProgressOnProblems,
1414
} from '../../../context/UserDataContext/properties/userProgress';
1515
import {
1616
PROBLEM_PROGRESS_OPTIONS,
@@ -146,9 +146,9 @@ export default function ProblemStatusCheckbox({
146146
}): JSX.Element {
147147
const darkMode = useDarkMode();
148148
const markdownLayoutContext = useContext(MarkdownLayoutContext);
149-
const userProgressOnModules = useUserProgressOnModules();
149+
const userProgressOnModules = getUserProgressOnModules();
150150
const setModuleProgress = useSetProgressOnModule();
151-
const userProgressOnProblems = useUserProgressOnProblems();
151+
const userProgressOnProblems = getUserProgressOnProblems();
152152
const setUserProgressOnProblems = useSetProgressOnProblem();
153153
const updateModuleProgressToPracticing = () => {
154154
if (

src/components/markdown/ResourceStatusCheckbox.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import ConfettiContext from '../../context/ConfettiContext';
77
import { useDarkMode } from '../../context/DarkModeContext';
88
import MarkdownLayoutContext from '../../context/MarkdownLayoutContext';
99
import {
10+
getUserProgressOnModules,
11+
getUserProgressOnResources,
1012
replaceIllegalFirebaseCharacters,
1113
useSetProgressOnModule,
1214
useSetProgressOnResource,
13-
useUserProgressOnModules,
14-
useUserProgressOnResources,
1515
} from '../../context/UserDataContext/properties/userProgress';
1616
import {
1717
ResourceInfo,
@@ -148,9 +148,9 @@ export default function ResourcestatusCheckbox({
148148
}): JSX.Element {
149149
const darkMode = useDarkMode();
150150
const markdownLayoutContext = useContext(MarkdownLayoutContext);
151-
const userProgressOnModules = useUserProgressOnModules();
151+
const userProgressOnModules = getUserProgressOnModules();
152152
const setModuleProgress = useSetProgressOnModule();
153-
const userProgressOnResources = useUserProgressOnResources();
153+
const userProgressOnResources = getUserProgressOnResources();
154154
const setUserProgressOnResources = useSetProgressOnResource();
155155
const updateResourceProgressToPracticing = () => {
156156
if (

0 commit comments

Comments
 (0)