import axios from 'axios'; import React from 'react'; import ReactDOM from 'react-dom'; import { HashRouter, Redirect, Route, Switch, } from 'react-router-dom'; import { I18n, I18nProvider, } from '@lingui/react'; import { t } from '@lingui/macro'; import '@patternfly/patternfly/patternfly.css'; import './app.scss'; import './components/Pagination/styles.scss'; import './components/DataListToolbar/styles.scss'; import './components/SelectedList/styles.scss'; import APIClient from './api'; import App from './App'; import Background from './components/Background'; import Applications from './pages/Applications'; import Credentials from './pages/Credentials'; import CredentialTypes from './pages/CredentialTypes'; import Dashboard from './pages/Dashboard'; import InstanceGroups from './pages/InstanceGroups'; import Inventories from './pages/Inventories'; import InventoryScripts from './pages/InventoryScripts'; import Jobs from './pages/Jobs'; import Login from './pages/Login'; import ManagementJobs from './pages/ManagementJobs'; import NotificationTemplates from './pages/NotificationTemplates'; import Organizations from './pages/Organizations/Organizations'; import Portal from './pages/Portal'; import Projects from './pages/Projects'; import Schedules from './pages/Schedules'; import AuthSettings from './pages/AuthSettings'; import JobsSettings from './pages/JobsSettings'; import SystemSettings from './pages/SystemSettings'; import UISettings from './pages/UISettings'; import License from './pages/License'; import Teams from './pages/Teams'; import Templates from './pages/Templates'; import Users from './pages/Users'; import ja from '../build/locales/ja/messages'; import en from '../build/locales/en/messages'; // // Initialize http // const http = axios.create({ xsrfCookieName: 'csrftoken', xsrfHeaderName: 'X-CSRFToken' }); // // Derive the language and region from global user agent data. Example: es-US // see: https://developer.mozilla.org/en-US/docs/Web/API/Navigator // export function getLanguage (nav) { const language = (nav.languages && nav.languages[0]) || nav.language || nav.userLanguage; const languageWithoutRegionCode = language.toLowerCase().split(/[_-]+/)[0]; return languageWithoutRegionCode; } // // Function Main // export async function main (render, api) { const catalogs = { en, ja }; const language = getLanguage(navigator); const el = document.getElementById('app'); const { data: { custom_logo, custom_login_info } } = await api.getRoot(); const defaultRedirect = () => (); const loginRoutes = ( ( )} /> ); return render( {({ i18n }) => ( {!api.isAuthenticated() ? loginRoutes : ( ( ( routeGroups .reduce((allRoutes, { routes }) => allRoutes.concat(routes), []) .map(({ component: PageComponent, path }) => ( ( )} /> )) )} /> )} /> )} )} , el ); } main(ReactDOM.render, new APIClient(http));