Skip to content

Commit f42587f

Browse files
committed
fix(heureka): externalize React in greenhouse-auth-provider and use useAuth() directly
1 parent 481b3b5 commit f42587f

2 files changed

Lines changed: 7 additions & 24 deletions

File tree

  • apps/heureka/src

apps/heureka/src/App.tsx

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* SPDX-License-Identifier: Apache-2.0
44
*/
55

6-
import React, { createContext, StrictMode, useContext, useMemo } from "react"
6+
import React, { StrictMode, useMemo } from "react"
77
import { ApolloProvider } from "@apollo/client/react"
88
import { createRouter, RouterProvider, createHashHistory, createBrowserHistory } from "@tanstack/react-router"
99
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
@@ -16,16 +16,6 @@ import { routeTree } from "./routeTree.gen"
1616
import { StoreProvider } from "./store/StoreProvider"
1717
import { AuthProvider, EmbeddedAuth, type AuthState } from "@cloudoperators/greenhouse-auth-provider"
1818

19-
/**
20-
* Auth user ID for the current user when embedded and authenticated; null otherwise.
21-
* Derived from auth.getSnapshot() at App render time — intentionally NOT using useAuth()
22-
* because greenhouse-auth-provider bundles its own React, so calling useAuth() from within
23-
* the app's React tree hits a different React dispatcher and throws an invalid hook error.
24-
* The shell remounts this plugin on auth change, so getSnapshot() is always fresh at mount.
25-
*/
26-
export const AuthUserIdContext = createContext<string | null>(null)
27-
export const useAuthUserId = () => useContext(AuthUserIdContext)
28-
2919
export type InitialFilters = {
3020
support_group?: string[]
3121
}
@@ -74,12 +64,6 @@ const App = (props: AppProps) => {
7464

7565
const authForProvider = useMemo(() => toEmbeddedAuth(props.auth), [props.auth])
7666

77-
const authUserId = useMemo(() => {
78-
if (!props.embedded || !authForProvider) return null
79-
const state = authForProvider.getSnapshot()
80-
return state.status === "authenticated" ? state.userId : null
81-
}, [props.embedded, authForProvider])
82-
8367
const authProviderProps =
8468
props.embedded && authForProvider
8569
? ({ embedded: true as const, auth: authForProvider } as const)
@@ -130,11 +114,9 @@ const App = (props: AppProps) => {
130114
<ErrorBoundary>
131115
<StrictMode>
132116
<AuthProvider {...authProviderProps}>
133-
<AuthUserIdContext.Provider value={authUserId}>
134-
<StoreProvider>
135-
<RouterProvider basepath={props.basePath || "/"} router={router} />
136-
</StoreProvider>
137-
</AuthUserIdContext.Provider>
117+
<StoreProvider>
118+
<RouterProvider basepath={props.basePath || "/"} router={router} />
119+
</StoreProvider>
138120
</AuthProvider>
139121
</StrictMode>
140122
</ErrorBoundary>

apps/heureka/src/components/Service/ImageDetails/FalsePositiveModal/index.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import {
1515
Message,
1616
} from "@cloudoperators/juno-ui-components"
1717
import { RemediationInput, RemediationTypeValues, SeverityValues } from "../../../../generated/graphql"
18-
import { useAuthUserId } from "../../../../App"
18+
import { useAuth } from "@cloudoperators/greenhouse-auth-provider"
1919

2020
type FalsePositiveModalProps = {
2121
open: boolean
@@ -52,7 +52,8 @@ export const FalsePositiveModal: React.FC<FalsePositiveModalProps> = ({
5252
errorMessage,
5353
onSetError,
5454
}) => {
55-
const authUserId = useAuthUserId()
55+
const auth = useAuth()
56+
const authUserId = auth.status === "authenticated" ? auth.userId : null
5657
const [description, setDescription] = useState<string>("")
5758
const [manualUserId, setManualUserId] = useState<string>("")
5859
const [expirationDate, setExpirationDate] = useState<Date | null>(null)

0 commit comments

Comments
 (0)