Skip to content

Commit

Permalink
add zod schemas
Browse files Browse the repository at this point in the history
  • Loading branch information
suejung-sentry committed Nov 6, 2024
1 parent a9c39d6 commit fc0d687
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 159 deletions.
77 changes: 0 additions & 77 deletions src/services/charts/useLegacyRepoCoverage.test.tsx

This file was deleted.

58 changes: 0 additions & 58 deletions src/services/charts/useLegacyRepoCoverage.ts

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ import { MemoryRouter, Route } from 'react-router-dom'
import { useRegenerateOrgUploadToken } from './useRegenerateOrgUploadToken'

const data = {
data: {
regenerateOrgUploadToken: {
orgUploadToken: 'new token',
},
regenerateOrgUploadToken: {
orgUploadToken: 'new token',
},
}

Expand Down
48 changes: 37 additions & 11 deletions src/services/orgUploadToken/useRegenerateOrgUploadToken.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,41 @@
import { useMutation, useQueryClient } from '@tanstack/react-query'
import { useParams } from 'react-router-dom'
import { z } from 'zod'

import Api from 'shared/api'
import { NetworkErrorObject } from 'shared/api/helpers'

const RequestSchema = z.object({
regenerateOrgUploadToken: z
.object({
orgUploadToken: z.string().nullish(),
error: z
.union([
z.object({
__typename: z.literal('UnauthorizedError'),
message: z.string(),
}),
z.object({
__typename: z.literal('ValidationError'),
message: z.string(),
}),
z.object({
__typename: z.literal('UnauthenticatedError'),
message: z.string(),
}),
])
.nullish(),
})
.nullable(),
})

interface URLParams {
provider: string
owner: string
}

interface RegenerateOrgUploadTokenOutput {
regenerateOrgUploadToken?: {
orgUploadToken?: string
error?: {
__typename?: string
}
}
}

export function useRegenerateOrgUploadToken(
{ onSuccess = (data: RegenerateOrgUploadTokenOutput) => {} } = {
{ onSuccess = (data: z.infer<typeof RequestSchema>) => {} } = {
onSuccess: () => {},
}
) {
Expand Down Expand Up @@ -46,7 +63,16 @@ export function useRegenerateOrgUploadToken(
mutationPath: 'regenerateOrgUploadToken',
})

return data
const parsedRes = RequestSchema.safeParse(data.data)
if (!parsedRes.success) {
return Promise.reject({
status: 404,
data: {},
dev: 'useRegenerateOrgUploadToken - 404 schema parsing failed',
} satisfies NetworkErrorObject)
}

return parsedRes
},
useErrorBoundary: true,
onSuccess: ({ data }) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@ export function usePrefetchBranchFileEntry({
branch,
path,
flags = [],
options = {},
}: {
branch: string
path: string
flags?: string[]
options?: Record<string, unknown>
}) {
const { provider, owner, repo } = useParams<URLParams>()
const queryClient = useQueryClient()
Expand Down
25 changes: 18 additions & 7 deletions src/services/user/useOwner.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import { useQuery } from '@tanstack/react-query'
import { useParams } from 'react-router-dom'
import { z } from 'zod'

import Api from 'shared/api'
import { NetworkErrorObject } from 'shared/api/helpers'

interface URLParams {
provider: string
}

export interface DetailOwnerSchema {
ownerid?: string
username?: string
avatarUrl?: string
isCurrentUserPartOfOrg?: boolean
isAdmin?: boolean
}
export const DetailOwnerSchema = z.object({
ownerid: z.string().nullish(),
username: z.string().nullish(),
avatarUrl: z.string().nullish(),
isCurrentUserPartOfOrg: z.boolean().nullish(),
isAdmin: z.boolean().nullish(),
})

export function useOwner({
username,
Expand Down Expand Up @@ -45,6 +47,15 @@ export function useOwner({
queryKey: ['owner', variables, provider, query],
queryFn: ({ signal }) =>
Api.graphql({ provider, query, variables, signal }).then((res) => {
const parsedData = DetailOwnerSchema.safeParse(res)
if (!parsedData.success) {
return Promise.reject({
status: 404,
data: {},
dev: 'useOwner - 404 failed to parse',
} satisfies NetworkErrorObject)
}

return res?.data?.owner
}),
...opts,
Expand Down

0 comments on commit fc0d687

Please sign in to comment.