feat: make automatisch info available

This commit is contained in:
Ali BARIN
2023-03-06 18:04:47 +00:00
parent 66be6d1e89
commit 26d8e5856a
5 changed files with 77 additions and 5 deletions

View File

@@ -0,0 +1,38 @@
import * as React from 'react';
import { useQuery } from '@apollo/client';
import { GET_AUTOMATISCH_INFO } from 'graphql/queries/get-automatisch-info';
export type AutomatischInfoContextParams = {
isCloud: boolean;
};
export const AutomatischInfoContext =
React.createContext<AutomatischInfoContextParams>({
isCloud: false,
});
type AutomatischInfoProviderProps = {
children: React.ReactNode;
};
export const AutomatischInfoProvider = (
props: AutomatischInfoProviderProps
): React.ReactElement => {
const { children } = props;
const { data } = useQuery(GET_AUTOMATISCH_INFO);
const isCloud = data?.getAutomatischInfo?.isCloud || false;
const value = React.useMemo(() => {
return {
isCloud,
};
}, [isCloud]);
return (
<AutomatischInfoContext.Provider value={value}>
{children}
</AutomatischInfoContext.Provider>
);
};

View File

@@ -0,0 +1,10 @@
import { gql } from '@apollo/client';
export const GET_AUTOMATISCH_INFO = gql`
query GetAutomatischInfo {
getAutomatischInfo {
isCloud
}
}
`;

View File

@@ -0,0 +1,14 @@
import * as React from 'react';
import { AutomatischInfoContext } from 'contexts/AutomatischInfo';
type UseAutomatischInfoReturn = {
isCloud: boolean;
};
export default function useAutomatischInfo(): UseAutomatischInfoReturn {
const automatischInfoContext = React.useContext(AutomatischInfoContext);
return {
isCloud: automatischInfoContext.isCloud,
};
}

View File

@@ -0,0 +1,7 @@
import useAutomatischInfo from './useAutomatischInfo';
export default function useCloud(): boolean {
const { isCloud } = useAutomatischInfo();
return isCloud;
}

View File

@@ -5,6 +5,7 @@ import IntlProvider from 'components/IntlProvider';
import ApolloProvider from 'components/ApolloProvider'; import ApolloProvider from 'components/ApolloProvider';
import SnackbarProvider from 'components/SnackbarProvider'; import SnackbarProvider from 'components/SnackbarProvider';
import { AuthenticationProvider } from 'contexts/Authentication'; import { AuthenticationProvider } from 'contexts/Authentication';
import { AutomatischInfoProvider } from 'contexts/AutomatischInfo';
import Router from 'components/Router'; import Router from 'components/Router';
import routes from 'routes'; import routes from 'routes';
import reportWebVitals from './reportWebVitals'; import reportWebVitals from './reportWebVitals';
@@ -13,11 +14,13 @@ ReactDOM.render(
<SnackbarProvider> <SnackbarProvider>
<AuthenticationProvider> <AuthenticationProvider>
<ApolloProvider> <ApolloProvider>
<IntlProvider> <AutomatischInfoProvider>
<ThemeProvider> <IntlProvider>
<Router>{routes}</Router> <ThemeProvider>
</ThemeProvider> <Router>{routes}</Router>
</IntlProvider> </ThemeProvider>
</IntlProvider>
</AutomatischInfoProvider>
</ApolloProvider> </ApolloProvider>
</AuthenticationProvider> </AuthenticationProvider>
</SnackbarProvider>, </SnackbarProvider>,