Skip to content

Commit b8a110c

Browse files
replace queries with typed-document-node
1 parent 9215da4 commit b8a110c

File tree

23 files changed

+203
-152
lines changed

23 files changed

+203
-152
lines changed

frontend/src/app/about/page.tsx

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ import { useRouter } from 'next/navigation'
1919
import { useEffect, useState } from 'react'
2020
import FontAwesomeIconWrapper from 'wrappers/FontAwesomeIconWrapper'
2121
import { ErrorDisplay, handleAppError } from 'app/global-error'
22-
import { GET_PROJECT_METADATA, GET_TOP_CONTRIBUTORS } from 'server/queries/projectQueries'
23-
import { GET_LEADER_DATA } from 'server/queries/userQueries'
24-
import type { Contributor } from 'types/contributor'
25-
import type { Project } from 'types/project'
26-
import type { User } from 'types/user'
22+
import {
23+
GetProjectMetadataDocument,
24+
GetProjectMetadataQuery,
25+
GetTopContributorsDocument,
26+
GetTopContributorsQuery,
27+
} from 'types/__generated__/projectQueries.generated'
28+
import {
29+
GetLeaderDataDocument,
30+
GetLeaderDataQuery,
31+
} from 'types/__generated__/userQueries.generated'
2732
import { aboutText, technologies } from 'utils/aboutData'
2833
import AnchorTitle from 'components/AnchorTitle'
2934
import AnimatedCounter from 'components/AnimatedCounter'
@@ -42,14 +47,14 @@ const projectKey = 'nest'
4247

