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