refactor(GlobalStateStore): 🔄 remove unused ProgramDataWrapper component
This commit is contained in:
@@ -1,117 +0,0 @@
|
|||||||
import React, { useEffect } from 'react'
|
|
||||||
import { setDefaultAPIOption } from '@bitechdev/utils'
|
|
||||||
import axios from 'axios'
|
|
||||||
import { Center, Notification } from '@mantine/core'
|
|
||||||
import { programDataStore, useProgramDataStore } from './store/ProgramDataStore.store'
|
|
||||||
import { ProgramDataStoreState, ProgramWrapperProps, SessionDetail } from './types'
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches program data and updates session details.
|
|
||||||
*
|
|
||||||
* @param {ProgramWrapperProps} props - Props for the ProgramDataWrapper component
|
|
||||||
* @return {ReactNode} The children of the component
|
|
||||||
*/
|
|
||||||
const ProgramDataWrapper = (props: ProgramWrapperProps) => {
|
|
||||||
const { fetchData, updateSession, connected, session, setState } = useProgramDataStore(
|
|
||||||
(state: ProgramDataStoreState) => ({
|
|
||||||
fetchData: state.fetchData,
|
|
||||||
updateSession: state.updateSession,
|
|
||||||
connected: state.connected,
|
|
||||||
session: state.session,
|
|
||||||
setState: state.setState,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (props.version) {
|
|
||||||
const program = programDataStore.getState()?.program
|
|
||||||
if (program) {
|
|
||||||
setState('program', { ...program, version: props.version })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, [props.version])
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (session?.apiURL && session?.apiURL !== '') {
|
|
||||||
fetchData(props.apiURL)
|
|
||||||
.catch((e) => {
|
|
||||||
console.error('Error fetching data:', e)
|
|
||||||
})
|
|
||||||
.finally(() => {
|
|
||||||
//Set the default API options
|
|
||||||
setDefaultAPIOption({
|
|
||||||
getAPIProvider: () => {
|
|
||||||
const s = programDataStore.getState()
|
|
||||||
if (s.session?.authtoken && s.session?.authtoken !== '') {
|
|
||||||
return { provider: undefined, providerKey: undefined }
|
|
||||||
}
|
|
||||||
return {
|
|
||||||
provider: s.session?.provider,
|
|
||||||
providerKey: s.session?.providerKey,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getAuthToken: () => {
|
|
||||||
const s = programDataStore.getState()
|
|
||||||
return s.session?.authtoken
|
|
||||||
},
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}, [session?.apiURL, session?.authtoken])
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
try {
|
|
||||||
updateSession?.((state: SessionDetail) => ({
|
|
||||||
apiURL: state.apiURL !== props.apiURL || !state.apiURL ? props.apiURL : state.apiURL,
|
|
||||||
debugMode: props.debugMode ?? state.debugMode,
|
|
||||||
testMode: props.testMode ?? state.testMode,
|
|
||||||
authtoken:
|
|
||||||
props.testMode && (!state.authtoken || state.authtoken === '') ? 'test' : state.authtoken,
|
|
||||||
provider:
|
|
||||||
props.testMode && (!state.provider || state.provider === '') ? 'bitech' : state.provider,
|
|
||||||
providerKey:
|
|
||||||
props.testMode && (!state.providerKey || state.providerKey === '')
|
|
||||||
? 'test'
|
|
||||||
: state.providerKey,
|
|
||||||
}))
|
|
||||||
|
|
||||||
axios.defaults.headers.common = {
|
|
||||||
'X-Program-API': 'bitechcore',
|
|
||||||
Authorization: `Bearer ${session?.authtoken}`,
|
|
||||||
}
|
|
||||||
|
|
||||||
if (session?.provider !== '') {
|
|
||||||
axios.defaults.headers.common['x-api-provider'] = session?.provider
|
|
||||||
}
|
|
||||||
if (session?.providerKey !== '') {
|
|
||||||
axios.defaults.headers.common['x-api-key'] = session?.providerKey
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
console.error('Error in ProgramDataWrapper useEffect:', e)
|
|
||||||
}
|
|
||||||
}, [
|
|
||||||
session.authtoken,
|
|
||||||
session.provider,
|
|
||||||
session.providerKey,
|
|
||||||
props.apiURL,
|
|
||||||
props.debugMode,
|
|
||||||
props.testMode,
|
|
||||||
])
|
|
||||||
|
|
||||||
if (props.renderFallback && !connected) {
|
|
||||||
return (
|
|
||||||
props.fallback ?? (
|
|
||||||
<Center>
|
|
||||||
<Notification withCloseButton={false} color='red' title='Program URL not set'>
|
|
||||||
Please make sure your app was correctly installed. If this problem persists, reset your
|
|
||||||
page cache and go to the login page.
|
|
||||||
</Notification>
|
|
||||||
</Center>
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
return props.children
|
|
||||||
}
|
|
||||||
|
|
||||||
export { ProgramDataWrapper }
|
|
||||||
|
|||||||
Reference in New Issue
Block a user