Skip to content

Commit bca27c4

Browse files
reFetchConfig after initialization change
1 parent 748203a commit bca27c4

4 files changed

Lines changed: 38 additions & 16 deletions

File tree

src/app/clientApp/Devices/List/DevicesListPage/Tabs/Tab2.tsx

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const Tab2: FC<Props> = (props) => {
3939
const { clientData, initializedByAnother, setLoading } = props
4040
const { formatMessage: _ } = useIntl()
4141
const isMounted = useIsMounted()
42-
const { isHub, updateRemoteClient, updateAppWellKnownConfig, setInitialize } = useContext(AppContext)
42+
const { isHub, updateRemoteClient, updateAppWellKnownConfig, reFetchConfig } = useContext(AppContext)
4343
const dispatch = useDispatch()
4444
const wellKnownConfig = security.getWellKnowConfig()
4545
const appStore = useSelector((state: any) => state.app)
@@ -340,7 +340,14 @@ const Tab2: FC<Props> = (props) => {
340340
onFinish(dataForSave)
341341
} else {
342342
resetApp()
343-
.then(() => isFunction(setInitialize) && setInitialize(false))
343+
.then(() => {
344+
if (isFunction(reFetchConfig)) {
345+
reFetchConfig()
346+
.then(() => {})
347+
.catch(() => console.log('error'))
348+
.finally(() => onFinish(dataForSave))
349+
}
350+
})
344351
.catch(() => console.log('error'))
345352
.finally(() => {
346353
onFinish(dataForSave)

src/app/clientApp/Devices/hooks.ts

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { useContext, useEffect, useMemo, useState } from 'react'
22
import debounce from 'lodash/debounce'
33
import { useSelector } from 'react-redux'
4+
import isFunction from 'lodash/isFunction'
45

56
import { useStreamApi, useEmitter, WellKnownConfigType, useIsMounted, getData } from '../../../common/hooks'
67
import { getDevicesDiscoveryTimeout } from './slice'
@@ -9,10 +10,9 @@ import { getOnboardingEndpoint, getResourceRegistrationNotificationKey, hasOnboa
910
import { ResourcesType, StreamApiPropsType } from './Devices.types'
1011
import AppContext from '../../share/AppContext'
1112
import { getHttpGatewayAddress } from '../utils'
12-
import { streamApi } from '../../../common/services'
13+
import { security, streamApi } from '../../../common/services'
1314
import { DEVICE_AUTH_MODE } from '../constants'
1415
import { getJwksData, getOpenIdConfiguration, initializedByPreShared, initializeFinal, initializeJwksData, reset, signIdentityCsr } from '../App/AppRest'
15-
import isFunction from 'lodash/isFunction'
1616

1717
export type UseApiReturnType = {
1818
data: any
@@ -249,14 +249,14 @@ type ClientDataType = {
249249
}
250250

251251
export function useAppInitialization(settings: {
252-
wellKnownConfig: WellKnownConfigType
253-
loading?: boolean
254252
clientData?: ClientDataType
253+
loading?: boolean
255254
onError?: (e: string) => void
255+
reFetchConfig?: any
256256
reInitialize?: boolean
257-
changeInitialize?: (initializeState: boolean) => void
257+
wellKnownConfig: WellKnownConfigType
258258
}) {
259-
const { wellKnownConfig, loading, clientData, onError, reInitialize, changeInitialize } = settings
259+
const { wellKnownConfig, loading, clientData, onError, reInitialize, reFetchConfig } = settings
260260
const [initializationLoading, setInitializationLoading] = useState(false)
261261
const [reInitializeLoading, setReInitializeLoading] = useState(false)
262262
const [reInitializeError, setReInitializeError] = useState(false)
@@ -267,19 +267,24 @@ export function useAppInitialization(settings: {
267267
setReInitializeLoading(true)
268268
reset()
269269
.then(() => {
270-
isFunction(changeInitialize) && changeInitialize(false)
270+
if (isFunction(reFetchConfig)) {
271+
reFetchConfig()
272+
.then(() => {})
273+
.catch((e: any) => isFunction(onError) && onError(e as string))
274+
.finally(() => setInitializationLoading(false))
275+
}
271276
})
272277
.catch(() => {
273278
setReInitializeError(true)
274279
})
275280
.finally(() => setReInitializeLoading(false))
276281
}
277-
}, [changeInitialize, reInitialize, reInitializeError, reInitializeLoading, wellKnownConfig.isInitialized])
282+
}, [reInitialize, reInitializeError, reInitializeLoading, wellKnownConfig.isInitialized, reFetchConfig, onError])
278283

279284
// initialize
280285
useEffect(() => {
281286
if (wellKnownConfig && !wellKnownConfig.isInitialized && clientData && !initializationLoading && !loading) {
282-
if (clientData?.deviceAuthenticationMode === DEVICE_AUTH_MODE.X509) {
287+
if (clientData?.deviceAuthenticationMode === DEVICE_AUTH_MODE.X509 && security.getAccessToken()) {
283288
try {
284289
setInitializationLoading(true)
285290
getOpenIdConfiguration(wellKnownConfig.remoteProvisioning?.authority!).then((result) => {
@@ -292,8 +297,12 @@ export function useAppInitialization(settings: {
292297
identityCertificateChallenge.certificateSigningRequest
293298
).then((result) => {
294299
initializeFinal(identityCertificateChallenge.state, result.data.certificate).then(() => {
295-
setInitializationLoading(false)
296-
isFunction(changeInitialize) && changeInitialize(true)
300+
if (isFunction(reFetchConfig)) {
301+
reFetchConfig()
302+
.then(() => {})
303+
.catch((e: any) => isFunction(onError) && onError(e as string))
304+
.finally(() => setInitializationLoading(false))
305+
}
297306
})
298307
})
299308
})
@@ -310,8 +319,12 @@ export function useAppInitialization(settings: {
310319
setInitializationLoading(true)
311320
initializedByPreShared(clientData?.preSharedSubjectId, clientData?.preSharedKey).then((r) => {
312321
if (r.status === 200) {
313-
setInitializationLoading(false)
314-
isFunction(changeInitialize) && changeInitialize(true)
322+
if (isFunction(reFetchConfig)) {
323+
reFetchConfig()
324+
.then(() => {})
325+
.catch((e: any) => isFunction(onError) && onError(e as string))
326+
.finally(() => setInitializationLoading(false))
327+
}
315328
}
316329
})
317330
} catch (e) {

src/app/share/AppContext.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export type AppContextType = {
77
footerExpanded?: boolean
88
iframeMode?: boolean
99
isHub: boolean
10+
reFetchConfig?: any
1011
setCollapsed?: (collapsed: boolean) => void
1112
setFooterExpanded?: (expand: boolean) => void
1213
setInitialize?: (initialize: boolean) => void

src/common/hooks/useWellKnownConfiguration.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { useEffect, useState } from 'react'
2-
import { fetchApi } from '../services'
32
import isFunction from 'lodash/isFunction'
43
import mergeWith from 'lodash/mergeWith'
54
import cloneDeep from 'lodash/cloneDeep'
65

6+
import { fetchApi } from '../services'
7+
78
export type BuildInformationType = {
89
buildDate: string
910
commitDate: string

0 commit comments

Comments
 (0)