forked from osbuild/image-builder-frontend
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAppCockpit.tsx
More file actions
60 lines (51 loc) · 1.6 KB
/
AppCockpit.tsx
File metadata and controls
60 lines (51 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import '@patternfly/react-core/dist/styles/base.css';
import '@patternfly/patternfly/patternfly-addons.css';
import React from 'react';
import 'cockpit-dark-theme';
import { Page, PageSection } from '@patternfly/react-core';
import NotificationsProvider from '@redhat-cloud-services/frontend-components-notifications/NotificationsProvider';
import { createRoot } from 'react-dom/client';
import { Provider } from 'react-redux';
import { HashRouter } from 'react-router-dom';
import './AppCockpit.scss';
import { NotReady, RequireAdmin } from './Components/Cockpit';
import { Router } from './Router';
import { onPremStore as store } from './store';
import { useGetComposerSocketStatus } from './Utilities/useComposerStatus';
import { useIsCockpitAdmin } from './Utilities/useIsCockpitAdmin';
const Application = () => {
const { enabled, started } = useGetComposerSocketStatus();
const isAdmin = useIsCockpitAdmin();
if (!started || !enabled) {
return <NotReady enabled={enabled} />;
}
if (!isAdmin) {
return <RequireAdmin />;
}
return (
<React.Fragment>
<NotificationsProvider>
<HashRouter>
<Router />
</HashRouter>
</NotificationsProvider>
</React.Fragment>
);
};
const ImageBuilder = () => (
<Provider store={store}>
<Page className='no-masthead-sidebar' isContentFilled>
<PageSection>
<Application />
</PageSection>
</Page>
</Provider>
);
const main = async () => {
const root = document.getElementById('main');
if (root) {
const reactRoot = createRoot(root);
reactRoot.render(<ImageBuilder />);
}
};
main();