Skip to content

Commit ab1389b

Browse files
authored
fix: Resolve Sentry issue fetching in MissingDesignatedAdmins Without a Provider (#3612)
1 parent 0e34c4d commit ab1389b

File tree

2 files changed

+24
-43
lines changed

2 files changed

+24
-43
lines changed

src/shared/GlobalBanners/MissingDesignatedAdmins/MissingDesignatedAdmins.test.jsx

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { QueryClient, QueryClientProvider } from '@tanstack/react-query'
21
import {
32
QueryClientProvider as QueryClientProviderV5,
43
QueryClient as QueryClientV5,
@@ -19,9 +18,6 @@ const mockApiSelfHostedSetUpCorrectly = { config: { hasAdmins: true } }
1918
const mockApiSelfHostedSetUpIncorrectly = { config: { hasAdmins: false } }
2019
const mockApiCloud = { config: undefined }
2120

22-
const queryClient = new QueryClient({
23-
defaultOptions: { queries: { retry: false } },
24-
})
2521
const queryClientV5 = new QueryClientV5({
2622
defaultOptions: { queries: { retry: false } },
2723
})
@@ -30,13 +26,11 @@ const wrapper =
3026
(initialEntries = ['/gh/test-org/test-repo/pull/12']) =>
3127
({ children }) => (
3228
<QueryClientProviderV5 client={queryClientV5}>
33-
<QueryClientProvider client={queryClient}>
34-
<MemoryRouter initialEntries={initialEntries}>
35-
<Route path="/:provider/:owner/:repo/pull/:pullId">
36-
<Suspense fallback={<div>Loading</div>}>{children}</Suspense>
37-
</Route>
38-
</MemoryRouter>
39-
</QueryClientProvider>
29+
<MemoryRouter initialEntries={initialEntries}>
30+
<Route path="/:provider/:owner/:repo/pull/:pullId">
31+
<Suspense fallback={<div>Loading</div>}>{children}</Suspense>
32+
</Route>
33+
</MemoryRouter>
4034
</QueryClientProviderV5>
4135
)
4236

@@ -46,7 +40,6 @@ beforeAll(() => {
4640
})
4741

4842
afterEach(() => {
49-
queryClient.clear()
5043
queryClientV5.clear()
5144
server.resetHandlers()
5245
})

src/shared/GlobalBanners/MissingDesignatedAdmins/MissingDesignatedAdmins.tsx

Lines changed: 19 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,44 +8,18 @@ import { Provider } from 'shared/api/helpers'
88
import A from 'ui/A'
99
import Banner from 'ui/Banner'
1010

11-
interface Props {
11+
interface MissingDesignatedAdminsProps {
1212
provider: Provider
13-
hasAdmins?: boolean | null
14-
isFetching?: boolean
15-
isSelfHosted?: boolean
1613
}
1714

18-
const useHideBanner = ({
15+
const MissingDesignatedAdmins: React.FC<MissingDesignatedAdminsProps> = ({
1916
provider,
20-
hasAdmins,
21-
isFetching,
22-
isSelfHosted,
23-
}: Props) => {
24-
if (!isSelfHosted || !provider || hasAdmins || isFetching) {
25-
return true
26-
}
27-
28-
return false
29-
}
30-
31-
interface URLParams {
32-
provider: Provider
33-
}
34-
35-
const MissingDesignatedAdmins = () => {
36-
const { provider } = useParams<URLParams>()
17+
}) => {
3718
const { data: hasAdmins, isFetching } = useSuspenseQueryV5(
3819
SelfHostedHasAdminsQueryOpts({ provider })
3920
)
40-
// This hook is purely side stepping the complexity rule here.
41-
const hideBanner = useHideBanner({
42-
provider,
43-
hasAdmins,
44-
isFetching,
45-
isSelfHosted: !!config.IS_SELF_HOSTED,
46-
})
4721

48-
if (hideBanner) {
22+
if (!config.IS_SELF_HOSTED || hasAdmins || isFetching) {
4923
return null
5024
}
5125

@@ -70,4 +44,18 @@ const MissingDesignatedAdmins = () => {
7044
)
7145
}
7246

73-
export default MissingDesignatedAdmins
47+
interface URLParams {
48+
provider?: Provider
49+
}
50+
51+
const MissingDesignatedAdminsWrapper = () => {
52+
const { provider } = useParams<URLParams>()
53+
54+
if (provider) {
55+
return <MissingDesignatedAdmins provider={provider} />
56+
}
57+
58+
return null
59+
}
60+
61+
export default MissingDesignatedAdminsWrapper

0 commit comments

Comments
 (0)