index.js

import React from 'react';
import BUILD_UTILS_CONSTANTS from 'build-utils-react/config/constants';
import 'react-app-polyfill/ie9';
import 'react-app-polyfill/stable';

import { createOlafApplication } from 'olaf';

import { Route, Routes, Navigate } from 'react-router-dom';

import App from './containers/App';
import commonReducer from './reducers/common';

import adminReducer from './reducers/admin';
import authSaga from './sagas/auth';
import adminSaga from './sagas/admin';
import rolesSaga from './sagas/roles';
import couponsSaga from './sagas/coupons';
import couponReducer from './reducers/coupons';
import roundsReducer from './reducers/rounds';
import roundsSaga from './sagas/rounds';
import reportsSaga from './sagas/reports';
import exporterSaga from './sagas/exporter';

import reportsReducer from './reducers/reports';
import bonusReducer from './reducers/bonus';
import bonusSaga from './sagas/bonus';
import settingsReducer from './reducers/settings';
import settingsSaga from './sagas/settings';
import cashiersSaga from './sagas/cashier';
import cashiersReducer from './reducers/cashier';
import jackpotSaga from './sagas/jackpot';
import jackpotReducer from './reducers/jackpot';
import exporterReducer from './reducers/exporter';

import commonSaga from './sagas/common';
import inValidateOddsSaga from './sagas/invalidateOdds';
import invalidateOddsReducer from './reducers/invalidateOdds';
import { PAGES } from './constants';
import Login from './containers/Login';
import Main from './containers/Main';
import Menu from './containers/Menu';

if (process.env.BUNDLE_SKIN === BUILD_UTILS_CONSTANTS.SKINS.MAMABET) {
  const bodyElement = document.querySelector('body');
  bodyElement.classList.add('orange-theme');
}

/**
 *
 * @external 'node_modules/olaf'
 * @see {@link https://gitlab.com/providus.mu/fe-utils/olaf}
 *
 */
/**
 * Olaf function to create usable aplications with passed routes, reducers, sagas and so on
 *
 * @function createOlafApplication
 * @returns {Application}
 */
createOlafApplication({
  name: 'stadium-backoffice',
  immutable: true,
  hash: false,
  getRootDomElement: () => document.body.children[0],
  rootReactComponent: (
    <Routes>
      <Route path="/" element={<App />}>
        <Route path={PAGES.LOGIN} element={<Login />} />
        <Route path={`${PAGES.MAIN}/*`} element={<Main />} />
        <Route path={PAGES.HOME} element={<Menu />} />
        <Route path="*" element={<Navigate to="/" />} />
      </Route>
    </Routes>
  ),
  routes: [
    {
      path: '/',
      exact: false,
      component: App,
    },
  ],
  reducers: {
    common: commonReducer,
    admin: adminReducer,
    coupons: couponReducer,
    rounds: roundsReducer,
    reports: reportsReducer,
    bonus: bonusReducer,
    settings: settingsReducer,
    cashier: cashiersReducer,
    jackpot: jackpotReducer,
    invalidateOdds: invalidateOddsReducer,
    exporter: exporterReducer,
  },
  sagas: {
    common: commonSaga,
    auth: authSaga,
    user: adminSaga,
    users: rolesSaga,
    coupons: couponsSaga,
    rounds: roundsSaga,
    reports: reportsSaga,
    bonus: bonusSaga,
    settings: settingsSaga,
    cashier: cashiersSaga,
    jackpot: jackpotSaga,
    invalidateOdds: inValidateOddsSaga,
    exporter: exporterSaga,
  },
});