Your IP : 216.73.217.87


Current Path : /hdd/hdd11/www/vlevski/enter/src/
Upload File :
Current File : /hdd/hdd11/www/vlevski/enter/src/App.js

import React from 'react';
import { ApolloClient } from 'apollo-client';
import { ApolloProvider } from 'react-apollo';
import { InMemoryCache } from 'apollo-cache-inmemory';
import { setContext } from 'apollo-link-context';
import { HttpLink } from 'apollo-link-http';
import { onError } from 'apollo-link-error';
import { BrowserRouter as Router } from 'react-router-dom';
import { renderRoutes } from 'react-router-config';
import { logout } from './utils';
import routes from './routes';
import './index.scss';
import { library } from '@fortawesome/fontawesome-svg-core';
import 'react-notifications/lib/notifications.css'
import {
  faUser,
  faLock,
  faFolder,
  faFile,
  faFolderPlus,
  faFileUpload,
  faSignOutAlt,
  faChevronCircleLeft,
  faCloudUploadAlt,
  faTrashAlt,
  faWindowClose,
  faFileImage,
  faFileWord,
  faFilePdf,
  faFilePowerpoint,
  faFileExcel,
  faFileCode,
  faFileVideo,
  faFileArchive,
  faFileAudio,
  faFileAlt
} from '@fortawesome/free-solid-svg-icons';
library.add(
  faUser, 
  faLock, 
  faFolder, 
  faFile, 
  faFolderPlus, 
  faFileUpload, 
  faSignOutAlt, 
  faChevronCircleLeft,
  faCloudUploadAlt,
  faTrashAlt,
  faWindowClose,
  faFileImage,
  faFileWord,
  faFilePdf,
  faFilePowerpoint,
  faFileExcel,
  faFileCode,
  faFileVideo,
  faFileArchive,
  faFileAudio,
  faFileAlt
);

const httpLink = new HttpLink({ uri: process.env.REACT_APP_API + '/graphql' });

const authLink = setContext((_, { headers }) => {
  // get the authentication token from local storage if it exists
  const token = localStorage.getItem('jwt');
  // return the headers to the context so httpLink can read them
  return {
    headers: {
      ...headers,
      'X-Session-ID': token
    }
  };
});

const logoutLink = onError(({ networkError }) => {
  if (networkError.statusCode === 401) logout();
});

const cache = new InMemoryCache();

const client = new ApolloClient({
  link: authLink.concat(logoutLink.concat(httpLink)),
  cache
});

const App = () => (
  <ApolloProvider client={client}>
    <Router>{renderRoutes(routes)}</Router>
  </ApolloProvider>
);

export default App;