index.tsx 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. import React from 'react';
  2. import {BrowserProtocol, queryMiddleware} from 'farce';
  3. import {createFarceRouter, createRender, Route, makeRouteConfig} from 'found';
  4. import {Resolver} from 'found-relay';
  5. import {graphql} from 'react-relay';
  6. import {hot} from 'react-hot-loader/root';
  7. import ApplicationLayout from './components/layout/ApplicationLayout';
  8. import graphqlEnvironment from './graphqlEnvironment';
  9. import NotFound from './components/pages/NotFound';
  10. import TestComponent from './components/TestComponent';
  11. import PokemonIndex from './components/pages/pokemon/Index';
  12. import PokemonCreate from './components/pages/pokemon/Create';
  13. import Signup from './components/pages/Signup';
  14. import Login from './components/pages/Login';
  15. import Logout from './components/pages/Logout';
  16. import {UserProvider} from './context/User';
  17. function App(): React.ReactElement {
  18. const routeConfig = makeRouteConfig(
  19. <Route Component={ApplicationLayout} path='/'>
  20. <Route Component={TestComponent} />
  21. <Route
  22. Component={PokemonIndex}
  23. path='pokemon'
  24. query={graphql`
  25. query src_PokemonIndex_Query {
  26. pokemonConnection {
  27. edges {
  28. node {
  29. id
  30. ...Show_pokemon
  31. }
  32. }
  33. }
  34. }
  35. `}
  36. />
  37. <Route Component={PokemonCreate} path='pokemon/create' />
  38. <Route Component={Logout} path='logout' />
  39. <Route Component={Login} path='login' />
  40. <Route Component={Signup} path='signup' />
  41. <Route Component={NotFound} path='*' />
  42. </Route>
  43. );
  44. const Router = createFarceRouter({
  45. historyProtocol: new BrowserProtocol(),
  46. historyMiddlewares: [queryMiddleware],
  47. routeConfig,
  48. render: createRender({}),
  49. });
  50. return (
  51. <UserProvider>
  52. <Router resolver={new Resolver(graphqlEnvironment)} />
  53. </UserProvider>
  54. );
  55. }
  56. export default hot(App);