(null)
const [admins, setAdmins] = useState(null)
const [isLoading, setIsLoading] = useState(true)
- const { data, error } = useQuery(GET_PROGRAM_ADMINS_AND_MODULES, {
+ const { data, error } = useQuery(GetProgramAdminsAndModulesDocument, {
variables: {
programKey,
moduleKey,
diff --git a/frontend/src/app/mentorship/programs/[programKey]/page.tsx b/frontend/src/app/mentorship/programs/[programKey]/page.tsx
index ccd7bbd687..cf23164bb2 100644
--- a/frontend/src/app/mentorship/programs/[programKey]/page.tsx
+++ b/frontend/src/app/mentorship/programs/[programKey]/page.tsx
@@ -1,12 +1,11 @@
'use client'
-
-import { useQuery } from '@apollo/client'
-import upperFirst from 'lodash/upperFirst'
+import { useQuery } from '@apollo/client/react'
+import { capitalize } from 'lodash'
import { useParams, useSearchParams, useRouter } from 'next/navigation'
import { useEffect, useState } from 'react'
import { ErrorDisplay } from 'app/global-error'
-import { GET_PROGRAM_AND_MODULES } from 'server/queries/programsQueries'
-import type { Module, Program } from 'types/mentorship'
+import { GetProgramAndModulesDocument } from 'types/__generated__/programsQueries.generated'
+import type { Program, Module } from 'types/mentorship'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
@@ -20,7 +19,7 @@ const ProgramDetailsPage = () => {
data,
refetch,
loading: isQueryLoading,
- } = useQuery(GET_PROGRAM_AND_MODULES, {
+ } = useQuery(GetProgramAndModulesDocument, {
variables: { programKey },
skip: !programKey,
notifyOnNetworkStatusChange: true,
@@ -70,7 +69,7 @@ const ProgramDetailsPage = () => {
}
const programDetails = [
- { label: 'Status', value: upperFirst(program.status) },
+ { label: 'Status', value: capitalize(program.status) },
{ label: 'Start Date', value: formatDate(program.startedAt) },
{ label: 'End Date', value: formatDate(program.endedAt) },
{ label: 'Mentees Limit', value: String(program.menteesLimit) },
diff --git a/frontend/src/app/mentorship/programs/page.tsx b/frontend/src/app/mentorship/programs/page.tsx
index 66f78a897e..4f4f12c151 100644
--- a/frontend/src/app/mentorship/programs/page.tsx
+++ b/frontend/src/app/mentorship/programs/page.tsx
@@ -2,6 +2,7 @@
import { useSearchPage } from 'hooks/useSearchPage'
import { useRouter } from 'next/navigation'
+import { ProgramStatusEnum } from 'types/__generated__/graphql'
import { Program } from 'types/mentorship'
import ProgramCard from 'components/ProgramCard'
import SearchPageLayout from 'components/SearchPageLayout'
@@ -51,7 +52,7 @@ const ProgramsPage = () => {
totalPages={totalPages}
>
- {programs && programs.filter((p) => p.status === 'published').map(renderProgramCard)}
+ {programs?.filter((p) => p.status === ProgramStatusEnum.Published).map(renderProgramCard)}
)
diff --git a/frontend/src/app/my/mentorship/page.tsx b/frontend/src/app/my/mentorship/page.tsx
index 183a3a8ecb..b95f6b5466 100644
--- a/frontend/src/app/my/mentorship/page.tsx
+++ b/frontend/src/app/my/mentorship/page.tsx
@@ -1,6 +1,5 @@
'use client'
-
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import { faPlus, faGraduationCap } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { addToast } from '@heroui/toast'
@@ -9,10 +8,10 @@ import { useRouter, useSearchParams } from 'next/navigation'
import { useSession } from 'next-auth/react'
import React, { useEffect, useMemo, useState } from 'react'
-import { GET_MY_PROGRAMS } from 'server/queries/programsQueries'
+import { GetMyProgramsDocument } from 'types/__generated__/programsQueries.generated'
import type { ExtendedSession } from 'types/auth'
-import type { Program } from 'types/mentorship'
+import type { Program } from 'types/mentorship'
import ActionButton from 'components/ActionButton'
import LoadingSpinner from 'components/LoadingSpinner'
import ProgramCard from 'components/ProgramCard'
@@ -54,7 +53,7 @@ const MyMentorshipPage: React.FC = () => {
data: programData,
loading: loadingPrograms,
error,
- } = useQuery(GET_MY_PROGRAMS, {
+ } = useQuery(GetMyProgramsDocument, {
variables: { search: debouncedQuery, page, limit: 24 },
fetchPolicy: 'cache-and-network',
errorPolicy: 'all',
diff --git a/frontend/src/app/my/mentorship/programs/[programKey]/edit/page.tsx b/frontend/src/app/my/mentorship/programs/[programKey]/edit/page.tsx
index cdfcec0ca1..7fc59543ec 100644
--- a/frontend/src/app/my/mentorship/programs/[programKey]/edit/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/[programKey]/edit/page.tsx
@@ -1,13 +1,14 @@
'use client'
-import { useQuery, useMutation } from '@apollo/client'
+import { useMutation, useQuery } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useRouter, useParams } from 'next/navigation'
import { useSession } from 'next-auth/react'
import type React from 'react'
import { useState, useEffect } from 'react'
import { ErrorDisplay, handleAppError } from 'app/global-error'
-import { UPDATE_PROGRAM } from 'server/mutations/programsMutations'
-import { GET_PROGRAM_DETAILS } from 'server/queries/programsQueries'
+import { ProgramStatusEnum } from 'types/__generated__/graphql'
+import { UpdateProgramDocument } from 'types/__generated__/programsMutations.generated'
+import { GetProgramDetailsDocument } from 'types/__generated__/programsQueries.generated'
import type { ExtendedSession } from 'types/auth'
import { formatDateForInput } from 'utils/dateFormatter'
import { parseCommaSeparated } from 'utils/parser'
@@ -18,12 +19,12 @@ const EditProgramPage = () => {
const router = useRouter()
const { programKey } = useParams() as { programKey: string }
const { data: session, status: sessionStatus } = useSession()
- const [updateProgram, { loading: mutationLoading }] = useMutation(UPDATE_PROGRAM)
+ const [updateProgram, { loading: mutationLoading }] = useMutation(UpdateProgramDocument)
const {
data,
error,
loading: queryLoading,
- } = useQuery(GET_PROGRAM_DETAILS, {
+ } = useQuery(GetProgramDetailsDocument, {
variables: { programKey },
skip: !programKey,
fetchPolicy: 'network-only',
@@ -37,7 +38,7 @@ const EditProgramPage = () => {
tags: '',
domains: '',
adminLogins: '',
- status: 'DRAFT',
+ status: ProgramStatusEnum.Draft,
})
const [accessStatus, setAccessStatus] = useState<'checking' | 'allowed' | 'denied'>('checking')
useEffect(() => {
@@ -81,7 +82,7 @@ const EditProgramPage = () => {
adminLogins: (program.admins || [])
.map((admin: { login: string }) => admin.login)
.join(', '),
- status: program.status || 'DRAFT',
+ status: program.status || ProgramStatusEnum.Draft,
})
} else if (error) {
handleAppError(error)
diff --git a/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/edit/page.tsx b/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/edit/page.tsx
index 679eeeb803..1303d1ffcf 100644
--- a/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/edit/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/edit/page.tsx
@@ -1,15 +1,15 @@
'use client'
-
-import { useMutation, useQuery } from '@apollo/client'
+import { useMutation, useQuery } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useParams, useRouter } from 'next/navigation'
import { useSession } from 'next-auth/react'
import React, { useEffect, useState } from 'react'
import { ErrorDisplay, handleAppError } from 'app/global-error'
-import { UPDATE_MODULE } from 'server/mutations/moduleMutations'
-import { GET_PROGRAM_ADMINS_AND_MODULES } from 'server/queries/moduleQueries'
+import { ExperienceLevelEnum } from 'types/__generated__/graphql'
+import { UpdateModuleDocument } from 'types/__generated__/moduleMutations.generated'
+import { GetProgramAdminsAndModulesDocument } from 'types/__generated__/moduleQueries.generated'
import type { ExtendedSession } from 'types/auth'
-import { EXPERIENCE_LEVELS, type ModuleFormData } from 'types/mentorship'
+import type { ModuleFormData } from 'types/mentorship'
import { formatDateForInput } from 'utils/dateFormatter'
import { parseCommaSeparated } from 'utils/parser'
import LoadingSpinner from 'components/LoadingSpinner'
@@ -23,13 +23,13 @@ const EditModulePage = () => {
const [formData, setFormData] = useState(null)
const [accessStatus, setAccessStatus] = useState<'checking' | 'allowed' | 'denied'>('checking')
- const [updateModule, { loading: mutationLoading }] = useMutation(UPDATE_MODULE)
+ const [updateModule, { loading: mutationLoading }] = useMutation(UpdateModuleDocument)
const {
data,
loading: queryLoading,
error: queryError,
- } = useQuery(GET_PROGRAM_ADMINS_AND_MODULES, {
+ } = useQuery(GetProgramAdminsAndModulesDocument, {
variables: { programKey, moduleKey },
skip: !programKey || !moduleKey,
fetchPolicy: 'network-only',
@@ -76,7 +76,7 @@ const EditModulePage = () => {
setFormData({
name: m.name || '',
description: m.description || '',
- experienceLevel: m.experienceLevel || EXPERIENCE_LEVELS.BEGINNER,
+ experienceLevel: m.experienceLevel || ExperienceLevelEnum.Beginner,
startedAt: formatDateForInput(m.startedAt),
endedAt: formatDateForInput(m.endedAt),
domains: (m.domains || []).join(', '),
@@ -98,7 +98,7 @@ const EditModulePage = () => {
programKey: programKey,
name: formData.name,
description: formData.description,
- experienceLevel: formData.experienceLevel,
+ experienceLevel: formData.experienceLevel as ExperienceLevelEnum,
startedAt: formData.startedAt || null,
endedAt: formData.endedAt || null,
domains: parseCommaSeparated(formData.domains),
diff --git a/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx b/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx
index dc0a7356b9..cab94214e7 100644
--- a/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/[programKey]/modules/[moduleKey]/page.tsx
@@ -1,24 +1,23 @@
'use client'
-
-import { useQuery } from '@apollo/client'
-import upperFirst from 'lodash/upperFirst'
+import { useQuery } from '@apollo/client/react'
+import { capitalize } from 'lodash'
import { useParams } from 'next/navigation'
import { useEffect, useState } from 'react'
import { ErrorDisplay, handleAppError } from 'app/global-error'
-import { GET_PROGRAM_ADMINS_AND_MODULES } from 'server/queries/moduleQueries'
-import type { Module } from 'types/mentorship'
+import { GetProgramAdminsAndModulesDocument } from 'types/__generated__/moduleQueries.generated'
+import { Module } from 'types/mentorship'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
import { getSimpleDuration } from 'components/ModuleCard'
const ModuleDetailsPage = () => {
- const { programKey, moduleKey } = useParams()
+ const { programKey, moduleKey } = useParams<{ programKey: string; moduleKey: string }>()
const [module, setModule] = useState(null)
const [admins, setAdmins] = useState(null)
const [isLoading, setIsLoading] = useState(true)
- const { data, error } = useQuery(GET_PROGRAM_ADMINS_AND_MODULES, {
+ const { data, error } = useQuery(GetProgramAdminsAndModulesDocument, {
variables: {
programKey,
moduleKey,
@@ -49,7 +48,7 @@ const ModuleDetailsPage = () => {
}
const moduleDetails = [
- { label: 'Experience Level', value: upperFirst(module.experienceLevel) },
+ { label: 'Experience Level', value: capitalize(module.experienceLevel) },
{ label: 'Start Date', value: formatDate(module.startedAt) },
{ label: 'End Date', value: formatDate(module.endedAt) },
{
diff --git a/frontend/src/app/my/mentorship/programs/[programKey]/modules/create/page.tsx b/frontend/src/app/my/mentorship/programs/[programKey]/modules/create/page.tsx
index 8cc96d6d5b..a6416ee4ca 100644
--- a/frontend/src/app/my/mentorship/programs/[programKey]/modules/create/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/[programKey]/modules/create/page.tsx
@@ -1,15 +1,14 @@
'use client'
-
-import { useMutation, useQuery } from '@apollo/client'
+import { useMutation, useQuery } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useRouter, useParams } from 'next/navigation'
import { useSession } from 'next-auth/react'
import React, { useEffect, useState } from 'react'
import { ErrorDisplay } from 'app/global-error'
-import { CREATE_MODULE } from 'server/mutations/moduleMutations'
-import { GET_PROGRAM_ADMIN_DETAILS } from 'server/queries/programsQueries'
+import { ExperienceLevelEnum } from 'types/__generated__/graphql'
+import { CreateModuleDocument } from 'types/__generated__/moduleMutations.generated'
+import { GetProgramAdminDetailsDocument } from 'types/__generated__/programsQueries.generated'
import type { ExtendedSession } from 'types/auth'
-import { EXPERIENCE_LEVELS } from 'types/mentorship'
import { parseCommaSeparated } from 'utils/parser'
import LoadingSpinner from 'components/LoadingSpinner'
import ModuleForm from 'components/ModuleForm'
@@ -19,13 +18,13 @@ const CreateModulePage = () => {
const { programKey } = useParams() as { programKey: string }
const { data: sessionData, status: sessionStatus } = useSession()
- const [createModule, { loading: mutationLoading }] = useMutation(CREATE_MODULE)
+ const [createModule, { loading: mutationLoading }] = useMutation(CreateModuleDocument)
const {
data: programData,
loading: queryLoading,
error: queryError,
- } = useQuery(GET_PROGRAM_ADMIN_DETAILS, {
+ } = useQuery(GetProgramAdminDetailsDocument, {
variables: { programKey },
skip: !programKey,
fetchPolicy: 'network-only',
@@ -34,7 +33,7 @@ const CreateModulePage = () => {
const [formData, setFormData] = useState({
name: '',
description: '',
- experienceLevel: EXPERIENCE_LEVELS.BEGINNER,
+ experienceLevel: ExperienceLevelEnum.Beginner,
startedAt: '',
endedAt: '',
domains: '',
diff --git a/frontend/src/app/my/mentorship/programs/[programKey]/page.tsx b/frontend/src/app/my/mentorship/programs/[programKey]/page.tsx
index a28ef94602..c386ef1b44 100644
--- a/frontend/src/app/my/mentorship/programs/[programKey]/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/[programKey]/page.tsx
@@ -1,17 +1,16 @@
'use client'
-
-import { useQuery, useMutation } from '@apollo/client'
+import { useMutation, useQuery } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
-import upperFirst from 'lodash/upperFirst'
+import { capitalize } from 'lodash'
import { useParams, useSearchParams, useRouter } from 'next/navigation'
import { useSession } from 'next-auth/react'
import { useEffect, useMemo, useState } from 'react'
import { ErrorDisplay, handleAppError } from 'app/global-error'
-import { UPDATE_PROGRAM_STATUS_MUTATION } from 'server/mutations/programsMutations'
-import { GET_PROGRAM_AND_MODULES } from 'server/queries/programsQueries'
+import { ProgramStatusEnum } from 'types/__generated__/graphql'
+import { UpdateProgramStatusDocument } from 'types/__generated__/programsMutations.generated'
+import { GetProgramAndModulesDocument } from 'types/__generated__/programsQueries.generated'
import type { ExtendedSession } from 'types/auth'
-import type { Module, Program } from 'types/mentorship'
-import { ProgramStatusEnum } from 'types/mentorship'
+import type { Program, Module } from 'types/mentorship'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
@@ -29,7 +28,7 @@ const ProgramDetailsPage = () => {
const [modules, setModules] = useState([])
const [isRefetching, setIsRefetching] = useState(false)
- const [updateProgram] = useMutation(UPDATE_PROGRAM_STATUS_MUTATION, {
+ const [updateProgram] = useMutation(UpdateProgramStatusDocument, {
onError: handleAppError,
})
@@ -37,7 +36,7 @@ const ProgramDetailsPage = () => {
data,
refetch,
loading: isQueryLoading,
- } = useQuery(GET_PROGRAM_AND_MODULES, {
+ } = useQuery(GetProgramAndModulesDocument, {
variables: { programKey },
skip: !programKey,
notifyOnNetworkStatusChange: true,
@@ -76,11 +75,11 @@ const ProgramDetailsPage = () => {
status: newStatus,
},
},
- refetchQueries: [{ query: GET_PROGRAM_AND_MODULES, variables: { programKey } }],
+ refetchQueries: [{ query: GetProgramAndModulesDocument, variables: { programKey } }],
})
addToast({
- title: `Program status updated to ${upperFirst(newStatus)}`,
+ title: `Program status updated to ${capitalize(newStatus)}`,
description: 'The status has been successfully updated.',
variant: 'solid',
color: 'success',
@@ -128,7 +127,7 @@ const ProgramDetailsPage = () => {
}
const programDetails = [
- { label: 'Status', value: upperFirst(program.status) },
+ { label: 'Status', value: capitalize(program.status) },
{ label: 'Start Date', value: formatDate(program.startedAt) },
{ label: 'End Date', value: formatDate(program.endedAt) },
{ label: 'Mentees Limit', value: String(program.menteesLimit) },
diff --git a/frontend/src/app/my/mentorship/programs/create/page.tsx b/frontend/src/app/my/mentorship/programs/create/page.tsx
index 3b3c0cbd37..d6a438d1d9 100644
--- a/frontend/src/app/my/mentorship/programs/create/page.tsx
+++ b/frontend/src/app/my/mentorship/programs/create/page.tsx
@@ -1,12 +1,11 @@
'use client'
-
-import { useMutation } from '@apollo/client'
+import { useMutation } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useRouter } from 'next/navigation'
import { useSession } from 'next-auth/react'
import React, { useEffect, useState } from 'react'
-import { CREATE_PROGRAM } from 'server/mutations/programsMutations'
+import { CreateProgramDocument } from 'types/__generated__/programsMutations.generated'
import { ExtendedSession } from 'types/auth'
import { parseCommaSeparated } from 'utils/parser'
import LoadingSpinner from 'components/LoadingSpinner'
@@ -19,7 +18,7 @@ const CreateProgramPage = () => {
const [redirected, setRedirected] = useState(false)
- const [createProgram, { loading }] = useMutation(CREATE_PROGRAM)
+ const [createProgram, { loading }] = useMutation(CreateProgramDocument)
const [formData, setFormData] = useState({
name: '',
diff --git a/frontend/src/app/organizations/[organizationKey]/layout.tsx b/frontend/src/app/organizations/[organizationKey]/layout.tsx
index bd595f7954..3784ee5157 100644
--- a/frontend/src/app/organizations/[organizationKey]/layout.tsx
+++ b/frontend/src/app/organizations/[organizationKey]/layout.tsx
@@ -3,9 +3,9 @@ import Script from 'next/script'
import React from 'react'
import { apolloClient } from 'server/apolloClient'
import {
- GET_ORGANIZATION_METADATA,
- GET_ORGANIZATION_DATA,
-} from 'server/queries/organizationQueries'
+ GetOrganizationDataDocument,
+ GetOrganizationMetadataDocument,
+} from 'types/__generated__/organizationQueries.generated'
import { generateSeoMetadata } from 'utils/metaconfig'
export async function generateMetadata({
@@ -15,7 +15,7 @@ export async function generateMetadata({
}): Promise {
const { organizationKey } = await params
const { data } = await apolloClient.query({
- query: GET_ORGANIZATION_METADATA,
+ query: GetOrganizationMetadataDocument,
variables: {
login: organizationKey,
},
@@ -36,7 +36,7 @@ async function generateOrganizationStructuredData(organizationKey: string) {
// https://developers.google.com/search/docs/appearance/structured-data/organization#structured-data-type-definitions
const { data } = await apolloClient.query({
- query: GET_ORGANIZATION_DATA,
+ query: GetOrganizationDataDocument,
variables: {
login: organizationKey,
},
diff --git a/frontend/src/app/organizations/[organizationKey]/page.tsx b/frontend/src/app/organizations/[organizationKey]/page.tsx
index 614585ca1d..1541f91d95 100644
--- a/frontend/src/app/organizations/[organizationKey]/page.tsx
+++ b/frontend/src/app/organizations/[organizationKey]/page.tsx
@@ -1,5 +1,5 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import {
faCodeFork,
faExclamationCircle,
@@ -11,12 +11,12 @@ import Link from 'next/link'
import { useParams } from 'next/navigation'
import { useState, useEffect } from 'react'
import { handleAppError, ErrorDisplay } from 'app/global-error'
-import { GET_ORGANIZATION_DATA } from 'server/queries/organizationQueries'
+import { GetOrganizationDataDocument } from 'types/__generated__/organizationQueries.generated'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
const OrganizationDetailsPage = () => {
- const { organizationKey } = useParams()
+ const { organizationKey } = useParams<{ organizationKey: string }>()
const [organization, setOrganization] = useState(null)
const [issues, setIssues] = useState(null)
const [milestones, setMilestones] = useState(null)
@@ -25,7 +25,7 @@ const OrganizationDetailsPage = () => {
const [repositories, setRepositories] = useState(null)
const [topContributors, setTopContributors] = useState(null)
const [isLoading, setIsLoading] = useState(true)
- const { data: graphQLData, error: graphQLRequestError } = useQuery(GET_ORGANIZATION_DATA, {
+ const { data: graphQLData, error: graphQLRequestError } = useQuery(GetOrganizationDataDocument, {
variables: { login: organizationKey },
})
diff --git a/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/layout.tsx b/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/layout.tsx
index 5958bfadc5..877731db6e 100644
--- a/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/layout.tsx
+++ b/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/layout.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next'
import React from 'react'
import { apolloClient } from 'server/apolloClient'
-import { GET_REPOSITORY_METADATA } from 'server/queries/repositoryQueries'
+import { GetRepositoryMetadataDocument } from 'types/__generated__/repositoryQueries.generated'
import { generateSeoMetadata } from 'utils/metaconfig'
export async function generateMetadata({
@@ -14,7 +14,7 @@ export async function generateMetadata({
}): Promise {
const { repositoryKey, organizationKey } = await params
const { data } = await apolloClient.query({
- query: GET_REPOSITORY_METADATA,
+ query: GetRepositoryMetadataDocument,
variables: { organizationKey: organizationKey, repositoryKey: repositoryKey },
})
const repository = data?.repository
diff --git a/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/page.tsx b/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/page.tsx
index 05aa7329d4..8c67e6563c 100644
--- a/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/page.tsx
+++ b/frontend/src/app/organizations/[organizationKey]/repositories/[repositoryKey]/page.tsx
@@ -1,6 +1,5 @@
'use client'
-
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import {
faCodeCommit,
faCodeFork,
@@ -12,19 +11,22 @@ import Link from 'next/link'
import { useParams } from 'next/navigation'
import { useEffect, useState } from 'react'
import { handleAppError, ErrorDisplay } from 'app/global-error'
-import { GET_REPOSITORY_DATA } from 'server/queries/repositoryQueries'
+import { GetRepositoryDataDocument } from 'types/__generated__/repositoryQueries.generated'
import type { Contributor } from 'types/contributor'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
const RepositoryDetailsPage = () => {
- const { repositoryKey, organizationKey } = useParams()
+ const { repositoryKey, organizationKey } = useParams<{
+ repositoryKey: string
+ organizationKey: string
+ }>()
const [repository, setRepository] = useState(null)
const [topContributors, setTopContributors] = useState([])
const [recentPullRequests, setRecentPullRequests] = useState(null)
const [isLoading, setIsLoading] = useState(true)
- const { data, error: graphQLRequestError } = useQuery(GET_REPOSITORY_DATA, {
+ const { data, error: graphQLRequestError } = useQuery(GetRepositoryDataDocument, {
variables: { repositoryKey: repositoryKey, organizationKey: organizationKey },
})
useEffect(() => {
diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx
index 98de69bd54..96ae9e7226 100644
--- a/frontend/src/app/page.tsx
+++ b/frontend/src/app/page.tsx
@@ -1,5 +1,5 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import { IconProp } from '@fortawesome/fontawesome-svg-core'
import {
faBook,
@@ -21,7 +21,7 @@ import upperFirst from 'lodash/upperFirst'
import Link from 'next/link'
import { useEffect, useState } from 'react'
import { fetchAlgoliaData } from 'server/fetchAlgoliaData'
-import { GET_MAIN_PAGE_DATA } from 'server/queries/homeQueries'
+import { GetMainPageDataDocument } from 'types/__generated__/homeQueries.generated'
import type { AlgoliaResponse } from 'types/algolia'
import type { Chapter } from 'types/chapter'
import type { Event } from 'types/event'
@@ -47,7 +47,7 @@ import { TruncatedText } from 'components/TruncatedText'
export default function Home() {
const [isLoading, setIsLoading] = useState(true)
const [data, setData] = useState(null)
- const { data: graphQLData, error: graphQLRequestError } = useQuery(GET_MAIN_PAGE_DATA, {
+ const { data: graphQLData, error: graphQLRequestError } = useQuery(GetMainPageDataDocument, {
variables: { distinct: true },
})
diff --git a/frontend/src/app/projects/[projectKey]/layout.tsx b/frontend/src/app/projects/[projectKey]/layout.tsx
index e37c2307d2..1d8524007e 100644
--- a/frontend/src/app/projects/[projectKey]/layout.tsx
+++ b/frontend/src/app/projects/[projectKey]/layout.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next'
import React from 'react'
import { apolloClient } from 'server/apolloClient'
-import { GET_PROJECT_METADATA } from 'server/queries/projectQueries'
+import { GetProjectMetadataDocument } from 'types/__generated__/projectQueries.generated'
import { generateSeoMetadata } from 'utils/metaconfig'
export async function generateMetadata({
@@ -13,7 +13,7 @@ export async function generateMetadata({
}): Promise {
const { projectKey } = await params
const { data } = await apolloClient.query({
- query: GET_PROJECT_METADATA,
+ query: GetProjectMetadataDocument,
variables: {
key: projectKey,
},
diff --git a/frontend/src/app/projects/[projectKey]/page.tsx b/frontend/src/app/projects/[projectKey]/page.tsx
index aa5e88c852..9cab24fe93 100644
--- a/frontend/src/app/projects/[projectKey]/page.tsx
+++ b/frontend/src/app/projects/[projectKey]/page.tsx
@@ -1,5 +1,5 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import {
faCodeFork,
faExclamationCircle,
@@ -12,18 +12,18 @@ import Link from 'next/link'
import { useParams } from 'next/navigation'
import { useState, useEffect } from 'react'
import { ErrorDisplay, handleAppError } from 'app/global-error'
-import { GET_PROJECT_DATA } from 'server/queries/projectQueries'
+import { GetProjectDocument } from 'types/__generated__/projectQueries.generated'
import type { Contributor } from 'types/contributor'
import type { Project } from 'types/project'
import { formatDate } from 'utils/dateFormatter'
import DetailsCard from 'components/CardDetailsPage'
import LoadingSpinner from 'components/LoadingSpinner'
const ProjectDetailsPage = () => {
- const { projectKey } = useParams()
+ const { projectKey } = useParams<{ projectKey: string }>()
const [isLoading, setIsLoading] = useState(true)
const [project, setProject] = useState(null)
const [topContributors, setTopContributors] = useState([])
- const { data, error: graphQLRequestError } = useQuery(GET_PROJECT_DATA, {
+ const { data, error: graphQLRequestError } = useQuery(GetProjectDocument, {
variables: { key: projectKey },
})
useEffect(() => {
diff --git a/frontend/src/app/projects/dashboard/metrics/[projectKey]/page.tsx b/frontend/src/app/projects/dashboard/metrics/[projectKey]/page.tsx
index e64bebd0f2..08a934aa64 100644
--- a/frontend/src/app/projects/dashboard/metrics/[projectKey]/page.tsx
+++ b/frontend/src/app/projects/dashboard/metrics/[projectKey]/page.tsx
@@ -1,6 +1,5 @@
'use client'
-
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import {
faPeopleGroup,
faCodeFork,
@@ -15,7 +14,7 @@ import {
import { useParams } from 'next/navigation'
import { FC, useState, useEffect } from 'react'
import { handleAppError } from 'app/global-error'
-import { GET_PROJECT_HEALTH_METRICS_DETAILS } from 'server/queries/projectsHealthDashboardQueries'
+import { GetProjectHealthMetricsDetailsDocument } from 'types/__generated__/projectsHealthDashboardQueries.generated'
import { HealthMetricsProps } from 'types/healthMetrics'
import BarChart from 'components/BarChart'
import GeneralCompliantComponent from 'components/GeneralCompliantComponent'
@@ -25,14 +24,14 @@ import MetricsPDFButton from 'components/MetricsPDFButton'
import MetricsScoreCircle from 'components/MetricsScoreCircle'
const ProjectHealthMetricsDetails: FC = () => {
- const { projectKey } = useParams()
+ const { projectKey } = useParams<{ projectKey: string }>()
const [metricsList, setMetricsList] = useState()
const [metricsLatest, setMetricsLatest] = useState()
const {
loading,
error: graphqlError,
data,
- } = useQuery(GET_PROJECT_HEALTH_METRICS_DETAILS, {
+ } = useQuery(GetProjectHealthMetricsDetailsDocument, {
variables: { projectKey },
})
diff --git a/frontend/src/app/projects/dashboard/metrics/page.tsx b/frontend/src/app/projects/dashboard/metrics/page.tsx
index aa2344e0a2..fff7f67915 100644
--- a/frontend/src/app/projects/dashboard/metrics/page.tsx
+++ b/frontend/src/app/projects/dashboard/metrics/page.tsx
@@ -1,12 +1,12 @@
'use client'
-
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import { faFilter } from '@fortawesome/free-solid-svg-icons'
import { Pagination } from '@heroui/react'
import { useSearchParams, useRouter } from 'next/navigation'
import { FC, useState, useEffect } from 'react'
import { handleAppError } from 'app/global-error'
-import { GET_PROJECT_HEALTH_METRICS_LIST } from 'server/queries/projectsHealthDashboardQueries'
+import { Ordering } from 'types/__generated__/graphql'
+import { GetProjectHealthMetricsDocument } from 'types/__generated__/projectsHealthDashboardQueries.generated'
import { DropDownSectionProps } from 'types/DropDownSectionProps'
import { HealthMetricsProps } from 'types/healthMetrics'
import { getKeysLabels } from 'utils/getKeysLabels'
@@ -54,11 +54,11 @@ const MetricsPage: FC = () => {
let currentFilters = {}
let currentOrdering = {
- score: 'DESC',
+ score: Ordering.Desc,
}
const healthFilter = searchParams.get('health')
const levelFilter = searchParams.get('level')
- const orderingParam = searchParams.get('order')
+ const orderingParam = searchParams.get('order') as Ordering
const currentFilterKeys = []
if (healthFilter) {
currentFilters = {
@@ -75,7 +75,7 @@ const MetricsPage: FC = () => {
}
if (orderingParam) {
currentOrdering = {
- score: orderingParam.toUpperCase(),
+ score: orderingParam,
}
}
@@ -85,24 +85,27 @@ const MetricsPage: FC = () => {
const [filters, setFilters] = useState(currentFilters)
const [ordering, setOrdering] = useState(
currentOrdering || {
- score: 'DESC',
+ score: Ordering.Desc,
}
)
const [activeFilters, setActiveFilters] = useState(currentFilterKeys)
- const [activeOrdering, setActiveOrdering] = useState(orderingParam ? [orderingParam] : ['desc'])
+ const [activeOrdering, setActiveOrdering] = useState(
+ orderingParam ? [orderingParam] : [Ordering.Desc]
+ )
const {
data,
error: graphQLRequestError,
loading,
fetchMore,
- } = useQuery(GET_PROJECT_HEALTH_METRICS_LIST, {
+ } = useQuery(GetProjectHealthMetricsDocument, {
variables: {
filters,
pagination: { offset: 0, limit: PAGINATION_LIMIT },
ordering: [
ordering,
{
- ['project_Name']: 'ASC',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ project_Name: Ordering.Asc,
},
],
},
@@ -203,13 +206,13 @@ const MetricsPage: FC = () => {
selectionMode="single"
selectedKeys={activeOrdering}
selectedLabels={getKeysLabels(orderingSections, activeOrdering)}
- onAction={(key: string) => {
+ onAction={(key: Ordering) => {
// Reset pagination to the first page when changing ordering
setPagination({ offset: 0, limit: PAGINATION_LIMIT })
const newParams = new URLSearchParams(searchParams.toString())
newParams.set('order', key)
setOrdering({
- score: key.toUpperCase(),
+ score: key,
})
setActiveOrdering([key])
router.replace(`/projects/dashboard/metrics?${newParams.toString()}`)
@@ -254,7 +257,8 @@ const MetricsPage: FC = () => {
ordering: [
ordering,
{
- ['project_Name']: 'ASC',
+ // eslint-disable-next-line @typescript-eslint/naming-convention
+ project_Name: Ordering.Asc,
},
],
},
diff --git a/frontend/src/app/projects/dashboard/page.tsx b/frontend/src/app/projects/dashboard/page.tsx
index 6c0a15d0a5..8a1017e995 100644
--- a/frontend/src/app/projects/dashboard/page.tsx
+++ b/frontend/src/app/projects/dashboard/page.tsx
@@ -1,5 +1,5 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import type { IconProp } from '@fortawesome/fontawesome-svg-core'
import {
faCheck,
@@ -15,7 +15,7 @@ import {
import millify from 'millify'
import { useState, useEffect, FC } from 'react'
import { handleAppError } from 'app/global-error'
-import { GET_PROJECT_HEALTH_STATS } from 'server/queries/projectsHealthDashboardQueries'
+import { GetProjectHealthStatsDocument } from 'types/__generated__/projectsHealthDashboardQueries.generated'
import type { ProjectHealthStats } from 'types/projectHealthStats'
import DashboardCard from 'components/DashboardCard'
import DonutBarChart from 'components/DonutBarChart'
@@ -27,7 +27,7 @@ import ProjectTypeDashboardCard from 'components/ProjectTypeDashboardCard'
const ProjectsDashboardPage: FC = () => {
const [stats, setStats] = useState()
const [isLoading, setIsLoading] = useState(true)
- const { data, error: graphQLRequestError } = useQuery(GET_PROJECT_HEALTH_STATS)
+ const { data, error: graphQLRequestError } = useQuery(GetProjectHealthStatsDocument)
useEffect(() => {
if (data) {
diff --git a/frontend/src/app/settings/api-keys/page.tsx b/frontend/src/app/settings/api-keys/page.tsx
index 4380356f3a..94739c7f02 100644
--- a/frontend/src/app/settings/api-keys/page.tsx
+++ b/frontend/src/app/settings/api-keys/page.tsx
@@ -1,6 +1,5 @@
'use client'
-
-import { useMutation, useQuery } from '@apollo/client'
+import { useMutation, useQuery } from '@apollo/client/react'
import {
faSpinner,
faKey,
@@ -18,7 +17,11 @@ import { Input } from '@heroui/react'
import { addToast } from '@heroui/toast'
import { format, addDays } from 'date-fns'
import { useState } from 'react'
-import { CREATE_API_KEY, GET_API_KEYS, REVOKE_API_KEY } from 'server/queries/apiKeyQueries'
+import {
+ CreateApiKeyDocument,
+ GetApiKeysDocument,
+ RevokeApiKeyDocument,
+} from 'types/__generated__/apiKeyQueries.generated'
import type { ApiKey } from 'types/apiKey'
import SecondaryCard from 'components/SecondaryCard'
import { ApiKeysSkeleton } from 'components/skeletons/ApiKeySkelton'
@@ -33,12 +36,12 @@ export default function Page() {
const [newlyCreatedKey, setNewlyCreatedKey] = useState(null)
const [keyToRevoke, setKeyToRevoke] = useState(null)
- const { loading, error, data, refetch } = useQuery(GET_API_KEYS, {
+ const { loading, error, data, refetch } = useQuery(GetApiKeysDocument, {
notifyOnNetworkStatusChange: true,
errorPolicy: 'all',
})
- const [createApiKey, { loading: createLoading }] = useMutation(CREATE_API_KEY, {
+ const [createApiKey, { loading: createLoading }] = useMutation(CreateApiKeyDocument, {
onCompleted: (data) => {
const result = data.createApiKey
if (!result?.ok) {
@@ -62,7 +65,7 @@ export default function Page() {
},
})
- const [revokeApiKey] = useMutation(REVOKE_API_KEY, {
+ const [revokeApiKey] = useMutation(RevokeApiKeyDocument, {
onCompleted: () => {
addToast({ title: 'Success', description: 'API key revoked', color: 'success' })
refetch()
@@ -103,9 +106,9 @@ export default function Page() {
addToast({ title: 'Error', description: 'Please select an expiration date', color: 'danger' })
return
}
- const variables: { name: string; expiresAt: Date } = {
+ const variables: { name: string; expiresAt: string } = {
name: newKeyName.trim(),
- expiresAt: new Date(newKeyExpiry),
+ expiresAt: new Date(newKeyExpiry).toISOString(),
}
createApiKey({ variables })
}
diff --git a/frontend/src/app/snapshots/[id]/layout.tsx b/frontend/src/app/snapshots/[id]/layout.tsx
index b5d53f12b2..c8b9d5e82c 100644
--- a/frontend/src/app/snapshots/[id]/layout.tsx
+++ b/frontend/src/app/snapshots/[id]/layout.tsx
@@ -1,7 +1,7 @@
import { Metadata } from 'next'
import React from 'react'
import { apolloClient } from 'server/apolloClient'
-import { GET_SNAPSHOT_DETAILS_METADATA } from 'server/queries/snapshotQueries'
+import { GetSnapshotDetailsMetadataDocument } from 'types/__generated__/snapshotQueries.generated'
import { generateSeoMetadata } from 'utils/metaconfig'
export async function generateMetadata({
@@ -11,7 +11,7 @@ export async function generateMetadata({
}): Promise {
const { id: snapshotKey } = await params
const { data } = await apolloClient.query({
- query: GET_SNAPSHOT_DETAILS_METADATA,
+ query: GetSnapshotDetailsMetadataDocument,
variables: { key: snapshotKey },
})
const snapshot = data?.snapshot
diff --git a/frontend/src/app/snapshots/[id]/page.tsx b/frontend/src/app/snapshots/[id]/page.tsx
index 5dbcf8668d..2cfc0f215e 100644
--- a/frontend/src/app/snapshots/[id]/page.tsx
+++ b/frontend/src/app/snapshots/[id]/page.tsx
@@ -1,12 +1,12 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import { faCalendar } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { useRouter, useParams } from 'next/navigation'
import React, { useState, useEffect } from 'react'
import FontAwesomeIconWrapper from 'wrappers/FontAwesomeIconWrapper'
import { handleAppError, ErrorDisplay } from 'app/global-error'
-import { GET_SNAPSHOT_DETAILS } from 'server/queries/snapshotQueries'
+import { GetSnapshotDetailsDocument } from 'types/__generated__/snapshotQueries.generated'
import type { Chapter } from 'types/chapter'
import type { Project } from 'types/project'
import type { SnapshotDetails } from 'types/snapshot'
@@ -19,12 +19,12 @@ import LoadingSpinner from 'components/LoadingSpinner'
import Release from 'components/Release'
const SnapshotDetailsPage: React.FC = () => {
- const { id: snapshotKey } = useParams()
+ const { id: snapshotKey } = useParams<{ id: string }>()
const [snapshot, setSnapshot] = useState(null)
const [isLoading, setIsLoading] = useState(true)
const router = useRouter()
- const { data: graphQLData, error: graphQLRequestError } = useQuery(GET_SNAPSHOT_DETAILS, {
+ const { data: graphQLData, error: graphQLRequestError } = useQuery(GetSnapshotDetailsDocument, {
variables: { key: snapshotKey },
})
diff --git a/frontend/src/app/snapshots/page.tsx b/frontend/src/app/snapshots/page.tsx
index cf0312c0a8..724397e543 100644
--- a/frontend/src/app/snapshots/page.tsx
+++ b/frontend/src/app/snapshots/page.tsx
@@ -1,10 +1,10 @@
'use client'
-import { useQuery } from '@apollo/client'
+import { useQuery } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useRouter } from 'next/navigation'
import React, { useState, useEffect } from 'react'
import FontAwesomeIconWrapper from 'wrappers/FontAwesomeIconWrapper'
-import { GET_COMMUNITY_SNAPSHOTS } from 'server/queries/snapshotQueries'
+import { GetCommunitySnapshotsDocument } from 'types/__generated__/snapshotQueries.generated'
import type { Snapshot } from 'types/snapshot'
import LoadingSpinner from 'components/LoadingSpinner'
import SnapshotCard from 'components/SnapshotCard'
@@ -13,7 +13,7 @@ const SnapshotsPage: React.FC = () => {
const [snapshots, setSnapshots] = useState(null)
const [isLoading, setIsLoading] = useState(true)
- const { data: graphQLData, error: graphQLRequestError } = useQuery(GET_COMMUNITY_SNAPSHOTS)
+ const { data: graphQLData, error: graphQLRequestError } = useQuery(GetCommunitySnapshotsDocument)
useEffect(() => {
if (graphQLData) {
diff --git a/frontend/src/components/ModuleCard.tsx b/frontend/src/components/ModuleCard.tsx
index bec35281e7..d5f8cdb594 100644
--- a/frontend/src/components/ModuleCard.tsx
+++ b/frontend/src/components/ModuleCard.tsx
@@ -6,7 +6,7 @@ import {
faHourglassHalf,
} from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
-import upperFirst from 'lodash/upperFirst'
+import { capitalize } from 'lodash'
import { useRouter } from 'next/navigation'
import { useState } from 'react'
import type { Module } from 'types/mentorship'
@@ -82,7 +82,7 @@ const ModuleItem = ({ details }: { details: Module }) => {
>
-
+
void
+ setStatus: (
+ newStatus: ProgramStatusEnum.Draft | ProgramStatusEnum.Published | ProgramStatusEnum.Completed
+ ) => void
}
const ProgramActions: React.FC = ({ status, setStatus }) => {
@@ -25,13 +28,13 @@ const ProgramActions: React.FC = ({ status, setStatus }) =>
router.push(`${window.location.pathname}/modules/create`)
break
case 'publish':
- setStatus('PUBLISHED')
+ setStatus(ProgramStatusEnum.Published)
break
case 'draft':
- setStatus('DRAFT')
+ setStatus(ProgramStatusEnum.Draft)
break
case 'completed':
- setStatus('COMPLETED')
+ setStatus(ProgramStatusEnum.Completed)
break
}
setDropdownOpen(false)
@@ -40,11 +43,13 @@ const ProgramActions: React.FC = ({ status, setStatus }) =>
const options = [
{ key: 'edit Program', label: 'Edit Program' },
{ key: 'create_module', label: 'Add Module' },
- ...(status === 'DRAFT' ? [{ key: 'publish', label: 'Publish Program' }] : []),
- ...(status === 'PUBLISHED' || status === 'COMPLETED'
+ ...(status === ProgramStatusEnum.Draft ? [{ key: 'publish', label: 'Publish Program' }] : []),
+ ...(status === ProgramStatusEnum.Published || status === ProgramStatusEnum.Completed
? [{ key: 'draft', label: 'Move to Draft' }]
: []),
- ...(status === 'PUBLISHED' ? [{ key: 'completed', label: 'Mark as Completed' }] : []),
+ ...(status === ProgramStatusEnum.Published
+ ? [{ key: 'completed', label: 'Mark as Completed' }]
+ : []),
]
useEffect(() => {
diff --git a/frontend/src/components/SingleModuleCard.tsx b/frontend/src/components/SingleModuleCard.tsx
index 60a7127f0a..2b7d3f1435 100644
--- a/frontend/src/components/SingleModuleCard.tsx
+++ b/frontend/src/components/SingleModuleCard.tsx
@@ -1,6 +1,6 @@
import { faUsers, faEllipsisV } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
-import upperFirst from 'lodash/upperFirst'
+import { capitalize } from 'lodash'
import Link from 'next/link'
import { useRouter } from 'next/navigation'
import { useSession } from 'next-auth/react'
@@ -51,7 +51,7 @@ const SingleModuleCard: React.FC = ({
}
const moduleDetails = [
- { label: 'Experience Level', value: upperFirst(module.experienceLevel) },
+ { label: 'Experience Level', value: capitalize(module.experienceLevel) },
{ label: 'Start Date', value: formatDate(module.startedAt) },
{ label: 'End Date', value: formatDate(module.endedAt) },
{ label: 'Duration', value: getSimpleDuration(module.startedAt, module.endedAt) },
diff --git a/frontend/src/hooks/useDjangoSession.ts b/frontend/src/hooks/useDjangoSession.ts
index b61efd2709..9a26c0905a 100644
--- a/frontend/src/hooks/useDjangoSession.ts
+++ b/frontend/src/hooks/useDjangoSession.ts
@@ -1,8 +1,8 @@
-import { useMutation } from '@apollo/client'
+import { useMutation } from '@apollo/client/react'
import { addToast } from '@heroui/toast'
import { useSession, signOut } from 'next-auth/react'
import { useEffect, useState } from 'react'
-import { SYNC_DJANGO_SESSION_MUTATION } from 'server/queries/authQueries'
+import { SyncDjangoSessionDocument } from 'types/__generated__/authQueries.generated'
import { ExtendedSession } from 'types/auth'
const SYNC_STATUS_KEY = 'django_session_synced'
@@ -13,7 +13,7 @@ export const useDjangoSession: () => {
status: string
} = () => {
const { data: session, status, update } = useSession()
- const [syncSession, { loading }] = useMutation(SYNC_DJANGO_SESSION_MUTATION)
+ const [syncSession, { loading }] = useMutation(SyncDjangoSessionDocument)
const [isSyncing, setIsSyncing] = useState(false)
useEffect(() => {
diff --git a/frontend/src/hooks/useLogout.ts b/frontend/src/hooks/useLogout.ts
index b51fe52bcf..407b993115 100644
--- a/frontend/src/hooks/useLogout.ts
+++ b/frontend/src/hooks/useLogout.ts
@@ -1,7 +1,7 @@
-import { useMutation } from '@apollo/client'
+import { useMutation } from '@apollo/client/react'
import { signOut } from 'next-auth/react'
import { useState } from 'react'
-import { LOGOUT_DJANGO_MUTATION } from 'server/queries/authQueries'
+import { LogoutDjangoDocument } from 'types/__generated__/authQueries.generated'
// Handles logout:
// 1) calls Django logout mutation (invalidates session cookie),
@@ -9,7 +9,7 @@ import { LOGOUT_DJANGO_MUTATION } from 'server/queries/authQueries'
// 3) clears Apollo cache so no user data lingers in memory.
export const useLogout = () => {
- const [logoutUser, { loading, client }] = useMutation(LOGOUT_DJANGO_MUTATION)
+ const [logoutUser, { loading, client }] = useMutation(LogoutDjangoDocument)
const [isLoggingOut, setIsLoggingOut] = useState(false)
const handleLogout = async () => {
diff --git a/frontend/src/server/apolloClient.ts b/frontend/src/server/apolloClient.ts
index 647eecfad1..ee490a7d1b 100644
--- a/frontend/src/server/apolloClient.ts
+++ b/frontend/src/server/apolloClient.ts
@@ -1,4 +1,4 @@
-import { ApolloClient, InMemoryCache, createHttpLink } from '@apollo/client'
+import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
import { setContext } from '@apollo/client/link/context'
import { cookies } from 'next/headers'
import { fetchCsrfTokenServer } from 'server/fetchCsrfTokenServer'
@@ -16,7 +16,7 @@ async function createApolloClient() {
},
}
})
- const httpLink = createHttpLink({
+ const httpLink = new HttpLink({
credentials: 'same-origin',
uri: process.env.NEXT_SERVER_GRAPHQL_URL,
})
diff --git a/frontend/src/server/queries/userQueries.ts b/frontend/src/server/queries/userQueries.ts
index dd9c24cb76..5bf0573638 100644
--- a/frontend/src/server/queries/userQueries.ts
+++ b/frontend/src/server/queries/userQueries.ts
@@ -5,6 +5,8 @@ export const GET_LEADER_DATA = gql`
user(login: $key) {
id
avatarUrl
+ company
+ location
login
name
}
diff --git a/frontend/src/types/__generated__/apiKeyQueries.generated.ts b/frontend/src/types/__generated__/apiKeyQueries.generated.ts
index 8f6eb3d8e8..a5a2c3e47d 100644
--- a/frontend/src/types/__generated__/apiKeyQueries.generated.ts
+++ b/frontend/src/types/__generated__/apiKeyQueries.generated.ts
@@ -4,7 +4,7 @@ import { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/
export type GetApiKeysQueryVariables = Types.Exact<{ [key: string]: never; }>;
-export type GetApiKeysQuery = { activeApiKeyCount: number, apiKeys: Array<{ __typename: 'ApiKeyNode', id: string, createdAt: unknown, expiresAt: unknown, isRevoked: boolean, name: string, uuid: unknown }> };
+export type GetApiKeysQuery = { activeApiKeyCount: number, apiKeys: Array<{ __typename: 'ApiKeyNode', id: string, createdAt: any, expiresAt: any, isRevoked: boolean, name: string, uuid: any }> };
export type CreateApiKeyMutationVariables = Types.Exact<{
name: Types.Scalars['String']['input'];
@@ -12,7 +12,7 @@ export type CreateApiKeyMutationVariables = Types.Exact<{
}>;
-export type CreateApiKeyMutation = { createApiKey: { __typename: 'CreateApiKeyResult', code: string | null, message: string | null, ok: boolean, rawKey: string | null, apiKey: { __typename: 'ApiKeyNode', id: string, createdAt: unknown, expiresAt: unknown, isRevoked: boolean, name: string, uuid: unknown } | null } };
+export type CreateApiKeyMutation = { createApiKey: { __typename: 'CreateApiKeyResult', code: string | null, message: string | null, ok: boolean, rawKey: string | null, apiKey: { __typename: 'ApiKeyNode', id: string, createdAt: any, expiresAt: any, isRevoked: boolean, name: string, uuid: any } | null } };
export type RevokeApiKeyMutationVariables = Types.Exact<{
uuid: Types.Scalars['UUID']['input'];
diff --git a/frontend/src/types/__generated__/graphql.ts b/frontend/src/types/__generated__/graphql.ts
index 17f2ff0c06..c2df58b1e9 100644
--- a/frontend/src/types/__generated__/graphql.ts
+++ b/frontend/src/types/__generated__/graphql.ts
@@ -12,8 +12,8 @@ export type Scalars = {
Boolean: { input: boolean; output: boolean; }
Int: { input: number; output: number; }
Float: { input: number; output: number; }
- Date: { input: any; output: any; }
- DateTime: { input: any; output: any; }
+ Date: { input: string | number; output: string | number; }
+ DateTime: { input: string | number; output: string | number; }
JSON: { input: any; output: any; }
UUID: { input: any; output: any; }
};
diff --git a/frontend/src/types/__generated__/homeQueries.generated.ts b/frontend/src/types/__generated__/homeQueries.generated.ts
index da5cf21a1e..d73b89a6d5 100644
--- a/frontend/src/types/__generated__/homeQueries.generated.ts
+++ b/frontend/src/types/__generated__/homeQueries.generated.ts
@@ -6,7 +6,7 @@ export type GetMainPageDataQueryVariables = Types.Exact<{
}>;
-export type GetMainPageDataQuery = { recentProjects: Array<{ __typename: 'ProjectNode', id: string, createdAt: unknown | null, key: string, leaders: Array, name: string, openIssuesCount: number, repositoriesCount: number, type: string }>, recentPosts: Array<{ __typename: 'PostNode', id: string, authorName: string, authorImageUrl: string, publishedAt: unknown, title: string, url: string }>, recentChapters: Array<{ __typename: 'ChapterNode', id: string, createdAt: number, key: string, leaders: Array, name: string, suggestedLocation: string | null }>, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, publishedAt: unknown | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, sponsors: Array<{ __typename: 'SponsorNode', id: string, imageUrl: string, name: string, sponsorType: string, url: string }>, statsOverview: { __typename: 'StatsNode', activeChaptersStats: number, activeProjectsStats: number, contributorsStats: number, countriesStats: number, slackWorkspaceStats: number }, upcomingEvents: Array<{ __typename: 'EventNode', id: string, category: string, endDate: unknown | null, key: string, name: string, startDate: unknown, summary: string, suggestedLocation: string, url: string }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: unknown, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
+export type GetMainPageDataQuery = { recentProjects: Array<{ __typename: 'ProjectNode', id: string, createdAt: any | null, key: string, leaders: Array, name: string, openIssuesCount: number, repositoriesCount: number, type: string }>, recentPosts: Array<{ __typename: 'PostNode', id: string, authorName: string, authorImageUrl: string, publishedAt: any, title: string, url: string }>, recentChapters: Array<{ __typename: 'ChapterNode', id: string, createdAt: number, key: string, leaders: Array, name: string, suggestedLocation: string | null }>, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, publishedAt: any | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, sponsors: Array<{ __typename: 'SponsorNode', id: string, imageUrl: string, name: string, sponsorType: string, url: string }>, statsOverview: { __typename: 'StatsNode', activeChaptersStats: number, activeProjectsStats: number, contributorsStats: number, countriesStats: number, slackWorkspaceStats: number }, upcomingEvents: Array<{ __typename: 'EventNode', id: string, category: string, endDate: any | null, key: string, name: string, startDate: any, summary: string, suggestedLocation: string, url: string }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: any, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
export const GetMainPageDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetMainPageData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"distinct"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"recentProjects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"leaders"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"openIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"repositoriesCount"}},{"kind":"Field","name":{"kind":"Name","value":"type"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentPosts"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"6"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"authorName"}},{"kind":"Field","name":{"kind":"Name","value":"authorImageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"publishedAt"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentChapters"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"3"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"leaders"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"suggestedLocation"}}]}},{"kind":"Field","name":{"kind":"Name","value":"topContributors"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"hasFullName"},"value":{"kind":"BooleanValue","value":true}},{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"40"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentIssues"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"distinct"},"value":{"kind":"Variable","name":{"kind":"Name","value":"distinct"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentPullRequests"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"distinct"},"value":{"kind":"Variable","name":{"kind":"Name","value":"distinct"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentReleases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"distinct"},"value":{"kind":"Variable","name":{"kind":"Name","value":"distinct"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"publishedAt"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"tagName"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"sponsors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"imageUrl"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"sponsorType"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"statsOverview"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeChaptersStats"}},{"kind":"Field","name":{"kind":"Name","value":"activeProjectsStats"}},{"kind":"Field","name":{"kind":"Name","value":"contributorsStats"}},{"kind":"Field","name":{"kind":"Name","value":"countriesStats"}},{"kind":"Field","name":{"kind":"Name","value":"slackWorkspaceStats"}}]}},{"kind":"Field","name":{"kind":"Name","value":"upcomingEvents"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"9"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"category"}},{"kind":"Field","name":{"kind":"Name","value":"endDate"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"startDate"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}},{"kind":"Field","name":{"kind":"Name","value":"suggestedLocation"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentMilestones"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"state"},"value":{"kind":"StringValue","value":"all","block":false}},{"kind":"Argument","name":{"kind":"Name","value":"distinct"},"value":{"kind":"Variable","name":{"kind":"Name","value":"distinct"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"openIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"closedIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}}]}}]} as unknown as DocumentNode;
\ No newline at end of file
diff --git a/frontend/src/types/__generated__/moduleMutations.generated.ts b/frontend/src/types/__generated__/moduleMutations.generated.ts
index 298ec04aa9..2a0cc1c862 100644
--- a/frontend/src/types/__generated__/moduleMutations.generated.ts
+++ b/frontend/src/types/__generated__/moduleMutations.generated.ts
@@ -6,14 +6,14 @@ export type UpdateModuleMutationVariables = Types.Exact<{
}>;
-export type UpdateModuleMutation = { updateModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, tags: Array | null, domains: Array | null, projectId: string | null, mentors: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> } };
+export type UpdateModuleMutation = { updateModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, tags: Array | null, domains: Array | null, projectId: string | null, mentors: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> } };
export type CreateModuleMutationVariables = Types.Exact<{
input: Types.CreateModuleInput;
}>;
-export type CreateModuleMutation = { createModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, domains: Array | null, tags: Array | null, projectId: string | null, mentors: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> } };
+export type CreateModuleMutation = { createModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, domains: Array | null, tags: Array | null, projectId: string | null, mentors: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> } };
export const UpdateModuleDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"UpdateModule"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"UpdateModuleInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"updateModule"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"inputData"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"experienceLevel"}},{"kind":"Field","name":{"kind":"Name","value":"startedAt"}},{"kind":"Field","name":{"kind":"Name","value":"endedAt"}},{"kind":"Field","name":{"kind":"Name","value":"tags"}},{"kind":"Field","name":{"kind":"Name","value":"domains"}},{"kind":"Field","name":{"kind":"Name","value":"projectId"}},{"kind":"Field","name":{"kind":"Name","value":"mentors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}}]}}]}}]}}]} as unknown as DocumentNode;
diff --git a/frontend/src/types/__generated__/moduleQueries.generated.ts b/frontend/src/types/__generated__/moduleQueries.generated.ts
index 50d5bbc5bc..11aed263c9 100644
--- a/frontend/src/types/__generated__/moduleQueries.generated.ts
+++ b/frontend/src/types/__generated__/moduleQueries.generated.ts
@@ -6,7 +6,7 @@ export type GetModulesByProgramQueryVariables = Types.Exact<{
}>;
-export type GetModulesByProgramQuery = { getProgramModules: Array<{ __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, projectId: string | null, projectName: string | null, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, avatarUrl: string }> }> };
+export type GetModulesByProgramQuery = { getProgramModules: Array<{ __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, projectId: string | null, projectName: string | null, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, avatarUrl: string }> }> };
export type GetModuleByIdQueryVariables = Types.Exact<{
moduleKey: Types.Scalars['String']['input'];
@@ -14,7 +14,7 @@ export type GetModuleByIdQueryVariables = Types.Exact<{
}>;
-export type GetModuleByIdQuery = { getModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, tags: Array | null, domains: Array | null, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> } };
+export type GetModuleByIdQuery = { getModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, tags: Array | null, domains: Array | null, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> } };
export type GetProgramAdminsAndModulesQueryVariables = Types.Exact<{
programKey: Types.Scalars['String']['input'];
@@ -22,7 +22,7 @@ export type GetProgramAdminsAndModulesQueryVariables = Types.Exact<{
}>;
-export type GetProgramAdminsAndModulesQuery = { getProgram: { __typename: 'ProgramNode', id: string, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null }, getModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, tags: Array | null, projectId: string | null, projectName: string | null, domains: Array | null, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> } };
+export type GetProgramAdminsAndModulesQuery = { getProgram: { __typename: 'ProgramNode', id: string, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null }, getModule: { __typename: 'ModuleNode', id: string, key: string, name: string, description: string, tags: Array | null, projectId: string | null, projectName: string | null, domains: Array | null, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> } };
export const GetModulesByProgramDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetModulesByProgram"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"programKey"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"getProgramModules"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"programKey"},"value":{"kind":"Variable","name":{"kind":"Name","value":"programKey"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"experienceLevel"}},{"kind":"Field","name":{"kind":"Name","value":"startedAt"}},{"kind":"Field","name":{"kind":"Name","value":"endedAt"}},{"kind":"Field","name":{"kind":"Name","value":"projectId"}},{"kind":"Field","name":{"kind":"Name","value":"projectName"}},{"kind":"Field","name":{"kind":"Name","value":"mentors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}}]}}]}}]}}]} as unknown as DocumentNode;
diff --git a/frontend/src/types/__generated__/organizationQueries.generated.ts b/frontend/src/types/__generated__/organizationQueries.generated.ts
index 26c2215850..a6973cf7dc 100644
--- a/frontend/src/types/__generated__/organizationQueries.generated.ts
+++ b/frontend/src/types/__generated__/organizationQueries.generated.ts
@@ -6,7 +6,7 @@ export type GetOrganizationDataQueryVariables = Types.Exact<{
}>;
-export type GetOrganizationDataQuery = { organization: { __typename: 'OrganizationNode', id: string, avatarUrl: string, collaboratorsCount: number, company: string, createdAt: unknown, description: string, email: string, followersCount: number, location: string, login: string, name: string, updatedAt: unknown, url: string, stats: { __typename: 'OrganizationStatsNode', totalContributors: number, totalForks: number, totalIssues: number, totalRepositories: number, totalStars: number } } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, publishedAt: unknown | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: unknown, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, repositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, url: string, organization: { __typename: 'OrganizationNode', id: string, login: string } | null }>, recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
+export type GetOrganizationDataQuery = { organization: { __typename: 'OrganizationNode', id: string, avatarUrl: string, collaboratorsCount: number, company: string, createdAt: any, description: string, email: string, followersCount: number, location: string, login: string, name: string, updatedAt: any, url: string, stats: { __typename: 'OrganizationStatsNode', totalContributors: number, totalForks: number, totalIssues: number, totalRepositories: number, totalStars: number } } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, publishedAt: any | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: any, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, repositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, url: string, organization: { __typename: 'OrganizationNode', id: string, login: string } | null }>, recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
export type GetOrganizationMetadataQueryVariables = Types.Exact<{
login: Types.Scalars['String']['input'];
diff --git a/frontend/src/types/__generated__/programsMutations.generated.ts b/frontend/src/types/__generated__/programsMutations.generated.ts
index 95e8a0f5c9..f402e987fc 100644
--- a/frontend/src/types/__generated__/programsMutations.generated.ts
+++ b/frontend/src/types/__generated__/programsMutations.generated.ts
@@ -6,14 +6,14 @@ export type UpdateProgramMutationVariables = Types.Exact<{
}>;
-export type UpdateProgramMutation = { updateProgram: { __typename: 'ProgramNode', key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, startedAt: unknown, endedAt: unknown, tags: Array | null, domains: Array | null, admins: Array<{ __typename: 'MentorNode', login: string }> | null } };
+export type UpdateProgramMutation = { updateProgram: { __typename: 'ProgramNode', key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, startedAt: any, endedAt: any, tags: Array | null, domains: Array | null, admins: Array<{ __typename: 'MentorNode', login: string }> | null } };
export type CreateProgramMutationVariables = Types.Exact<{
input: Types.CreateProgramInput;
}>;
-export type CreateProgramMutation = { createProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, menteesLimit: number | null, startedAt: unknown, endedAt: unknown, tags: Array | null, domains: Array | null, admins: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> | null } };
+export type CreateProgramMutation = { createProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, menteesLimit: number | null, startedAt: any, endedAt: any, tags: Array | null, domains: Array | null, admins: Array<{ __typename: 'MentorNode', login: string, name: string, avatarUrl: string }> | null } };
export type UpdateProgramStatusMutationVariables = Types.Exact<{
inputData: Types.UpdateProgramStatusInput;
diff --git a/frontend/src/types/__generated__/programsQueries.generated.ts b/frontend/src/types/__generated__/programsQueries.generated.ts
index daa4783da8..876b59b346 100644
--- a/frontend/src/types/__generated__/programsQueries.generated.ts
+++ b/frontend/src/types/__generated__/programsQueries.generated.ts
@@ -8,21 +8,21 @@ export type GetMyProgramsQueryVariables = Types.Exact<{
}>;
-export type GetMyProgramsQuery = { myPrograms: { __typename: 'PaginatedPrograms', currentPage: number, totalPages: number, programs: Array<{ __typename: 'ProgramNode', id: string, key: string, name: string, description: string, startedAt: unknown, endedAt: unknown, userRole: string | null }> } };
+export type GetMyProgramsQuery = { myPrograms: { __typename: 'PaginatedPrograms', currentPage: number, totalPages: number, programs: Array<{ __typename: 'ProgramNode', id: string, key: string, name: string, description: string, startedAt: any, endedAt: any, userRole: string | null }> } };
export type GetProgramDetailsQueryVariables = Types.Exact<{
programKey: Types.Scalars['String']['input'];
}>;
-export type GetProgramDetailsQuery = { getProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, experienceLevels: Array | null, startedAt: unknown, endedAt: unknown, domains: Array | null, tags: Array | null, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null } };
+export type GetProgramDetailsQuery = { getProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, experienceLevels: Array | null, startedAt: any, endedAt: any, domains: Array | null, tags: Array | null, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null } };
export type GetProgramAndModulesQueryVariables = Types.Exact<{
programKey: Types.Scalars['String']['input'];
}>;
-export type GetProgramAndModulesQuery = { getProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, experienceLevels: Array | null, startedAt: unknown, endedAt: unknown, domains: Array | null, tags: Array | null, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null }, getProgramModules: Array<{ __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: unknown, endedAt: unknown, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> }> };
+export type GetProgramAndModulesQuery = { getProgram: { __typename: 'ProgramNode', id: string, key: string, name: string, description: string, status: Types.ProgramStatusEnum, menteesLimit: number | null, experienceLevels: Array | null, startedAt: any, endedAt: any, domains: Array | null, tags: Array | null, admins: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> | null }, getProgramModules: Array<{ __typename: 'ModuleNode', id: string, key: string, name: string, description: string, experienceLevel: Types.ExperienceLevelEnum, startedAt: any, endedAt: any, mentors: Array<{ __typename: 'MentorNode', id: string, login: string, name: string, avatarUrl: string }> }> };
export type GetProgramAdminDetailsQueryVariables = Types.Exact<{
programKey: Types.Scalars['String']['input'];
diff --git a/frontend/src/types/__generated__/projectQueries.generated.ts b/frontend/src/types/__generated__/projectQueries.generated.ts
index 587871fca9..9c6790e484 100644
--- a/frontend/src/types/__generated__/projectQueries.generated.ts
+++ b/frontend/src/types/__generated__/projectQueries.generated.ts
@@ -6,7 +6,7 @@ export type GetProjectQueryVariables = Types.Exact<{
}>;
-export type GetProjectQuery = { project: { __typename: 'ProjectNode', id: string, contributorsCount: number, forksCount: number, issuesCount: number, isActive: boolean, key: string, languages: Array, leaders: Array, level: string, name: string, repositoriesCount: number, starsCount: number, summary: string, topics: Array, type: string, updatedAt: number, url: string, healthMetricsList: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, createdAt: unknown, forksCount: number, lastCommitDays: number, lastCommitDaysRequirement: number, lastReleaseDays: number, lastReleaseDaysRequirement: number, openIssuesCount: number, openPullRequestsCount: number, score: number | null, starsCount: number, unassignedIssuesCount: number, unansweredIssuesCount: number }>, recentIssues: Array<{ __typename: 'IssueNode', createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string, url: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', name: string, organizationName: string | null, publishedAt: unknown | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, repositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, subscribersCount: number, url: string, organization: { __typename: 'OrganizationNode', login: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: unknown, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }> };
+export type GetProjectQuery = { project: { __typename: 'ProjectNode', id: string, contributorsCount: number, forksCount: number, issuesCount: number, isActive: boolean, key: string, languages: Array, leaders: Array, level: string, name: string, repositoriesCount: number, starsCount: number, summary: string, topics: Array, type: string, updatedAt: number, url: string, healthMetricsList: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, createdAt: any, forksCount: number, lastCommitDays: number, lastCommitDaysRequirement: number, lastReleaseDays: number, lastReleaseDaysRequirement: number, openIssuesCount: number, openPullRequestsCount: number, score: number | null, starsCount: number, unassignedIssuesCount: number, unansweredIssuesCount: number }>, recentIssues: Array<{ __typename: 'IssueNode', createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string, url: string } | null }>, recentReleases: Array<{ __typename: 'ReleaseNode', name: string, organizationName: string | null, publishedAt: any | null, repositoryName: string | null, tagName: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, repositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, subscribersCount: number, url: string, organization: { __typename: 'OrganizationNode', login: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: any, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }> };
export type GetProjectMetadataQueryVariables = Types.Exact<{
key: Types.Scalars['String']['input'];
diff --git a/frontend/src/types/__generated__/projectsHealthDashboardQueries.generated.ts b/frontend/src/types/__generated__/projectsHealthDashboardQueries.generated.ts
index 72870bba8a..8ac5638ef0 100644
--- a/frontend/src/types/__generated__/projectsHealthDashboardQueries.generated.ts
+++ b/frontend/src/types/__generated__/projectsHealthDashboardQueries.generated.ts
@@ -13,14 +13,14 @@ export type GetProjectHealthMetricsQueryVariables = Types.Exact<{
}>;
-export type GetProjectHealthMetricsQuery = { projectHealthMetricsDistinctLength: number, projectHealthMetrics: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, createdAt: unknown, contributorsCount: number, forksCount: number, projectKey: string, projectName: string, score: number | null, starsCount: number }> };
+export type GetProjectHealthMetricsQuery = { projectHealthMetricsDistinctLength: number, projectHealthMetrics: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, createdAt: any, contributorsCount: number, forksCount: number, projectKey: string, projectName: string, score: number | null, starsCount: number }> };
export type GetProjectHealthMetricsDetailsQueryVariables = Types.Exact<{
projectKey: Types.Scalars['String']['input'];
}>;
-export type GetProjectHealthMetricsDetailsQuery = { project: { __typename: 'ProjectNode', id: string, healthMetricsLatest: { __typename: 'ProjectHealthMetricsNode', id: string, ageDays: number, ageDaysRequirement: number, isFundingRequirementsCompliant: boolean, isLeaderRequirementsCompliant: boolean, lastCommitDays: number, lastCommitDaysRequirement: number, lastPullRequestDays: number, lastPullRequestDaysRequirement: number, lastReleaseDays: number, lastReleaseDaysRequirement: number, owaspPageLastUpdateDays: number, owaspPageLastUpdateDaysRequirement: number, projectName: string, score: number | null } | null, healthMetricsList: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, contributorsCount: number, createdAt: unknown, forksCount: number, openIssuesCount: number, openPullRequestsCount: number, recentReleasesCount: number, starsCount: number, totalIssuesCount: number, totalReleasesCount: number, unassignedIssuesCount: number, unansweredIssuesCount: number }> } | null };
+export type GetProjectHealthMetricsDetailsQuery = { project: { __typename: 'ProjectNode', id: string, healthMetricsLatest: { __typename: 'ProjectHealthMetricsNode', id: string, ageDays: number, ageDaysRequirement: number, isFundingRequirementsCompliant: boolean, isLeaderRequirementsCompliant: boolean, lastCommitDays: number, lastCommitDaysRequirement: number, lastPullRequestDays: number, lastPullRequestDaysRequirement: number, lastReleaseDays: number, lastReleaseDaysRequirement: number, owaspPageLastUpdateDays: number, owaspPageLastUpdateDaysRequirement: number, projectName: string, score: number | null } | null, healthMetricsList: Array<{ __typename: 'ProjectHealthMetricsNode', id: string, contributorsCount: number, createdAt: any, forksCount: number, openIssuesCount: number, openPullRequestsCount: number, recentReleasesCount: number, starsCount: number, totalIssuesCount: number, totalReleasesCount: number, unassignedIssuesCount: number, unansweredIssuesCount: number }> } | null };
export const GetProjectHealthStatsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetProjectHealthStats"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projectHealthStats"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"averageScore"}},{"kind":"Field","name":{"kind":"Name","value":"monthlyOverallScores"}},{"kind":"Field","name":{"kind":"Name","value":"monthlyOverallScoresMonths"}},{"kind":"Field","name":{"kind":"Name","value":"projectsCountHealthy"}},{"kind":"Field","name":{"kind":"Name","value":"projectsCountNeedAttention"}},{"kind":"Field","name":{"kind":"Name","value":"projectsCountUnhealthy"}},{"kind":"Field","name":{"kind":"Name","value":"projectsPercentageHealthy"}},{"kind":"Field","name":{"kind":"Name","value":"projectsPercentageNeedAttention"}},{"kind":"Field","name":{"kind":"Name","value":"projectsPercentageUnhealthy"}},{"kind":"Field","name":{"kind":"Name","value":"totalContributors"}},{"kind":"Field","name":{"kind":"Name","value":"totalForks"}},{"kind":"Field","name":{"kind":"Name","value":"totalStars"}}]}}]}}]} as unknown as DocumentNode;
diff --git a/frontend/src/types/__generated__/repositoryQueries.generated.ts b/frontend/src/types/__generated__/repositoryQueries.generated.ts
index 6b17f62d21..cee91ea9ba 100644
--- a/frontend/src/types/__generated__/repositoryQueries.generated.ts
+++ b/frontend/src/types/__generated__/repositoryQueries.generated.ts
@@ -7,7 +7,7 @@ export type GetRepositoryDataQueryVariables = Types.Exact<{
}>;
-export type GetRepositoryDataQuery = { repository: { __typename: 'RepositoryNode', id: string, commitsCount: number, contributorsCount: number, createdAt: unknown, description: string, forksCount: number, key: string, languages: Array, license: string, name: string, openIssuesCount: number, size: number, starsCount: number, topics: Array, updatedAt: unknown, url: string, issues: Array<{ __typename: 'IssueNode', id: string, organizationName: string | null, repositoryName: string | null, createdAt: unknown, title: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, organization: { __typename: 'OrganizationNode', id: string, login: string } | null, project: { __typename: 'ProjectNode', id: string, key: string, name: string } | null, releases: Array<{ __typename: 'ReleaseNode', id: string, isPreRelease: boolean, name: string, organizationName: string | null, publishedAt: unknown | null, repositoryName: string | null, tagName: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, name: string, login: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: unknown, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
+export type GetRepositoryDataQuery = { repository: { __typename: 'RepositoryNode', id: string, commitsCount: number, contributorsCount: number, createdAt: any, description: string, forksCount: number, key: string, languages: Array, license: string, name: string, openIssuesCount: number, size: number, starsCount: number, topics: Array, updatedAt: any, url: string, issues: Array<{ __typename: 'IssueNode', id: string, organizationName: string | null, repositoryName: string | null, createdAt: any, title: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }>, organization: { __typename: 'OrganizationNode', id: string, login: string } | null, project: { __typename: 'ProjectNode', id: string, key: string, name: string } | null, releases: Array<{ __typename: 'ReleaseNode', id: string, isPreRelease: boolean, name: string, organizationName: string | null, publishedAt: any | null, repositoryName: string | null, tagName: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, name: string, login: string } | null }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: any, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> } | null, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string, author: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null }> };
export type GetRepositoryMetadataQueryVariables = Types.Exact<{
repositoryKey: Types.Scalars['String']['input'];
diff --git a/frontend/src/types/__generated__/snapshotQueries.generated.ts b/frontend/src/types/__generated__/snapshotQueries.generated.ts
index 83cc2b8c70..69e9e59767 100644
--- a/frontend/src/types/__generated__/snapshotQueries.generated.ts
+++ b/frontend/src/types/__generated__/snapshotQueries.generated.ts
@@ -6,7 +6,7 @@ export type GetSnapshotDetailsQueryVariables = Types.Exact<{
}>;
-export type GetSnapshotDetailsQuery = { snapshot: { __typename: 'SnapshotNode', id: string, endAt: unknown, key: string, startAt: unknown, title: string, newReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, projectName: string | null, publishedAt: unknown | null, repositoryName: string | null, tagName: string, author: { __typename: 'UserNode', avatarUrl: string, id: string, login: string, name: string } | null }>, newProjects: Array<{ __typename: 'ProjectNode', id: string, key: string, name: string, summary: string, starsCount: number, forksCount: number, contributorsCount: number, level: string, isActive: boolean, repositoriesCount: number, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }> }>, newChapters: Array<{ __typename: 'ChapterNode', id: string, key: string, name: string, createdAt: number, suggestedLocation: string | null, region: string, summary: string, updatedAt: number, url: string, relatedUrls: Array, isActive: boolean, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, geoLocation: { __typename: 'GeoLocationType', lat: number, lng: number } | null }> } | null };
+export type GetSnapshotDetailsQuery = { snapshot: { __typename: 'SnapshotNode', id: string, endAt: any, key: string, startAt: any, title: string, newReleases: Array<{ __typename: 'ReleaseNode', id: string, name: string, organizationName: string | null, projectName: string | null, publishedAt: any | null, repositoryName: string | null, tagName: string, author: { __typename: 'UserNode', avatarUrl: string, id: string, login: string, name: string } | null }>, newProjects: Array<{ __typename: 'ProjectNode', id: string, key: string, name: string, summary: string, starsCount: number, forksCount: number, contributorsCount: number, level: string, isActive: boolean, repositoriesCount: number, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }> }>, newChapters: Array<{ __typename: 'ChapterNode', id: string, key: string, name: string, createdAt: number, suggestedLocation: string | null, region: string, summary: string, updatedAt: number, url: string, relatedUrls: Array, isActive: boolean, topContributors: Array<{ __typename: 'RepositoryContributorNode', id: string, avatarUrl: string, login: string, name: string }>, geoLocation: { __typename: 'GeoLocationType', lat: number, lng: number } | null }> } | null };
export type GetSnapshotDetailsMetadataQueryVariables = Types.Exact<{
key: Types.Scalars['String']['input'];
@@ -18,7 +18,7 @@ export type GetSnapshotDetailsMetadataQuery = { snapshot: { __typename: 'Snapsho
export type GetCommunitySnapshotsQueryVariables = Types.Exact<{ [key: string]: never; }>;
-export type GetCommunitySnapshotsQuery = { snapshots: Array<{ __typename: 'SnapshotNode', id: string, key: string, title: string, startAt: unknown, endAt: unknown }> };
+export type GetCommunitySnapshotsQuery = { snapshots: Array<{ __typename: 'SnapshotNode', id: string, key: string, title: string, startAt: any, endAt: any }> };
export const GetSnapshotDetailsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetSnapshotDetails"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"snapshot"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"key"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"endAt"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"startAt"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"newReleases"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"projectName"}},{"kind":"Field","name":{"kind":"Name","value":"publishedAt"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"tagName"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"newProjects"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}},{"kind":"Field","name":{"kind":"Name","value":"starsCount"}},{"kind":"Field","name":{"kind":"Name","value":"forksCount"}},{"kind":"Field","name":{"kind":"Name","value":"contributorsCount"}},{"kind":"Field","name":{"kind":"Name","value":"level"}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}},{"kind":"Field","name":{"kind":"Name","value":"repositoriesCount"}},{"kind":"Field","name":{"kind":"Name","value":"topContributors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"newChapters"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"suggestedLocation"}},{"kind":"Field","name":{"kind":"Name","value":"region"}},{"kind":"Field","name":{"kind":"Name","value":"summary"}},{"kind":"Field","name":{"kind":"Name","value":"topContributors"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"url"}},{"kind":"Field","name":{"kind":"Name","value":"relatedUrls"}},{"kind":"Field","name":{"kind":"Name","value":"geoLocation"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"lat"}},{"kind":"Field","name":{"kind":"Name","value":"lng"}}]}},{"kind":"Field","name":{"kind":"Name","value":"isActive"}}]}}]}}]}}]} as unknown as DocumentNode;
diff --git a/frontend/src/types/__generated__/userQueries.generated.ts b/frontend/src/types/__generated__/userQueries.generated.ts
index 5455b2eae6..0cd3c6ae2e 100644
--- a/frontend/src/types/__generated__/userQueries.generated.ts
+++ b/frontend/src/types/__generated__/userQueries.generated.ts
@@ -6,14 +6,14 @@ export type GetLeaderDataQueryVariables = Types.Exact<{
}>;
-export type GetLeaderDataQuery = { user: { __typename: 'UserNode', id: string, avatarUrl: string, login: string, name: string } | null };
+export type GetLeaderDataQuery = { user: { __typename: 'UserNode', id: string, avatarUrl: string, company: string, location: string, login: string, name: string } | null };
export type GetUserDataQueryVariables = Types.Exact<{
key: Types.Scalars['String']['input'];
}>;
-export type GetUserDataQuery = { recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: unknown, url: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: unknown, organizationName: string | null, repositoryName: string | null, title: string, url: string }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, isPreRelease: boolean, name: string, publishedAt: unknown | null, organizationName: string | null, repositoryName: string | null, tagName: string, url: string }>, topContributedRepositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, subscribersCount: number, url: string, organization: { __typename: 'OrganizationNode', id: string, login: string } | null }>, user: { __typename: 'UserNode', id: string, avatarUrl: string, bio: string, company: string, contributionsCount: number, createdAt: number, email: string, followersCount: number, followingCount: number, issuesCount: number, location: string, login: string, name: string, publicRepositoriesCount: number, releasesCount: number, updatedAt: number, url: string } | null };
+export type GetUserDataQuery = { recentIssues: Array<{ __typename: 'IssueNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string }>, recentMilestones: Array<{ __typename: 'MilestoneNode', id: string, title: string, openIssuesCount: number, closedIssuesCount: number, repositoryName: string | null, organizationName: string | null, createdAt: any, url: string }>, recentPullRequests: Array<{ __typename: 'PullRequestNode', id: string, createdAt: any, organizationName: string | null, repositoryName: string | null, title: string, url: string }>, recentReleases: Array<{ __typename: 'ReleaseNode', id: string, isPreRelease: boolean, name: string, publishedAt: any | null, organizationName: string | null, repositoryName: string | null, tagName: string, url: string }>, topContributedRepositories: Array<{ __typename: 'RepositoryNode', id: string, contributorsCount: number, forksCount: number, key: string, name: string, openIssuesCount: number, starsCount: number, subscribersCount: number, url: string, organization: { __typename: 'OrganizationNode', id: string, login: string } | null }>, user: { __typename: 'UserNode', id: string, avatarUrl: string, bio: string, company: string, contributionsCount: number, createdAt: number, email: string, followersCount: number, followingCount: number, issuesCount: number, location: string, login: string, name: string, publicRepositoriesCount: number, releasesCount: number, updatedAt: number, url: string } | null };
export type GetUserMetadataQueryVariables = Types.Exact<{
key: Types.Scalars['String']['input'];
@@ -23,6 +23,6 @@ export type GetUserMetadataQueryVariables = Types.Exact<{
export type GetUserMetadataQuery = { user: { __typename: 'UserNode', id: string, bio: string, login: string, name: string } | null };
-export const GetLeaderDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetLeaderData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
+export const GetLeaderDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetLeaderData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"company"}},{"kind":"Field","name":{"kind":"Name","value":"location"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
export const GetUserDataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUserData"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"recentIssues"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentMilestones"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"openIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"closedIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentPullRequests"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"title"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"recentReleases"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"5"}},{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"isPreRelease"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"publishedAt"}},{"kind":"Field","name":{"kind":"Name","value":"organizationName"}},{"kind":"Field","name":{"kind":"Name","value":"repositoryName"}},{"kind":"Field","name":{"kind":"Name","value":"tagName"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"topContributedRepositories"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"contributorsCount"}},{"kind":"Field","name":{"kind":"Name","value":"forksCount"}},{"kind":"Field","name":{"kind":"Name","value":"key"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"openIssuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"organization"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"login"}}]}},{"kind":"Field","name":{"kind":"Name","value":"starsCount"}},{"kind":"Field","name":{"kind":"Name","value":"subscribersCount"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}},{"kind":"Field","name":{"kind":"Name","value":"user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"avatarUrl"}},{"kind":"Field","name":{"kind":"Name","value":"bio"}},{"kind":"Field","name":{"kind":"Name","value":"company"}},{"kind":"Field","name":{"kind":"Name","value":"contributionsCount"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"email"}},{"kind":"Field","name":{"kind":"Name","value":"followersCount"}},{"kind":"Field","name":{"kind":"Name","value":"followingCount"}},{"kind":"Field","name":{"kind":"Name","value":"issuesCount"}},{"kind":"Field","name":{"kind":"Name","value":"location"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"publicRepositoriesCount"}},{"kind":"Field","name":{"kind":"Name","value":"releasesCount"}},{"kind":"Field","name":{"kind":"Name","value":"updatedAt"}},{"kind":"Field","name":{"kind":"Name","value":"url"}}]}}]}}]} as unknown as DocumentNode;
export const GetUserMetadataDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"GetUserMetadata"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"key"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"user"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"login"},"value":{"kind":"Variable","name":{"kind":"Name","value":"key"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"bio"}},{"kind":"Field","name":{"kind":"Name","value":"login"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]}}]} as unknown as DocumentNode;
\ No newline at end of file
diff --git a/frontend/src/types/chapter.ts b/frontend/src/types/chapter.ts
index c6ee7bbe70..fe1e7f1bf8 100644
--- a/frontend/src/types/chapter.ts
+++ b/frontend/src/types/chapter.ts
@@ -2,20 +2,20 @@ import type { Contributor } from 'types/contributor'
export type Chapter = {
_geoloc?: GeoLocation
- createdAt: number
+ createdAt?: number
geoLocation?: GeoLocation
- isActive: boolean
+ isActive?: boolean
key: string
- leaders: string[]
+ leaders?: string[]
name: string
- objectID: string
- region: string
- relatedUrls: string[]
+ objectID?: string
+ region?: string
+ relatedUrls?: string[]
suggestedLocation: string
- summary: string
- topContributors: Contributor[]
- updatedAt: number
- url: string
+ summary?: string
+ topContributors?: Contributor[]
+ updatedAt?: number
+ url?: string
}
export type GeoLocation = {
diff --git a/frontend/src/types/committee.ts b/frontend/src/types/committee.ts
index 98ed64db32..d68fe9c1d1 100644
--- a/frontend/src/types/committee.ts
+++ b/frontend/src/types/committee.ts
@@ -5,7 +5,7 @@ export type Committee = {
createdAt: number
forksCount?: number
issuesCount?: number
- key: string
+ key?: string
leaders: string[]
name: string
objectID?: string
@@ -13,7 +13,7 @@ export type Committee = {
repositoriesCount?: number
starsCount?: number
summary: string
- topContributors: Contributor[]
+ topContributors?: Contributor[]
updatedAt: number
url: string
}
diff --git a/frontend/src/types/healthMetrics.ts b/frontend/src/types/healthMetrics.ts
index d4fcfec6fa..e38f1180db 100644
--- a/frontend/src/types/healthMetrics.ts
+++ b/frontend/src/types/healthMetrics.ts
@@ -24,33 +24,33 @@ export type ApexBarChartDataSeries = {
}
export type HealthMetricsProps = {
- ageDays: number
- ageDaysRequirement: number
+ ageDays?: number
+ ageDaysRequirement?: number
id: string
- createdAt: string
- contributorsCount: number
- forksCount: number
- isFundingRequirementsCompliant: boolean
- isLeaderRequirementsCompliant: boolean
- lastCommitDays: number
- lastCommitDaysRequirement: number
- lastPullRequestDays: number
- lastPullRequestDaysRequirement: number
- lastReleaseDays: number
- lastReleaseDaysRequirement: number
- openIssuesCount: number
- openPullRequestsCount: number
- owaspPageLastUpdateDays: number
- owaspPageLastUpdateDaysRequirement: number
- projectName: string
- projectKey: string
- recentReleasesCount: number
- score: number
- starsCount: number
- totalIssuesCount: number
- totalReleasesCount: number
- unassignedIssuesCount: number
- unansweredIssuesCount: number
+ createdAt?: string
+ contributorsCount?: number
+ forksCount?: number
+ isFundingRequirementsCompliant?: boolean
+ isLeaderRequirementsCompliant?: boolean
+ lastCommitDays?: number
+ lastCommitDaysRequirement?: number
+ lastPullRequestDays?: number
+ lastPullRequestDaysRequirement?: number
+ lastReleaseDays?: number
+ lastReleaseDaysRequirement?: number
+ openIssuesCount?: number
+ openPullRequestsCount?: number
+ owaspPageLastUpdateDays?: number
+ owaspPageLastUpdateDaysRequirement?: number
+ projectName?: string
+ projectKey?: string
+ recentReleasesCount?: number
+ score?: number
+ starsCount?: number
+ totalIssuesCount?: number
+ totalReleasesCount?: number
+ unassignedIssuesCount?: number
+ unansweredIssuesCount?: number
}
export type HealthMetricsFilter = {
diff --git a/frontend/src/types/issue.ts b/frontend/src/types/issue.ts
index bd8f746f0c..074283b192 100644
--- a/frontend/src/types/issue.ts
+++ b/frontend/src/types/issue.ts
@@ -1,19 +1,19 @@
import type { RepositoryDetails, User } from 'types/user'
export type Issue = {
- author: User
+ author?: User
createdAt: number
- hint: string
- labels: string[]
+ hint?: string
+ labels?: string[]
number?: string
organizationName?: string
- projectName: string
- projectUrl: string
+ projectName?: string
+ projectUrl?: string
repository?: RepositoryDetails
repositoryLanguages?: string[]
- summary: string
+ summary?: string
title: string
- updatedAt: number
+ updatedAt?: number
url: string
- objectID: string
+ objectID?: string
}
diff --git a/frontend/src/types/mentorship.ts b/frontend/src/types/mentorship.ts
index 7afecf2465..b2b8376991 100644
--- a/frontend/src/types/mentorship.ts
+++ b/frontend/src/types/mentorship.ts
@@ -1,22 +1,6 @@
import type { Contributor } from 'types/contributor'
-export enum ExperienceLevelEnum {
- BEGINNER = 'beginner',
- INTERMEDIATE = 'intermediate',
- ADVANCED = 'advanced',
- EXPERT = 'expert',
-}
-
-export enum ProgramStatusEnum {
- DRAFT = 'draft',
- PUBLISHED = 'published',
- COMPLETED = 'completed',
-}
-
-export const EXPERIENCE_LEVELS = {
- BEGINNER: 'BEGINNER',
- INTERMEDIATE: 'INTERMEDIATE',
- ADVANCED: 'ADVANCED',
-}
+// eslint-disable-next-line no-restricted-imports
+import { ExperienceLevelEnum, ProgramStatusEnum } from './__generated__/graphql'
// Main Program type
export type Program = {
@@ -24,7 +8,7 @@ export type Program = {
key: string
name: string
description: string
- status: ProgramStatusEnum
+ status?: ProgramStatusEnum
experienceLevels?: ExperienceLevelEnum[]
menteesLimit?: number
startedAt: string
@@ -54,13 +38,13 @@ export type Module = {
key: string
name: string
description: string
- status: ProgramStatusEnum
+ status?: ProgramStatusEnum
experienceLevel: ExperienceLevelEnum
mentors: Contributor[]
startedAt: string
endedAt: string
- domains: string[]
- tags: string[]
+ domains?: string[]
+ tags?: string[]
}
export type ModuleFormData = {
diff --git a/frontend/src/types/milestone.ts b/frontend/src/types/milestone.ts
index 51908d7ad1..9656c02b4c 100644
--- a/frontend/src/types/milestone.ts
+++ b/frontend/src/types/milestone.ts
@@ -1,15 +1,15 @@
import type { User } from 'types/user'
export type Milestone = {
- author: User
- body: string
- closedIssuesCount: number
- createdAt: string
- openIssuesCount: number
+ author?: User
+ body?: string
+ closedIssuesCount?: number
+ createdAt?: string
+ openIssuesCount?: number
organizationName?: string
progress?: number
- repositoryName: string
- state: string
+ repositoryName?: string
+ state?: string
title: string
url?: string
}
diff --git a/frontend/src/types/organization.ts b/frontend/src/types/organization.ts
index 3502a1f4ac..b0510a1676 100644
--- a/frontend/src/types/organization.ts
+++ b/frontend/src/types/organization.ts
@@ -1,17 +1,17 @@
export type Organization = {
- avatarUrl: string
- collaboratorsCount: number
+ avatarUrl?: string
+ collaboratorsCount?: number
company?: string
- createdAt: number
+ createdAt?: number
description?: string
email?: string
- followersCount: number
- key: string
+ followersCount?: number
+ key?: string
location?: string
login: string
- name: string
- objectID: string
- publicRepositoriesCount: number
- updatedAt: number
- url: string
+ name?: string
+ objectID?: string
+ publicRepositoriesCount?: number
+ updatedAt?: number
+ url?: string
}
diff --git a/frontend/src/types/project.ts b/frontend/src/types/project.ts
index 10cada1c79..455286ab08 100644
--- a/frontend/src/types/project.ts
+++ b/frontend/src/types/project.ts
@@ -16,27 +16,27 @@ export type ProjectStats = {
export type Project = {
createdAt?: string
- contributorsCount: number
- description: string
- forksCount: number
+ contributorsCount?: number
+ description?: string
+ forksCount?: number
healthMetricsList?: HealthMetricsProps[]
- isActive: boolean
- issuesCount: number
- key: string
- languages: string[]
- leaders: string[]
- level: string
+ isActive?: boolean
+ issuesCount?: number
+ key?: string
+ languages?: string[]
+ leaders?: string[]
+ level?: string
name: string
openIssuesCount?: number
- organizations: string
- repositoriesCount: number
- starsCount: number
- summary: string
- topics: string[]
- topContributors: Contributor[]
- type: string
- updatedAt: number
- url: string
+ organizations?: string
+ repositoriesCount?: number
+ starsCount?: number
+ summary?: string
+ topics?: string[]
+ topContributors?: Contributor[]
+ type?: string
+ updatedAt?: number
+ url?: string
recentIssues?: Issue[]
recentPullRequests?: PullRequest[]
recentReleases?: Release[]
diff --git a/frontend/src/types/pullRequest.ts b/frontend/src/types/pullRequest.ts
index 47c15ad798..04006b6e9a 100644
--- a/frontend/src/types/pullRequest.ts
+++ b/frontend/src/types/pullRequest.ts
@@ -1,7 +1,7 @@
import type { User } from 'types/user'
export type PullRequest = {
- author: User
+ author?: User
createdAt: string
organizationName: string
repositoryName?: string
diff --git a/frontend/src/types/release.ts b/frontend/src/types/release.ts
index 2e422ec81d..71c6154a7e 100644
--- a/frontend/src/types/release.ts
+++ b/frontend/src/types/release.ts
@@ -1,8 +1,8 @@
import type { RepositoryDetails, User } from 'types/user'
export type Release = {
- author: User
- isPreRelease: boolean
+ author?: User
+ isPreRelease?: boolean
name: string
organizationName?: string
projectName?: string
diff --git a/frontend/src/types/user.ts b/frontend/src/types/user.ts
index f2b50891a0..349618b99e 100644
--- a/frontend/src/types/user.ts
+++ b/frontend/src/types/user.ts
@@ -7,28 +7,26 @@ export type RepositoryDetails = {
ownerKey: string
}
-export type User = {
+export type User = {
avatarUrl: string
bio?: string
company?: string
- contributionsCount: number
- createdAt: T
+ contributionsCount?: number
+ createdAt?: number | string
email?: string
- followersCount: number
- followingCount: number
+ followersCount?: number
+ followingCount?: number
isOwaspStaff?: boolean
issues?: Issue[]
issuesCount?: number
- key: string
+ key?: string
location?: string
login: string
name?: string
- publicRepositoriesCount: number
+ publicRepositoriesCount?: number
releases?: Release[]
releasesCount?: number
topRepositories?: RepositoryCardProps[]
- updatedAt?: T
- url: string
+ updatedAt?: number | string
+ url?: string
}
-
-export type UserDetails = User
diff --git a/frontend/src/utils/helpers/apolloClient.ts b/frontend/src/utils/helpers/apolloClient.ts
index 43114cfe77..42fdbeca87 100644
--- a/frontend/src/utils/helpers/apolloClient.ts
+++ b/frontend/src/utils/helpers/apolloClient.ts
@@ -1,4 +1,4 @@
-import { ApolloClient, createHttpLink, InMemoryCache } from '@apollo/client'
+import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
import { setContext } from '@apollo/client/link/context'
import { AppError, handleAppError } from 'app/global-error'
import { GRAPHQL_URL } from 'utils/env.client'
@@ -10,7 +10,7 @@ const createApolloClient = () => {
return null
}
- const httpLink = createHttpLink({
+ const httpLink = new HttpLink({
credentials: 'include',
uri: GRAPHQL_URL,
})
diff --git a/frontend/src/utils/structuredData.ts b/frontend/src/utils/structuredData.ts
index a43f60f27b..319428994b 100644
--- a/frontend/src/utils/structuredData.ts
+++ b/frontend/src/utils/structuredData.ts
@@ -1,5 +1,22 @@
import { ProfilePageStructuredData } from 'types/profilePageStructuredData'
-import type { UserDetails } from 'types/user'
+import type { User } from 'types/user'
+
+export const formatISODate = (input?: number | string): string => {
+ if (input == null) {
+ return undefined
+ }
+
+ const date =
+ typeof input === 'number'
+ ? new Date(input * 1000) // Unix timestamp in seconds
+ : new Date(input) // ISO date string
+
+ if (Number.isNaN(date.getTime())) {
+ throw new TypeError('Invalid date')
+ }
+
+ return date.toISOString()
+}
/**
* JSON-LD structure data for ProfilePage
@@ -11,14 +28,18 @@ import type { UserDetails } from 'types/user'
*
*/
export function generateProfilePageStructuredData(
- user: UserDetails,
+ user: User,
baseUrl = 'https://nest.owasp.org'
): ProfilePageStructuredData {
return {
'@context': 'https://schema.org',
'@type': 'ProfilePage',
- dateCreated: new Date(parseInt(user.createdAt) * 1000).toISOString(),
- dateModified: new Date(parseInt(user.updatedAt) * 1000).toISOString(),
+ ...(formatISODate(user.createdAt) && {
+ dateCreated: formatISODate(user.createdAt),
+ }),
+ ...(formatISODate(user.updatedAt) && {
+ dateModified: formatISODate(user.updatedAt),
+ }),
mainEntity: {
'@type': 'Person',
...(user.location && {
diff --git a/frontend/src/wrappers/provider.tsx b/frontend/src/wrappers/provider.tsx
index 556196e47b..ef0590ab8d 100644
--- a/frontend/src/wrappers/provider.tsx
+++ b/frontend/src/wrappers/provider.tsx
@@ -1,6 +1,5 @@
'use client'
-
-import { ApolloProvider } from '@apollo/client'
+import { ApolloProvider } from '@apollo/client/react'
import { HeroUIProvider, ToastProvider } from '@heroui/react'
import { useDjangoSession } from 'hooks/useDjangoSession'
import { SessionProvider } from 'next-auth/react'