Skip to content

Commit 94a8f22

Browse files
authored
feat: Add rejectNetworkError to calls (part five) (#3771)
1 parent bc3d5dd commit 94a8f22

File tree

8 files changed

+43
-58
lines changed

8 files changed

+43
-58
lines changed

src/services/user/useMyContexts.test.tsx

Lines changed: 9 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,7 @@ describe('useMyContexts', () => {
5656
},
5757
myOrganizations: {
5858
edges: [{ node: orgList }],
59-
pageInfo: {
60-
hasNextPage,
61-
endCursor,
62-
},
59+
pageInfo: { hasNextPage, endCursor },
6360
},
6461
},
6562
}
@@ -83,15 +80,9 @@ describe('useMyContexts', () => {
8380
defaultOrgUsername: null,
8481
},
8582
myOrganizations: [
86-
{
87-
avatarUrl: 'http://127.0.0.1/avatar-url',
88-
username: 'org1',
89-
},
83+
{ avatarUrl: 'http://127.0.0.1/avatar-url', username: 'org1' },
9084
],
91-
pageInfo: {
92-
endCursor: 'first',
93-
hasNextPage: true,
94-
},
85+
pageInfo: { endCursor: 'first', hasNextPage: true },
9586
}
9687

9788
await waitFor(() =>
@@ -111,7 +102,7 @@ describe('useMyContexts', () => {
111102
consoleSpy.mockRestore()
112103
})
113104

114-
it('throws 404 failed to parse', async () => {
105+
it('throws 400 failed to parse', async () => {
115106
console.error = () => {}
116107
setup({ badResponse: true })
117108
const { result } = renderHook(() => useMyContexts({ provider: 'gh' }), {
@@ -121,8 +112,8 @@ describe('useMyContexts', () => {
121112
await waitFor(() =>
122113
expect(result.current.failureReason).toEqual(
123114
expect.objectContaining({
124-
dev: 'useMyContexts - 404 Failed to parse data',
125-
status: 404,
115+
dev: 'useMyContexts - Parsing Error',
116+
status: 400,
126117
})
127118
)
128119
)
@@ -152,19 +143,10 @@ describe('useMyContexts', () => {
152143
defaultOrgUsername: null,
153144
},
154145
myOrganizations: [
155-
{
156-
avatarUrl: 'http://127.0.0.1/avatar-url',
157-
username: 'org1',
158-
},
159-
{
160-
avatarUrl: 'http://127.0.0.1/avatar-url',
161-
username: 'org2',
162-
},
146+
{ avatarUrl: 'http://127.0.0.1/avatar-url', username: 'org1' },
147+
{ avatarUrl: 'http://127.0.0.1/avatar-url', username: 'org2' },
163148
],
164-
pageInfo: {
165-
endCursor: 'second',
166-
hasNextPage: false,
167-
},
149+
pageInfo: { endCursor: 'second', hasNextPage: false },
168150
}
169151

170152
await waitFor(() =>

src/services/user/useMyContexts.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { useMemo } from 'react'
66
import { z } from 'zod'
77

88
import Api from 'shared/api'
9-
import { NetworkErrorObject } from 'shared/api/helpers'
9+
import { rejectNetworkError } from 'shared/api/rejectNetworkError'
1010
import { mapEdges } from 'shared/utils/graphql'
1111

1212
const MyContextsSchema = z.object({
@@ -76,14 +76,14 @@ export function useMyContexts({ provider, opts = {} }: UseMyContextsArgs) {
7676
signal,
7777
variables: { after: pageParam },
7878
}).then((res) => {
79+
const callingFn = 'useMyContexts'
7980
const parsedRes = MyContextsSchema.safeParse(res?.data)
8081

8182
if (!parsedRes.success) {
82-
return Promise.reject({
83-
status: 404,
84-
data: {},
85-
dev: 'useMyContexts - 404 Failed to parse data',
86-
} satisfies NetworkErrorObject)
83+
return rejectNetworkError({
84+
errorName: 'Parsing Error',
85+
errorDetails: { callingFn, error: parsedRes.error },
86+
})
8787
}
8888

8989
return parsedRes?.data

src/services/user/useOwnerRateLimitStatus.test.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ describe('useOwnerRateLimitStatus', () => {
7878
consoleSpy.mockRestore()
7979
})
8080

81-
it('throws a 404', async () => {
81+
it('throws a 400', async () => {
8282
setup({ isUnsuccessfulParseError: true })
8383
const { result } = renderHook(
8484
() => useOwnerRateLimitStatus({ provider: 'gh' }),
@@ -88,7 +88,8 @@ describe('useOwnerRateLimitStatus', () => {
8888
await waitFor(() =>
8989
expect(result.current.error).toEqual(
9090
expect.objectContaining({
91-
status: 404,
91+
dev: 'useOwnerRateLimitStatus - Parsing Error',
92+
status: 400,
9293
})
9394
)
9495
)

src/services/user/useOwnerRateLimitStatus.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { useQuery } from '@tanstack/react-query'
22
import { z } from 'zod'
33

44
import Api from 'shared/api'
5-
import { NetworkErrorObject } from 'shared/api/helpers'
5+
import { rejectNetworkError } from 'shared/api/rejectNetworkError'
66

77
export const RequestSchema = z
88
.object({
@@ -41,13 +41,14 @@ export function useOwnerRateLimitStatus({
4141
signal,
4242
query,
4343
}).then((res) => {
44+
const callingFn = 'useOwnerRateLimitStatus'
4445
const parsedData = RequestSchema.safeParse(res?.data)
46+
4547
if (!parsedData.success) {
46-
return Promise.reject({
47-
status: 404,
48-
data: {},
49-
dev: 'useOwnerRateLimitStatus - 404 NotFoundError',
50-
} satisfies NetworkErrorObject)
48+
return rejectNetworkError({
49+
errorName: 'Parsing Error',
50+
errorDetails: { callingFn, error: parsedData.error },
51+
})
5152
}
5253

5354
const data = parsedData.data

src/services/user/useUser.test.tsx

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ describe('useUser', () => {
134134
consoleSpy.mockRestore()
135135
})
136136

137-
it('returns 404 failed to parse', async () => {
137+
it('returns 400 failed to parse', async () => {
138138
setup(badResponse)
139139
const { result } = renderHook(() => useUser(), {
140140
wrapper: wrapper(),
@@ -144,9 +144,8 @@ describe('useUser', () => {
144144
await waitFor(() =>
145145
expect(result.current.failureReason).toEqual(
146146
expect.objectContaining({
147-
data: {},
148-
dev: 'useUser - 404 failed to parse',
149-
status: 404,
147+
dev: 'useUser - Parsing Error',
148+
status: 400,
150149
})
151150
)
152151
)

src/services/user/useUser.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ import { z } from 'zod'
44

55
import { eventTracker } from 'services/events/events'
66
import Api from 'shared/api'
7-
import { NetworkErrorObject, Provider } from 'shared/api/helpers'
7+
import { Provider } from 'shared/api/helpers'
8+
import { rejectNetworkError } from 'shared/api/rejectNetworkError'
89

910
export const TypeProjectsSchema = z.array(
1011
z.union([
@@ -146,14 +147,14 @@ export function useUser({ options }: UseUserArgs = {}) {
146147
queryKey: ['currentUser', provider, query],
147148
queryFn: ({ signal }) =>
148149
Api.graphql({ provider, query, signal }).then((res) => {
150+
const callingFn = 'useUser'
149151
const parsedRes = UserSchema.safeParse(res?.data)
150152

151153
if (!parsedRes.success) {
152-
return Promise.reject({
153-
status: 404,
154-
data: {},
155-
dev: 'useUser - 404 failed to parse',
156-
} satisfies NetworkErrorObject)
154+
return rejectNetworkError({
155+
errorName: 'Parsing Error',
156+
errorDetails: { callingFn, error: parsedRes.error },
157+
})
157158
}
158159

159160
if (parsedRes.data.me?.trackingMetadata.ownerid) {

src/services/users/useInfiniteUser.test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,8 @@ describe('useInfiniteUser', () => {
186186
await waitFor(() =>
187187
expect(result.current.error).toEqual(
188188
expect.objectContaining({
189-
status: 404,
189+
dev: 'useInfiniteUsers - Parsing Error',
190+
status: 400,
190191
})
191192
)
192193
)

src/services/users/useInfiniteUser.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { useMemo } from 'react'
33
import { z } from 'zod'
44

55
import Api from 'shared/api'
6-
import { NetworkErrorObject } from 'shared/api/helpers'
6+
import { rejectNetworkError } from 'shared/api/rejectNetworkError'
77

88
export const MemberSchema = z.object({
99
activated: z.boolean(),
@@ -60,14 +60,14 @@ export const useInfiniteUsers = (
6060
page: pageParam,
6161
},
6262
}).then((res) => {
63+
const callingFn = 'useInfiniteUsers'
6364
const parsedRes = MemberListSchema.safeParse(res)
6465

6566
if (!parsedRes.success) {
66-
return Promise.reject({
67-
status: 404,
68-
data: {},
69-
dev: 'useInfiniteUser - 404 failed to parse',
70-
} satisfies NetworkErrorObject)
67+
return rejectNetworkError({
68+
errorName: 'Parsing Error',
69+
errorDetails: { callingFn, error: parsedRes.error },
70+
})
7171
}
7272

7373
return parsedRes.data

0 commit comments

Comments
 (0)