Skip to content

Commit 4b05e15

Browse files
committed
fix type errors
1 parent 1b12cb5 commit 4b05e15

File tree

6 files changed

+41
-54
lines changed

6 files changed

+41
-54
lines changed

src/api/baseQuery.ts

+16-28
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import { QueryReturnValue } from "@reduxjs/toolkit/dist/query/baseQueryTypes"
21
import {
3-
BaseQueryApi,
4-
BaseQueryFn,
5-
FetchArgs,
6-
FetchBaseQueryError,
7-
FetchBaseQueryMeta,
82
fetchBaseQuery,
3+
type BaseQueryApi,
4+
type BaseQueryFn,
5+
type FetchArgs,
6+
type FetchBaseQueryError,
97
} from "@reduxjs/toolkit/query"
108
import Cookies from "js-cookie"
119
import qs from "qs"
@@ -18,11 +16,6 @@ export type FetchBaseQuery = BaseQueryFn<
1816
unknown,
1917
FetchBaseQueryError
2018
>
21-
export type Result = QueryReturnValue<
22-
unknown,
23-
FetchBaseQueryError,
24-
FetchBaseQueryMeta
25-
>
2619

2720
export const fetch = fetchBaseQuery({
2821
baseUrl: API_BASE_URL,
@@ -93,35 +86,30 @@ export async function injectCsrfToken(
9386
}
9487
}
9588

96-
export function handleResponseError(result: Result): void {
97-
// Check if errors.
98-
if (result.error === undefined) return
99-
89+
export function handleResponseError(error: FetchBaseQueryError): void {
10090
if (
101-
result.error.status === 400 &&
102-
typeof result.error.data === "object" &&
103-
result.error.data !== null
91+
error.status === 400 &&
92+
typeof error.data === "object" &&
93+
error.data !== null
10494
) {
10595
// Parse the error's data from snake_case to camelCase.
106-
snakeCaseToCamelCase(result.error.data)
107-
} else if (result.error.status === 401) {
96+
snakeCaseToCamelCase(error.data)
97+
} else if (error.status === 401) {
10898
// TODO: redirect to appropriate login page based on user type.
10999
window.location.href = `${PORTAL_BASE_URL}/login/teacher`
110100
} else {
111101
// Catch-all error pages by status-code.
112102
window.location.href = `${PORTAL_BASE_URL}/error/${
113-
[403, 404].includes(result.error.status as number)
114-
? result.error.status
115-
: 500
103+
[403, 404].includes(error.status as number) ? error.status : 500
116104
}`
117105
}
118106
}
119107

120-
export function parseResponseBody(result: Result): void {
108+
export function parseResponseBody(data: unknown): void {
121109
// Parse the response's data from snake_case to camelCase.
122-
if (typeof result.data !== "object" || result.data === null) return
110+
if (typeof data !== "object" || data === null) return
123111

124-
snakeCaseToCamelCase(result.data)
112+
snakeCaseToCamelCase(data)
125113
}
126114

127115
const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => {
@@ -132,9 +120,9 @@ const baseQuery: FetchBaseQuery = async (args, api, extraOptions) => {
132120
// Send the HTTP request and fetch the response.
133121
const result = await fetch(args, api, extraOptions)
134122

135-
handleResponseError(result)
123+
if (result.error) handleResponseError(result.error)
136124

137-
parseResponseBody(result)
125+
parseResponseBody(result.data)
138126

139127
return result
140128
}

src/api/endpoints.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
import { EndpointBuilder } from "@reduxjs/toolkit/dist/query/endpointDefinitions"
2-
import { MutationDefinition } from "@reduxjs/toolkit/query/react"
1+
import type {
2+
EndpointBuilder,
3+
MutationDefinition,
4+
} from "@reduxjs/toolkit/query"
35

46
import { FetchBaseQuery } from "./baseQuery"
57
import { TagTypes } from "./tagTypes"

src/components/page/TabBar.tsx

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
import React from "react"
2-
import { useParams, useNavigate, generatePath } from "react-router-dom"
31
import {
4-
Tabs,
2+
ChevronLeft as ChevronLeftIcon,
3+
ChevronRight as ChevronRightIcon,
4+
} from "@mui/icons-material"
5+
import {
6+
IconButton,
57
Tab,
68
TabScrollButtonProps,
9+
Tabs,
710
Typography,
8-
IconButton,
911
} from "@mui/material"
10-
import {
11-
ChevronLeft as ChevronLeftIcon,
12-
ChevronRight as ChevronRightIcon,
13-
} from "@mui/icons-material"
12+
import React from "react"
13+
import { generatePath, useNavigate, useParams } from "react-router-dom"
1414
import { object as YupObject, string as YupString } from "yup"
1515

16-
import { primary } from "../../theme/colors"
1716
import { tryValidateSync } from "../../helpers/yup"
17+
import { primary } from "../../theme/colors"
1818
import Section from "./Section"
1919

2020
export interface TabBarProps {
@@ -99,7 +99,6 @@ const TabBar: React.FC<TabBarProps> = ({
9999
return (
100100
<>
101101
{disabled === false && (
102-
// @ts-expect-error button props not required
103102
<IconButton
104103
onClick={onClick}
105104
style={{

src/helpers/formik.ts

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
1-
import {
2-
MutationDefinition,
3-
QueryDefinition,
4-
} from "@reduxjs/toolkit/dist/query"
5-
import {
6-
LazyQueryTrigger,
7-
MutationTrigger,
8-
} from "@reduxjs/toolkit/dist/query/react/buildHooks"
9-
import { FormikHelpers } from "formik"
1+
import type {
2+
TypedLazyQueryTrigger,
3+
TypedMutationTrigger,
4+
} from "@reduxjs/toolkit/query/react"
5+
import type { FormikHelpers } from "formik"
106

117
export function isFormError(error: unknown): boolean {
128
return (
@@ -40,8 +36,8 @@ export function setFormErrors(
4036

4137
export function submitForm<QueryArg, ResultType, FormValues extends QueryArg>(
4238
trigger:
43-
| MutationTrigger<MutationDefinition<QueryArg, any, any, ResultType, any>>
44-
| LazyQueryTrigger<QueryDefinition<QueryArg, any, any, ResultType, any>>,
39+
| TypedMutationTrigger<ResultType, QueryArg, any>
40+
| TypedLazyQueryTrigger<ResultType, QueryArg, any>,
4541
query: {
4642
then: (result: ResultType) => void
4743
catch?: (error: Error) => void

src/hooks.ts

+1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export function useExternalScript<EventType extends keyof HTMLElementEventMap>({
5959
const script = document.createElement("script")
6060

6161
Object.entries(props).forEach(([key, value]) => {
62+
// @ts-expect-error
6263
script[key] = value
6364
})
6465

src/theme/components/_components.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import {
2-
ThemeOptions,
3-
ComponentsPropsList,
42
CSSObject,
53
ComponentsOverrides,
4+
ComponentsPropsList,
65
Theme,
6+
ThemeOptions,
77
} from "@mui/material"
8-
import { OverridesStyleRules } from "@mui/material/styles/overrides"
98
import { CommonProps } from "@mui/material/OverridableComponent"
9+
import { OverridesStyleRules } from "@mui/material/styles/overrides"
1010

1111
import {
1212
getClassNames,
@@ -72,6 +72,7 @@ export function getFontStyleOverrides(props: CommonProps): CSSObject {
7272
;["h1", "h2", "h3", "h4", "h5", "h6", "body1", "body2"]
7373
.filter(className => className in typography)
7474
.forEach(className => {
75+
// @ts-expect-error
7576
const typographyClass = typography[className]
7677

7778
if (includesClassNames(classNames, [className])) {

0 commit comments

Comments
 (0)