4348
const About = () => {
4449
const { data: projectMetadataResponse, error: projectMetadataRequestError } = useQuery(
45-
GET_PROJECT_METADATA,
50+
GetProjectMetadataDocument,
4651
{
4752
variables: { key: projectKey },
4853
}
4954
)
5055

5156
const { data: topContributorsResponse, error: topContributorsRequestError } = useQuery(
52-
GET_TOP_CONTRIBUTORS,
57+
GetTopContributorsDocument,
5358
{
5459
variables: {
5560
excludedUsernames: Object.keys(leaders),
@@ -60,8 +65,12 @@ const About = () => {
6065
}
6166
)
6267

63-
const [projectMetadata, setProjectMetadata] = useState<Project | null>(null)
64-
const [topContributors, setTopContributors] = useState<Contributor[]>([])
68+
const [projectMetadata, setProjectMetadata] = useState<GetProjectMetadataQuery['project'] | null>(
69+
null
70+
)
71+
const [topContributors, setTopContributors] = useState<
72+
GetTopContributorsQuery['topContributors']
73+
>([])
6574

6675
useEffect(() => {
6776
if (projectMetadataResponse?.project) {
@@ -247,7 +256,7 @@ const About = () => {
247256
}
248257

249258
const LeaderData = ({ username }: { username: string }) => {
250-
const { data, loading, error } = useQuery(GET_LEADER_DATA, {
259+
const { data, loading, error } = useQuery(GetLeaderDataDocument, {
251260
variables: { key: username },
252261
})
253262
const router = useRouter()
@@ -261,7 +270,7 @@ const LeaderData = ({ username }: { username: string }) => {
261270
return <p>No data available for {username}</p>
262271
}
263272

264-
const handleButtonClick = (user: User) => {
273+
const handleButtonClick = (user: GetLeaderDataQuery['user']) => {
265274
router.push(`/members/${user.login}`)
266275
}
267276

frontend/src/app/chapters/[chapterKey]/page.tsx

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,24 @@ import Link from 'next/link'
44
import { useParams } from 'next/navigation'
55
import { useState, useEffect } from 'react'
66
import { handleAppError, ErrorDisplay } from 'app/global-error'
7-
import { GET_CHAPTER_DATA } from 'server/queries/chapterQueries'
8-
import type { Chapter } from 'types/chapter'
7+
import {
8+
GetChapterDataDocument,
9+
GetChapterDataQuery,
10+
} from 'types/__generated__/chapterQueries.generated'
911
import type { Contributor } from 'types/contributor'
1012
import { formatDate } from 'utils/dateFormatter'
1113
import DetailsCard from 'components/CardDetailsPage'
1214
import LoadingSpinner from 'components/LoadingSpinner'
1315

1416
export default function ChapterDetailsPage() {
15-
const { chapterKey } = useParams()
16-
const [chapter, setChapter] = useState<Chapter>({} as Chapter)
17+
const { chapterKey } = useParams<{ chapterKey: string }>()
18+
const [chapter, setChapter] = useState<GetChapterDataQuery['chapter']>(
19+
{} as GetChapterDataQuery['chapter']
20+
)
1721
const [topContributors, setTopContributors] = useState<Contributor[]>([])
1822
const [isLoading, setIsLoading] = useState<boolean>(true)
1923

20-
const { data, error: graphQLRequestError } = useQuery(GET_CHAPTER_DATA, {
24+
const { data, error: graphQLRequestError } = useQuery(GetChapterDataDocument, {
2125
variables: { key: chapterKey },
2226
})
2327

@@ -63,7 +67,7 @@ export default function ChapterDetailsPage() {
6367
<DetailsCard
6468
details={details}
6569
entityKey={chapter.key}
66-
geolocationData={[chapter]}
70+
geolocationData={[chapter]} // TODO: change the type of component
6771
isActive={chapter.isActive}
6872
socialLinks={chapter.relatedUrls}
6973
summary={chapter.summary}

frontend/src/app/committees/[committeeKey]/page.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@ import Link from 'next/link'
1111
import { useParams } from 'next/navigation'
1212
import { useState, useEffect } from 'react'
1313
import { ErrorDisplay, handleAppError } from 'app/global-error'
14-
import { GET_COMMITTEE_DATA } from 'server/queries/committeeQueries'
15-
import type { Committee } from 'types/committee'
14+
import {
15+
GetCommitteeDataDocument,
16+
GetCommitteeDataQuery,
17+
} from 'types/__generated__/committeeQueries.generated'
1618
import type { Contributor } from 'types/contributor'
1719
import { formatDate } from 'utils/dateFormatter'
1820
import DetailsCard from 'components/CardDetailsPage'
1921
import LoadingSpinner from 'components/LoadingSpinner'
2022

2123
export default function CommitteeDetailsPage() {
2224
const { committeeKey } = useParams<{ committeeKey: string }>()
23-
const [committee, setCommittee] = useState<Committee | null>(null)
25+
const [committee, setCommittee] = useState<GetCommitteeDataQuery['committee'] | null>(null)
2426
const [topContributors, setTopContributors] = useState<Contributor[]>([])
2527
const [isLoading, setIsLoading] = useState<boolean>(true)
2628

27-
const { data, error: graphQLRequestError } = useQuery(GET_COMMITTEE_DATA, {
29+
const { data, error: graphQLRequestError } = useQuery(GetCommitteeDataDocument, {
2830
variables: { key: committeeKey },
2931
})
3032

frontend/src/app/members/[memberKey]/page.tsx

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,22 @@ import { useParams } from 'next/navigation'
1212
import { useTheme } from 'next-themes'
1313
import React, { useState, useEffect, useRef } from 'react'
1414
import { handleAppError, ErrorDisplay } from 'app/global-error'
15-
import { GET_USER_DATA } from 'server/queries/userQueries'
16-
import type { Issue } from 'types/issue'
17-
import type { Milestone } from 'types/milestone'
18-
import type { RepositoryCardProps } from 'types/project'
19-
import type { PullRequest } from 'types/pullRequest'
20-
import type { Release } from 'types/release'
21-
import type { UserDetails } from 'types/user'
15+
import { GetUserDataDocument, GetUserDataQuery } from 'types/__generated__/userQueries.generated'
2216
import { formatDate } from 'utils/dateFormatter'
2317
import { drawContributions, fetchHeatmapData, HeatmapData } from 'utils/helpers/githubHeatmap'
2418
import DetailsCard from 'components/CardDetailsPage'
2519
import LoadingSpinner from 'components/LoadingSpinner'
2620

2721
const UserDetailsPage: React.FC = () => {
28-
const { memberKey } = useParams()
29-
const [user, setUser] = useState<UserDetails | null>()
30-
const [issues, setIssues] = useState<Issue[]>([])
31-
const [topRepositories, setTopRepositories] = useState<RepositoryCardProps[]>([])
32-
const [milestones, setMilestones] = useState<Milestone[]>([])
33-
const [pullRequests, setPullRequests] = useState<PullRequest[]>([])
34-
const [releases, setReleases] = useState<Release[]>([])
22+
const { memberKey } = useParams<{ memberKey: string }>()
23+
const [user, setUser] = useState<GetUserDataQuery['user'] | null>()
24+
const [issues, setIssues] = useState<GetUserDataQuery['recentIssues']>([])
25+
const [topRepositories, setTopRepositories] = useState<
26+
GetUserDataQuery['topContributedRepositories']
27+
>([])
28+
const [milestones, setMilestones] = useState<GetUserDataQuery['recentMilestones']>([])
29+
const [pullRequests, setPullRequests] = useState<GetUserDataQuery['recentPullRequests']>([])
30+
const [releases, setReleases] = useState<GetUserDataQuery['recentReleases']>([])
3531
const [data, setData] = useState<HeatmapData>({} as HeatmapData)
3632
const [isLoading, setIsLoading] = useState<boolean>(true)
3733
const [username, setUsername] = useState('')
@@ -40,7 +36,7 @@ const UserDetailsPage: React.FC = () => {
4036
const canvasRef = useRef<HTMLCanvasElement | null>(null)
4137
const theme = 'blue'
4238

43-
const { data: graphQLData, error: graphQLRequestError } = useQuery(GET_USER_DATA, {
39+
const { data: graphQLData, error: graphQLRequestError } = useQuery(GetUserDataDocument, {
4440
variables: { key: memberKey },
4541
})
4642

frontend/src/app/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,22 @@ import upperFirst from 'lodash/upperFirst'
44
import { useParams } from 'next/navigation'
55
import { useEffect, useState } from 'react'
66
import { ErrorDisplay, handleAppError } from 'app/global-error'
7-
import { GET_PROGRAM_ADMINS_AND_MODULES } from 'server/queries/moduleQueries'
8-
import type { Module } from 'types/mentorship'
7+
import {
8+
GetProgramAdminsAndModulesDocument,
9+
GetProgramAdminsAndModulesQuery,
10+
} from 'types/__generated__/moduleQueries.generated'
911
import { formatDate } from 'utils/dateFormatter'
1012
import DetailsCard from 'components/CardDetailsPage'
1113
import LoadingSpinner from 'components/LoadingSpinner'
1214
import { getSimpleDuration } from 'components/ModuleCard'
1315

1416
const ModuleDetailsPage = () => {
15-
const { programKey, moduleKey } = useParams()
16-
const [module, setModule] = useState<Module | null>(null)
17+
const { programKey, moduleKey } = useParams<{ programKey: string; moduleKey: string }>()
18+
const [module, setModule] = useState<GetProgramAdminsAndModulesQuery['getModule'] | null>(null)
1719
const [admins, setAdmins] = useState(null)
1820
const [isLoading, setIsLoading] = useState(true)
1921

20-
const { data, error } = useQuery(GET_PROGRAM_ADMINS_AND_MODULES, {
22+
const { data, error } = useQuery(GetProgramAdminsAndModulesDocument, {
2123
variables: {
2224
programKey,
2325
moduleKey,
@@ -49,11 +51,11 @@ const ModuleDetailsPage = () => {
4951

5052
const moduleDetails = [
5153
{ label: 'Experience Level', value: upperFirst(module.experienceLevel) },
52-
{ label: 'Start Date', value: formatDate(module.startedAt) },
53-
{ label: 'End Date', value: formatDate(module.endedAt) },
54+
{ label: 'Start Date', value: formatDate(module.startedAt as string) },
55+
{ label: 'End Date', value: formatDate(module.endedAt as string) },
5456
{
5557
label: 'Duration',
56-
value: getSimpleDuration(module.startedAt, module.endedAt),
58+
value: getSimpleDuration(module.startedAt as string, module.endedAt as string),
5759
},
5860
]
5961

frontend/src/app/mentorship/programs/[programKey]/page.tsx

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ import upperFirst from 'lodash/upperFirst'
44
import { useParams, useSearchParams, useRouter } from 'next/navigation'
55
import { useEffect, useState } from 'react'
66
import { ErrorDisplay } from 'app/global-error'
7-
import { GET_PROGRAM_AND_MODULES } from 'server/queries/programsQueries'
8-
import type { Module, Program } from 'types/mentorship'
7+
import {
8+
GetProgramAndModulesDocument,
9+
GetProgramAndModulesQuery,
10+
} from 'types/__generated__/programsQueries.generated'
911
import { formatDate } from 'utils/dateFormatter'
1012
import DetailsCard from 'components/CardDetailsPage'
1113
import LoadingSpinner from 'components/LoadingSpinner'
@@ -19,14 +21,14 @@ const ProgramDetailsPage = () => {
1921
data,
2022
refetch,
2123
loading: isQueryLoading,
22-
} = useQuery(GET_PROGRAM_AND_MODULES, {
24+
} = useQuery(GetProgramAndModulesDocument, {
2325
variables: { programKey },
2426
skip: !programKey,
2527
notifyOnNetworkStatusChange: true,
2628
})
2729

28-
const [program, setProgram] = useState<Program | null>(null)
29-
const [modules, setModules] = useState<Module[]>([])
30+
const [program, setProgram] = useState<GetProgramAndModulesQuery['getProgram'] | null>(null)
31+
const [modules, setModules] = useState<GetProgramAndModulesQuery['getProgramModules']>([])
3032
const [isRefetching, setIsRefetching] = useState(false)
3133

3234
const isLoading = isQueryLoading || isRefetching
@@ -70,8 +72,8 @@ const ProgramDetailsPage = () => {
7072

7173
const programDetails = [
7274
{ label: 'Status', value: upperFirst(program.status) },
73-
{ label: 'Start Date', value: formatDate(program.startedAt) },
74-
{ label: 'End Date', value: formatDate(program.endedAt) },
75+
{ label: 'Start Date', value: formatDate(program.startedAt as string) },
76+
{ label: 'End Date', value: formatDate(program.endedAt as string) },
7577
{ label: 'Mentees Limit', value: String(program.menteesLimit) },
7678
{
7779
label: 'Experience Levels',

frontend/src/app/my/mentorship/page.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,11 @@ import { useRouter, useSearchParams } from 'next/navigation'
88
import { useSession } from 'next-auth/react'
99
import React, { useEffect, useMemo, useState } from 'react'
1010

11-
import { GET_MY_PROGRAMS } from 'server/queries/programsQueries'
11+
import {
12+
GetMyProgramsDocument,
13+
GetMyProgramsQuery,
14+
} from 'types/__generated__/programsQueries.generated'
1215
import type { ExtendedSession } from 'types/auth'
13-
import type { Program } from 'types/mentorship'
1416

1517
import ActionButton from 'components/ActionButton'
1618
import LoadingSpinner from 'components/LoadingSpinner'
@@ -29,7 +31,7 @@ const MyMentorshipPage: React.FC = () => {
2931
const [searchQuery, setSearchQuery] = useState(initialQuery)
3032
const [debouncedQuery, setDebouncedQuery] = useState(initialQuery)
3133
const [page, setPage] = useState(initialPage)
32-
const [programs, setPrograms] = useState<Program[]>([])
34+
const [programs, setPrograms] = useState<GetMyProgramsQuery['myPrograms']['programs']>([])
3335
const [totalPages, setTotalPages] = useState(1)
3436

3537
const debounceSearch = useMemo(() => debounce((q) => setDebouncedQuery(q), 400), [])
@@ -53,7 +55,7 @@ const MyMentorshipPage: React.FC = () => {
5355
data: programData,
5456
loading: loadingPrograms,
5557
error,
56-
} = useQuery(GET_MY_PROGRAMS, {
58+
} = useQuery(GetMyProgramsDocument, {
5759
variables: { search: debouncedQuery, page, limit: 24 },
5860
fetchPolicy: 'cache-and-network',
5961
errorPolicy: 'all',
@@ -138,7 +140,7 @@ const MyMentorshipPage: React.FC = () => {
138140
<ProgramCard
139141
accessLevel="admin"
140142
key={p.id}
141-
program={p}
143+
program={p} // TODO: fix component type
142144
onEdit={handleEdit}
143145
onView={handleView}
144146
/>

frontend/src/app/my/mentorship/programs/[programKey]/edit/page.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import type React from 'react'
77
import { useState, useEffect } from 'react'
88
import { ErrorDisplay, handleAppError } from 'app/global-error'
99
import { UPDATE_PROGRAM } from 'server/mutations/programsMutations'
10-
import { GET_PROGRAM_DETAILS } from 'server/queries/programsQueries'
10+
import { GetProgramDetailsDocument } from 'types/__generated__/programsQueries.generated'
1111
import type { ExtendedSession } from 'types/auth'
1212
import { formatDateForInput } from 'utils/dateFormatter'
1313
import { parseCommaSeparated } from 'utils/parser'
@@ -23,7 +23,7 @@ const EditProgramPage = () => {
2323
data,
2424
error,
2525
loading: queryLoading,
26-
} = useQuery(GET_PROGRAM_DETAILS, {
26+
} = useQuery(GetProgramDetailsDocument, {
2727
variables: { programKey },
2828
skip: !programKey,
2929
fetchPolicy: 'network-only',
@@ -74,8 +74,8 @@ const EditProgramPage = () => {
7474
name: program.name || '',
7575
description: program.description || '',
7676
menteesLimit: program.menteesLimit ?? 5,
77-
startedAt: formatDateForInput(program.startedAt),
78-
endedAt: formatDateForInput(program.endedAt),
77+
startedAt: formatDateForInput(program.startedAt as string),
78+
endedAt: formatDateForInput(program.endedAt as string),
7979
tags: (program.tags || []).join(', '),
8080
domains: (program.domains || []).join(', '),
8181
adminLogins: (program.admins || [])

frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,22 @@ import upperFirst from 'lodash/upperFirst'
44
import { useParams } from 'next/navigation'
55
import { useEffect, useState } from 'react'
66
import { ErrorDisplay, handleAppError } from 'app/global-error'
7-
import { GET_PROGRAM_ADMINS_AND_MODULES } from 'server/queries/moduleQueries'
8-
import type { Module } from 'types/mentorship'
7+
import {
8+
GetProgramAdminsAndModulesDocument,
9+
GetProgramAdminsAndModulesQuery,
10+
} from 'types/__generated__/moduleQueries.generated'
911
import { formatDate } from 'utils/dateFormatter'
1012
import DetailsCard from 'components/CardDetailsPage'
1113
import LoadingSpinner from 'components/LoadingSpinner'
1214
import { getSimpleDuration } from 'components/ModuleCard'
1315

1416
const ModuleDetailsPage = () => {
15-
const { programKey, moduleKey } = useParams()
16-
const [module, setModule] = useState<Module | null>(null)
17+
const { programKey, moduleKey } = useParams<{ programKey: string; moduleKey: string }>()
18+
const [module, setModule] = useState<GetProgramAdminsAndModulesQuery['getModule'] | null>(null)
1719
const [admins, setAdmins] = useState(null)
1820
const [isLoading, setIsLoading] = useState(true)
1921

20-
const { data, error } = useQuery(GET_PROGRAM_ADMINS_AND_MODULES, {
22+
const { data, error } = useQuery(GetProgramAdminsAndModulesDocument, {
2123
variables: {
2224
programKey,
2325
moduleKey,
@@ -49,11 +51,11 @@ const ModuleDetailsPage = () => {
4951

5052
const moduleDetails = [
5153
{ label: 'Experience Level', value: upperFirst(module.experienceLevel) },
52-
{ label: 'Start Date', value: formatDate(module.startedAt) },
53-
{ label: 'End Date', value: formatDate(module.endedAt) },
54+
{ label: 'Start Date', value: formatDate(module.startedAt as string) },
55+
{ label: 'End Date', value: formatDate(module.endedAt as string) },
5456
{
5557
label: 'Duration',
56-
value: getSimpleDuration(module.startedAt, module.endedAt),
58+
value: getSimpleDuration(module.startedAt as string, module.endedAt as string),
5759
},
5860
]
5961

0 commit comments

Comments
 (0)